- Dockerfile 100%
Security (Cooldown-Ausnahme): v1.4.2 vom 23.09. schliesst GHSA-fc3v-cp6h-jfw5 (High, Heap-Overflow in janus_string_replace() ueber SDP-Trickle-Candidates) und GHSA-8wq3-j8jw-88rp (Medium, VideoRoom-DoS ueber unbegrenztes threads). Die uebrigen vier Advisories betreffen im Build deaktivierte Plugins (SIP, NoSIP, TextRoom, AudioBridge, Streaming). Keine Konfigurationsaenderungen im Changelog. Beide Stages auf debian:bookworm-slim@sha256:3783cc01769c7b2b1b83a5c5ad96c815348e28ed7da68e2e3687004faa906251 (vorher beweglicher Tag). libwebsockets vom beweglichen Branch v4.3-stable auf dessen HEAD-Commit 3df01489ed1b gepinnt; der letzte Tag v4.3.9 fehlen zwei spaetere Fixes. READMEs nannten noch v1.4.0. Vorgaenger: git.touby.eu/arndttouby/janus-gateway-arm64@sha256:b217401e3b2598a256e7a3191ea85018187aab13250103d4e15ff53d9af81202 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| conf | ||
| .gitignore | ||
| Dockerfile | ||
| LICENSE | ||
| README.de.md | ||
| README.fr.md | ||
| README.md | ||
Janus Gateway – ARM64 Docker Image
Janus WebRTC Gateway v1.4.2 as an ARM64 Docker image, optimized for Nextcloud Talk High Performance Backend (HPB).
Contents
- Multi-stage build on
debian:bookworm-slim - Janus v1.4.2 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 @ 3df0148 (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_secretinjanus.jcfgadmin_keyinjanus.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.