Sign inSign up

aoztrk82/mumweb

By aoztrk82

•Updated 1 day ago

Self-hosted web client for Mumble voice chat: talk from your browser, no install. amd64 + arm64.

Image
0

376

aoztrk82/mumweb repository overview

⁠mumweb

A self-hosted web client for Mumble⁠ voice chat. Friends open a link, pick a nickname and talk, with no Mumble install. Desktop Mumble clients and browser users share the same server, channels and voice.

⁠What is in this image

The mumweb gateway (a small Go binary) with the web UI embedded. For every browser session it opens a normal Mumble connection and bridges it over a WebSocket; Opus audio is encoded and decoded in the browser, so the gateway is light on CPU and RAM. It runs as a non-root user and has a /healthz health check.

It does not include a Mumble server or HTTPS: run it next to mumblevoip/mumble-server and a reverse proxy such as Caddy (the compose file below does exactly that).

⁠Tags

TagMeaning
latestthe newest release
0.3.1, …fixed releases (pin one for reproducible installs)

Platforms: linux/amd64, linux/arm64.

⁠Quick start

The full, ready-to-copy docker-compose.yml (Mumble server + mumweb + Caddy with automatic HTTPS), the Caddyfile and the .env are in the README on GitHub: https://github.com/aoztrk82/mumweb#quick-start-production⁠

In short: point a DNS record at your server, put those three files in a folder, set MUMWEB_DOMAIN and MUMBLE_SUPERUSER_PASSWORD in .env, and run docker compose up -d.

Only the mumweb service, if you already have a Mumble server and a reverse proxy:

services:
  mumweb:
    image: aoztrk82/mumweb:latest
    restart: unless-stopped
    environment:
      MUMWEB_MUMBLE_ADDR: mumble:64738          # your Mumble server
      MUMWEB_ALLOWED_ORIGINS: https://voice.example.com
      MUMWEB_TRUST_PROXY: "true"                # behind a reverse proxy
    # the reverse proxy must pass WebSocket upgrades on /ws to port 8080

Update with docker compose pull && docker compose up -d.

⁠Configuration

VariableDefaultDescription
MUMWEB_LISTEN:8080HTTP listen address
MUMWEB_MUMBLE_ADDRmumble:64738The Mumble server to connect to (fixed; browsers cannot choose)
MUMWEB_ALLOWED_ORIGINSemptyComma-separated allowed Origins, e.g. https://voice.example.com
MUMWEB_TRUST_PROXYfalseTake the client IP from X-Forwarded-For (set true behind a proxy)
MUMWEB_ACCESS_PASSWORDemptyIf set, web users must enter this password (separate from the Mumble server password)
MUMWEB_ADMIN_PASSWORDemptyIf set, switches on the admin panel at /admin (ban list, ACLs, registered users); empty = off
MUMWEB_MAX_SESSIONS50Maximum concurrent web sessions
MUMWEB_MAX_SESSIONS_PER_IP10Maximum concurrent web sessions per client IP (0 = off)
MUMWEB_RESERVED_SLOTS0Of MUMWEB_MAX_SESSIONS, how many are kept for people who enter MUMWEB_RESERVED_PASSWORD (and admin sessions)
MUMWEB_RESERVED_PASSWORDemptyPassword for the reserved slots (optional login field); both must be set
MUMWEB_CONN_RATE10New connections per IP per minute (0 = off)
MUMWEB_ALLOW_SUPERUSERfalseAllow logging in as Mumble's SuperUser from the web
MUMWEB_TLS_VERIFYfalseVerify the Mumble server certificate
MUMWEB_TLS_FINGERPRINTemptyPin the Mumble server certificate's SHA-256 fingerprint
MUMWEB_LOG_LEVELinfodebug, info, warn, error

Port 8080 serves the UI, /admin/, /ws (WebSocket), /config and /healthz.

Important: all web users reach Mumble from the gateway's single IP, so set MUMBLE_CONFIG_AUTOBAN_SUCCESSFUL_CONNECTIONS=false on the Mumble server (the compose file on GitHub does). Details and the ban behaviour are explained in the README.

⁠Features

Push-to-talk and voice activation, channel tree and switching, password-protected channels, per-user volume, the same right-click menus as the desktop client (kick, ban, mute, move, register, channel edit/link/listen…), chat, English and Turkish interface, dark/light theme, certificate export/import, PWA, auto-reconnect. Works in Chrome and Edge, Firefox (desktop) and Samsung Internet; HTTPS is required for the microphone.

⁠License

MIT. https://github.com/aoztrk82/mumweb/blob/main/LICENSE⁠

Tag summary

Content type

Image

Digest

sha256:32900ebae…

Size

7.5 MB

Last updated

1 day ago

docker pull aoztrk82/mumweb