Skip to content

Janus

Status: Current | Last reviewed: 2026-06-03

WebRTC gateway. Bridges browser surfaces to the SIP/RTP world via the SIP plugin.

Image

ghcr.io/meetecho/janus-gateway:1.3.x with our overlay. See apps/janus-gateway.

Ports

Port Purpose
8088 Admin API (HTTP)
8188 WebSocket signaling
7088 Internal admin
20000–20499/UDP RTP/SRTP for browser sessions

Note: 8088 is Janus admin, 8087 is Asterisk ARI — the two are easy to confuse.

What it does

  • Accepts WebRTC offers from surface-app and verizon-demo-app.
  • Through the SIP plugin, registers as a SIP UA against Kamailio.
  • Forwards audio between WebRTC and RTP.

Nginx WebSocket header strip

The Vanguard nginx ingress's /ws location must strip Cookie, User-Agent, and Referer AND re-declare Upgrade / Connection / Host. Nginx's header inheritance rules drop the latter when you proxy_set_header-out the former. Without this, Chrome 502s on SIP registration.

See the vanguard-janus-ws-header-strip memory note.

Vanguard

Started by docker-compose.media.yml as tsf-local-janus.

docker logs tsf-local-janus --tail 100 -f

lws (libwebsockets) needs an ulimit wrapper to avoid header-overflow crashes — see the Kind validation flow.

Production

Helm chart at charts/janus. hostNetwork: true on the media node pool. Downward API injects status.hostIP for the public ICE candidate.

See also