Sign inSign up

calvinux/os-janus-gateway

By calvinux

•Updated 7 days ago

A containerized deployment of the Janus WebRTC Gateway for Opensim voice.

Image
Networking
0

140

calvinux/os-janus-gateway repository overview

⁠Janus WebRTC Gateway for OpenSimulator (OpenSim)

This repository provides a production-ready, Dockerized deployment of the Janus WebRTC Gateway, pre-configured for OpenSimulator (OpenSim) grids.

For full source files and custom configuration files (.jcfg), visit the GitHub repository: šŸ‘‰ GitHub - calvinux/os-janus-gateway⁠

⁠Why this image?

As proprietary services like Vivox reach end-of-life, OpenSim requires a self-hosted spatial voice solution. This image offers a reliable Janus-based alternative without third-party dependencies.

⁠Key Features

  • Vivox Alternative: Replaces legacy OpenSim voice integrations.
  • Host Networking Mode: Supports Docker host networking for UDP/RTP performance.
  • Customizable Overrides: Bind-mount your own .jcfg configuration files.
  • Light: Image built in two stages excluding unnecessary plugins ans lib on debian-slim

⁠Quick Start (Docker Compose)

⁠docker-compose.yml

version: "3.8"

services:
  os-janus-gateway:
    image: calvinux/os-janus-gateway:latest
    container_name: os-janus-gateway
    restart: unless-stopped
    network_mode: host
    volumes:
      - ./janus.jcfg:/opt/janus/etc/janus/janus.jcfg:ro
      - ./janus.transport.http.jcfg:/opt/janus/etc/janus/janus.transport.http.jcfg:ro
      - ./janus.transport.nanomsg.jcfg:/opt/janus/etc/janus/janus.transport.nanomsg.jcfg:ro
      - ./janus.transport.websockets.jcfg:/opt/janus/etc/janus/janus.transport.websockets.jcfg:ro

⁠janus.jcfg :

general: {
	configs_folder = "/opt/janus/etc/janus"
	plugins_folder = "/opt/janus/lib/janus/plugins"
	transports_folder = "/opt/janus/lib/janus/transports"
	events_folder = "/opt/janus/lib/janus/events"
	loggers_folder = "/opt/janus/lib/janus/loggers"
	debug_level = 7
	api_secret = "MyAPISecretKey"
	admin_secret = "MyAdminAPISecretKey"
	server_name = "GridVoice"
	session_timeout = 300
	protected_folders = [
		"/bin",
		"/boot",
		"/dev",
		"/etc",
		"/initrd",
		"/lib",
		"/lib32",
		"/lib64",
		"/proc",
		"/sbin",
		"/sys",
		"/usr",
		"/var",
		"/opt/janus/bin",
		"/opt/janus/etc",
		"/opt/janus/include",
		"/opt/janus/lib",
		"/opt/janus/lib32",
		"/opt/janus/lib64",
		"/opt/janus/sbin"
	]
}

certificates: {
}

media: {
	rtp_port_range = "10000-10200"
}

nat: {
	stun_server = "stun.l.google.com"
	stun_port = 19302
	nice_debug = false
	ice_ignore_list = "vmnet"
    nat_1_1_mapping = "123.123.123.123"
}

plugins: {
}

transports: {
}

loggers: {
}

events: {
}

⁠janus.transport.http.jcfg :

general: {
	json = "indented"
	base_path = "/voice"
	http = true
	port = 14223
	https = false
}

admin: {
	admin_base_path = "/voiceAdmin"
	admin_http = true
	admin_port = 14225
	admin_https = false
}

cors: {
}

certificates: {
}

⁠janus.transport.nanomsg.jcfg:

general: {
	enabled = false
	json = "indented"
	address = "ipc:///tmp/janus.ipc"
}

admin: {
	admin_enabled = false
}

⁠janus.transport.websockets.jcfg:

general: {
	json = "indented"
	ws = false
	ws_port = 14228
	wss = false
}

admin: {
	admin_ws = false
	admin_ws_port = 7188
	admin_wss = false
}

cors: {
}

certificates: {
}

Run the container:

docker compose up -d

⁠Configuration

Update local .jcfg files before starting:

  1. janus.jcfg: Update API security tokens (api_secret and admin_secret).
  2. janus.transport.http.jcfg: Adjust HTTP ports and set your public WAN IP address.

You must enable port forwarding in your NAT settings.

  1. ** e.g. 14223 and14225 TCP **
  2. ** e.g. 10000 to 10200 UDP **

For full source files and custom configuration files (.jcfg), visit the GitHub repository: šŸ‘‰ GitHub - calvinux/os-janus-gateway⁠

Tag summary

Content type

Image

Digest

sha256:64336d5c1…

Size

63.6 MB

Last updated

7 days ago

docker pull calvinux/os-janus-gateway