Sign inSign up

valentt/galene

By valentt

Updated 3 months ago

Galène videoconference SFU: multi-arch, distroless. For real meetings run with --network host.

Image
0

482

valentt/galene repository overview

Galène

Galène is a videoconference server: light, self-hosted, no account needed. This image is built from source (github.com/jech/galene), multi-architecture (linux/amd64 and linux/arm64), and runs as a non-root distroless container.

⚠️ For a real meeting, use host networking

If several people on different devices need to see each other, run the image with --network host:

docker run -d --network host valentt/galene

With a plain -p 8443:8443 the page loads and you can join a room, but everyone sees only their own camera and no video is exchanged. Galène is an SFU: the media travels over separate UDP ports, and inside a bridge-network container the server advertises its internal address (172.17.x) which no other device can reach. Host networking makes it advertise the host's real LAN address, so the media flows. This is the setup the Galène author recommends for Docker.

Host networking is a Linux feature; on Docker Desktop for macOS and Windows it maps to the internal VM, so use it on a Linux host or server.

Quick look on one machine

docker run -p 8443:8443 valentt/galene

Open https://localhost:8443/, accept the self-signed certificate warning, and join the bundled Galène demo group by typing any name. Galène serves over HTTPS only, so http:// will not work. This is fine for a solo look on a single machine; for an actual meeting between devices, use host networking as above.

Docker Desktop (macOS and Windows)

Docker Desktop runs the engine inside a virtual machine, so a container's port reaches the host only once it is published. The -p 8443:8443 above does that. If you start the image from the Desktop graphical interface instead, the quick Run does not publish anything: expand Optional settings, set Host port to 8443, and run. This is how Docker works for every image, not something specific to Galène.

Public server (VPS), often behind a reverse proxy

A common setup terminates TLS in a reverse proxy (Caddy, nginx) and runs Galène in plain HTTP behind it (-insecure -http :8444). Tell the built-in TURN server its public address and pin the media to a known range:

docker run -d --network host valentt/galene \
    -insecure -http :8444 -turn 203.0.113.5:3479 -udp-range 40000-40050

The proxy carries only the web interface and signalling, which are TCP. The media is UDP straight to the host, so open the TURN port and the media range in the firewall. This is the step that is easy to miss: a firewall that ends in a default DROP still passes the proxy's TCP, so the page loads and rooms join, but the UDP media is dropped and everyone sees only their own camera. The server's own relay test only checks locally; to confirm the port is reachable from outside, send a STUN binding request to it (see docs/DOCKER.md). The bundled docker-compose.yml wires the same flags from a .env file.

Persistent setup and administration

For groups, certificates and tokens that survive restarts, mount volumes and create groups with galenectl. See galene.md for full administration instructions.


Galène is written by Juliusz Chroboczek. This is an unofficial build, published for testing and convenience.

Tag summary

Content type

Image

Digest

sha256:96928e752

Size

8.4 MB

Last updated

3 months ago

docker pull valentt/galene