janus-cloudflare-turn-proxy

command module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 28, 2024 License: MIT Imports: 12 Imported by: 0

README

CI

Janus Cloudflare TURN Proxy

A proxy to transform the response of a Cloudflare TURN request into a format Janus understands.

The problem

Janus is a WebRTC gateway. It can dynamically connect to TURN servers by calling a REST endpoint. Janus expects a json response as defined in their Internet Draft:

{
    "username" : "12334939:mbzrxpgjys",
    "password" : "adfsaflsjfldssia",
    "ttl" : 86400,
    "uris" : [
        "turn:1.2.3.4:9991?transport=udp",
        "turn:1.2.3.4:9992?transport=tcp",
        "turns:1.2.3.4:443?transport=tcp"
    ]
}

Cloudflare, however, generates a json response similar to the following:

{
  "iceServers": {
    "urls": [
      "stun:stun.cloudflare.com:3478",
      "turn:turn.cloudflare.com:3478?transport=udp",
      "turn:turn.cloudflare.com:3478?transport=tcp",
      "turns:turn.cloudflare.com:5349?transport=tcp"
    ],
    "username": "username",
    "credential": "password"
  }
}

This project aims to fill the gap by acting as a proxy. Janus calls the proxy endpoint and receives the response from Cloudflare transformed as expected.

Usage

Recommended deployment strategy is to use the provided Docker image:

services:
  turn-proxy:
    image: ghcr.io/actcoding/janus-cloudflare-turn-proxy:latest
    environment:
      CF_TURN_KEY_ID: <CLOUDFLARE_TURN_SERVER_SECRET>

Replace <CLOUDFLARE_TURN_SERVER_SECRET> with the secret generated in the Cloudflare Dashboard. Detailed documentation can be found over there: https://developers.cloudflare.com/calls/turn/generate-credentials/

The proxy exposes an HTTP endpoint on port 1337 which Janus can be pointed to.

Configuration

The proxy is configured using environment variables. Below you can find an overview of all available options.

Environment Variable Default? Description
SERVER_ADDRESS 0.0.0.0 The address the server is listening on.
SERVER_PORT 1337 The port the server is listening on.
CF_TTL 86400 Credentials lifetime in seconds. Defaults to 24 hours.
CF_TURN_KEY_ID Required The Cloudflare TURN key id. Not to be confused with the secret mentioned earlier.

License

MIT

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL