Good day.
Since your question was “HOW to do this” and not “should I do this” or “is this a good idea”, I will tell you how I got it working with Docker Swarm (docker engine 28.3.3) and Traefik reverse proxy (3.3.7)
First, please be aware there are some differences between “docker” and “docker-swarm” in terms of Traefik.
I will try to highlight some of those here, but best refer to the official documentation for details
command:
# Enable Docker in Traefik, so that it reads labels from Docker services
- --providers.docker
# Add a constraint to only use services with the label "traefik.constraint-label=traefik-public"
- --providers.docker.constraints=Label(`traefik.constraint-label`, `traefik-public`)
# Do not expose all Docker services, only the ones explicitly exposed
- --providers.docker.exposedbydefault=false
# Enable Docker Swarm mode
- --providers.swarm.endpoint=unix:///var/run/docker.sock
Next, also part of the “command” key, you define some entry points:
# Mumble entrypoint ports
- --entrypoints.mumbletcp.address=:64738
- --entrypoints.mumbleudp.address=:64738/udp
- --entrypoints.mumbleice.address=:6502
Next, as part of your mumble service definition, you must add these as part of the “deploy.labels” key. Again, note, there is a difference between docker and docker swarm. this works for swarm.
deploy:
labels:
- traefik.tcp.routers.mumbletcp.entrypoints=mumbletcp
- traefik.tcp.routers.mumbletcp.rule=HostSNI(`*`)
- traefik.tcp.services.mumbletcp-svc.loadbalancer.server.port=64738
- traefik.udp.routers.mumbleudp.entrypoints=mumbleudp
- traefik.udp.services.mumbleudp-svc.loadbalancer.server.port=64738
I have not added the ICE entrypoint I have defined previously, since I had enough trouble to get this working, and I don’t yet know if I actually want the ICE port open.
Note: I am also very new to mumble.
Text chat was working fine the whole time.
BUT, I struggled with voice chat.
Voice chat only start working after I “registered” all my test users, AND forced all clients to use TCP only. Then I went to bed. I need to test some more since I’m not sure, but I THINK UDP is not working correctly.
If I’m correct about the UDP issue, and since mumble itself does not expose a web interface (?), AND it force the use of certificate-based encryption in anyway, I’m having some doubts about the sense of placing it behind a reverse proxy.
The only pro I can think of, is if I want to expose to the internet - then having a single entrypoint might be helpful, security wise. But how much… idk.
Edit to add: this tool tests the UDP ping all-good for me, so I’ll check the TCP vs UDP situation again with real clients.