janus - WebRTC server/gateway



janus − WebRTC server/gateway


janus [options]


janus is a WebRTC server/gateway developed by Meetecho conceived to be a general purpose one. As such, it doesn’t provide any functionality per se other than implementing the means to set up a WebRTC media communication with a browser or application, exchanging JSON messages with it over different transports, and relaying RTP/RTCP and messages between clients and the server-side application logic they’re attached to. Any specific feature/application is provided by server side plugins, that browsers can then contact via the server to take advantage of the functionality they provide. Example of such plugins can be implementations of applications like echo tests, conference bridges, media recorders, SIP gateways and the like.
The reason for this is simple: we wanted something that would have a
small footprint (hence a C implementation) and that we could only equip
with what was really needed (hence pluggable modules). That is,
something that would allow us to deploy either a full-fledged WebRTC
server on the cloud, or a small nettop/box to handle a specific use


−h, −−help

Print help and exit

−V, −−version

Print version and exit

−b, −−daemon

Launch Janus in background as a daemon (default=off)

−p, −−pid-file=path

Open the specified PID file when starting Janus (default=none)

−N, −−disable-stdout

Disable stdout based logging (default=off)

−L, −−log-stdout

Log to stdout, even when the process is daemonized (default=off)

−L, −−log-file=path

Log to the specified file (default=stdout only)

−H, −−cwd-path=path

Working directory for Janus daemon process (default=/)

−i, −−interface=ipaddress

Interface to use (will be the public IP)

−P, −−plugins-folder=path

Plugins folder (default=./plugins)

−C, −−config=filename

Configuration file to use

−F, −−configs-folder=path

Configuration files folder (default=./conf)

−c, −−cert-pem=filename

DTLS certificate

−k, −−cert-key=filename

DTLS certificate key

−K, −−cert-pwd=text

DTLS certificate key passphrase (if needed)

−S, −−stun-server=address:port

STUN server(:port) to use, if needed (e.g., Janus behind NAT, default=none)

−1, −−nat-1-1=ips

Comma-separated list of public IPs to put in all host candidates, assuming a 1:1 NAT is in place (e.g., Amazon EC2 instances, default=none)

−2, −−keep-private-host

When nat-1-1 is used (e.g., Amazon EC2 instances), don’t remove the private host, but keep both to simulate STUN (default=off)

−E, −−ice-enforce-list=list

Comma-separated list of the only interfaces to use for ICE gathering; partial strings are supported (e.g., eth0 or eno1,wlan0, default=none)

−X, −−ice-ignore-list=list

Comma-separated list of interfaces or IP addresses to ignore for ICE gathering; partial strings are supported (e.g., vmnet8,, or vmnet,192.168., default=vmnet)

−6, −−ipv6-candidates

Whether to enable IPv6 candidates or not (default=off)

−O, −−ipv6-link-local

Whether IPv6 link-local candidates should be gathered as well (default=off)

−l, −−libnice-debug

Whether to enable libnice debugging or not (default=off)

−f, −−full-trickle

Do full-trickle instead of half-trickle (default=off)

−I, −−ice-lite

Whether to enable the ICE Lite mode or not (default=off)

−T, −−ice-tcp

Whether to enable ICE-TCP or not (warning: only works with ICE Lite) (default=off)

−Q, −−min-nack-queue=number

Minimum size of the NACK queue (in ms) per user for retransmissions, no matter the RTT

−t, −−no-media-timer=number

Time (in s) that should pass with no media (audio or video) being received before Janus notifies you about this

−W, −−slowlink-threshold=number

Number of lost packets (per s) that should trigger a ’slowlink’ Janus API event to users (default=0, feature disabled)

−r, −−rtp-port-range=min−max

Port range to use for RTP/RTCP

−B, −−twcc-period=number

How often (in ms) to send TWCC feedback back to senders, if negotiated (default=200ms)

−n, −−server-name=name

Public name of this Janus instance (default=MyJanusInstance)

−s, −−session-timeout=number

Session timeout value, in seconds (default=60)

−m, −−reclaim-session-timeout=number

Reclaim session timeout value, in seconds (default=0)

−d, −−debug-level=1−7

Debug/logging level (0=disable debugging, 7=maximum debug level; default=4)

−D, −−debug-timestamps

Enable debug/logging timestamps (default=off)

−o, −−disable-colors

Disable color in the logging (default=off)

−M, −−debug-locks

Enable debugging of locks/mutexes (very verbose! default=off)

−a, −−apisecret=randomstring

API secret all requests need to pass in order to be accepted by Janus (useful when wrapping Janus API requests in a server, none by default)

−A, −−token-auth

Enable token-based authentication for all requests (default=off)

−e, −−event-handlers

Enable event handlers (default=off)

−w, −−no-webrtc-encryption

Disable WebRTC encryption, so no DTLS or SRTP (only for debugging!) (default=off)


janus − Launch Janus with all options from configurations files
janus −b −L /tmp/januslog
− Launch Janus as a daemon and log to the
specified file
janus −6
− Launch Janus with IPv6 support enabled
janus −f
− Launch Janus with full-trickle enabled


If you think you found a bug or want to contribute a feature, you can
issue or a pull request on
Anyway, before doing that make sure you read the documentation at
https://janus.conf.meetecho.com/docs/ and that it has not been
discussed already at https://janus.discourse.group/. We only use Github
for code issues, and NOT for configuration or usage issues: use the
group for that.


https://github.com/meetecho/janus-gateway − Official repository
https://janus.conf.meetecho.com − Demos and documentation
https://janus.discourse.group/ − Community
https://www.meetecho.com/blog/ − Tutorials and blog posts on Janus


Lorenzo Miniero ([email protected])

Updated 2024-01-29 - jenkler.se | uex.se