Janus WebRTC Gateway v1.4.0 ARM64 Docker Image for Nextcloud Talk HPB
  • Dockerfile 100%
Find a file
2026-04-06 10:40:48 +02:00
conf Fix: JCFG-Kommentare von -- auf # geändert (libconfig erkennt -- nicht als Kommentar) 2026-04-06 10:40:48 +02:00
.gitignore Fix security, bugs, and add multilingual README 2026-04-06 00:38:07 +02:00
Dockerfile Fix: GIR typelib COPY entfernt (nicht im Builder erzeugt, nicht benötigt) 2026-04-06 10:11:55 +02:00
LICENSE Initial: Janus Gateway v1.4.0 ARM64 Docker Image 2026-04-05 22:58:49 +02:00
README.de.md Remove emoji from language links in README files 2026-04-06 00:51:51 +02:00
README.fr.md Remove emoji from language links in README files 2026-04-06 00:51:51 +02:00
README.md Remove emoji from language links in README files 2026-04-06 00:41:05 +02:00

Janus Gateway ARM64 Docker Image

License: GPL v3

Janus WebRTC Gateway v1.4.0 as an ARM64 Docker image, optimized for Nextcloud Talk High Performance Backend (HPB).

Deutsch | Français

Contents

  • Multi-stage build on debian:bookworm-slim
  • Janus v1.4.0 compiled from meetecho/janus-gateway
  • Only the components required for Talk HPB:
    • VideoRoom plugin
    • WebSocket transport (port 8188)
    • WebSocket Event Handler (for signaling server)
    • Data Channels (usrsctp)
  • libnice 0.1.22, libwebsockets 4.3-stable (compiled from source)

Build

docker build -t janus-gateway-arm64 .

Configuration

Config templates are located in conf/ and are copied to /opt/janus/etc/janus/ during build. They can be overridden at runtime via volume mount:

File Purpose
janus.jcfg Main config (NAT, logging, etc.)
janus.transport.websockets.jcfg WebSocket transport (port 8188)
janus.plugin.videoroom.jcfg VideoRoom plugin
janus.eventhandler.wsevh.jcfg Event handler → signaling server

Required Changes

Before deploying, change the default secrets in the config files:

  • admin_secret in janus.jcfg
  • admin_key in janus.plugin.videoroom.jcfg

In janus.eventhandler.wsevh.jcfg, set backend to the WebSocket URL of your signaling server:

backend = "ws://<SIGNALING_HOST>:8080/proxy"

In janus.jcfg, adjust rtp_port_range and ice_ignore_list to match your network environment.

Running

docker run -d \
  --name janus \
  -p 20000-20200:20000-20200/udp \
  -v ./conf:/opt/janus/etc/janus:ro \
  janus-gateway-arm64 \
  --nat-1-1=<PUBLIC_IP>

If Janus runs in the same Docker network as the signaling server, add --network <network>.

The --nat-1-1 flag is required when running behind NAT so that Janus advertises the correct public IP in ICE candidates.

Architecture (Nextcloud Talk HPB)

Nextcloud Talk Client
    │
    ├── WebSocket ──→ Signaling Server ──→ NATS
    │                      │
    │                      ├── WebSocket ──→ Janus Gateway (:8188)
    │                      │                      │
    │                      │               VideoRoom Plugin
    │                      │                      │
    └── WebRTC (DTLS/SRTP) ──────────────────────┘
                                          RTP :20000-20200/UDP

Disabled Components

The following Janus features are disabled in this build as they are not needed for Talk HPB:

  • Plugins: AudioBridge, EchoTest, NoSIP, RecordPlay, SIP, Streaming, TextRoom, VideoCall, VoiceMail
  • Transports: HTTP/REST, RabbitMQ, MQTT, Nanomsg
  • Event handlers: all except WebSocket
  • TURN REST API (coturn runs separately)

License

GPL-3.0 same as Janus Gateway.