Building
git clone https://github.com/texttechnologylab/Janus-Gateway.git
cd Janus-Gateway
docker compose build
The build compiles Janus and four dependencies from source and takes roughly 30 minutes. Layers are cached, so a failed build resumes rather than restarting.
If the build fails partway
Almost always a transient network error fetching one of the source dependencies. Re-run it.
Why from source
The distribution packages are too old for Janus 1.4, and - more importantly - the
build must include usrsctp for data channels and --enable-post-processing for
janus-pp-rec. Both are easy to omit and unpleasant to discover missing later.
Pinned versions
Build arguments in the Dockerfile:
| Argument | Default | |
|---|---|---|
JANUS_COMMIT |
94408ffccbc1a7c39dac82d55e5dd475c807e770 |
Janus 1.4.2 |
JANUS_VERSION |
1.4.2 |
Label only |
LIBSRTP_VERSION |
2.2.0 |
|
LIBWEBSOCKETS_BRANCH |
v4.3-stable |
libnice and usrsctp build from their current default branches.
Changing the Janus version
For a permanent change, edit the Dockerfile defaults so the pin is recorded in
version control - that is the point of pinning.
Verify what you built:
libwebsockets flags
Two non-default flags exist to prevent known upstream issues.
| Flag | Reason |
|---|---|
-DLWS_MAX_SMP=1 |
meetecho/janus-gateway#732 |
-DLWS_WITHOUT_EXTENSIONS=0 |
meetecho/janus-gateway#2476 |
Publishing
.github/workflows/docker-publish.yml builds and pushes to GitHub Container
Registry on a tag or a manual run. Tag releases to match the Janus version
(1.4.2) so the image tag states what is inside it.