- Shell 93.1%
- HTML 6.9%
| landing | ||
| .env.example | ||
| .gitignore | ||
| crontab.example | ||
| docker-compose.yml | ||
| README.md | ||
| renew-certs.sh | ||
| setup.sh | ||
Mumble Server - Docker Installation
Ressourcen-effizienter Mumble (Murmur) Voice-Server für eine private Gruppe auf einem Docker-Host hinter einem Router mit DynDNS.
📋 Voraussetzungen
- Docker und Docker Compose (v2) installiert
- DNS-Eintrag (z.B.
voice.example.com) zeigt auf deine öffentliche IP (DynDNS) - Router Port-Weiterleitung für Port 64738 (UDP + TCP)
- OpenSSL installiert (für Zertifikatsgenerierung)
🚀 Schnellstart
1. Konfiguration anpassen
Bearbeite die .env Datei und setze mindestens ein sicheres Passwort:
MUMBLE_PASSWORD=<dein-sicheres-passwort>
Weitere Optionen:
DOMAIN: Deine Domain (Standard:voice.example.com)PORT: Mumble-Port (Standard:64738)CERT_MODE:self_signedoderinternal_caWELCOME_TEXT: Begrüßungstext für BenutzerMAX_USERS: Maximale Anzahl gleichzeitiger Benutzer
2. Server einrichten und starten
./setup.sh
Das Skript wird:
- ✓ Notwendige Verzeichnisse erstellen
- ✓ TLS-Zertifikate generieren
- ✓ Docker Container starten
- ✓ Status anzeigen
3. Router Portweiterleitung einrichten
Konfiguriere in deinem Router folgende Portweiterleitung:
| Protokoll | Externer Port | Internes Gerät | Interner Port | Beschreibung | |-----------|---------------|----------------|---------------|--------------|| | UDP | 64738 | Docker-Host IP | 64738 | Mumble Voice (mandatory) | | TCP | 64738 | Docker-Host IP | 64738 | Mumble Control (recommended) |
Allgemeine Schritte:
- Öffne die Admin-Oberfläche deines Routers
- Suche nach Portweiterleitung/Port-Forwarding/NAT-Einstellungen
- Erstelle neue Regeln für beide Protokolle (UDP + TCP)
- Ziel-IP: Die lokale IP-Adresse deines Docker-Hosts
Beispiele für gängige Router:
- FRITZ!Box: Internet → Freigaben → Portfreigaben
- Speedport: Sicherheit → Portweiterleitung
- TP-Link: Forwarding → Virtual Servers
- Netgear: Advanced → Port Forwarding
4. DynDNS konfigurieren
Stelle sicher, dass deine Domain auf die öffentliche IP deines Routers zeigt:
Stelle sicher, dass deine Domain auf die öffentliche IP deines Routers zeigt:
- Konfiguriere DynDNS in deinem Router (falls unterstützt)
- Oder nutze einen externen DynDNS-Anbieter (z.B. DuckDNS, No-IP, etc.)
- Erstelle einen DNS-Eintrag bei deinem DNS-Provider, der auf deine DynDNS-Adresse zeigt
🔐 Zertifikatsmodi
Self-Signed (Standard)
Schnelles Setup, Clients sehen eine Zertifikatswarnung beim ersten Verbinden.
CERT_MODE=self_signed
CERT_DAYS=365
Internal CA
Erstellt eine eigene Certificate Authority. Verteile certs/ca.crt an Clients für vertrauenswürdige Verbindungen ohne Warnung.
CERT_MODE=internal_ca
CA-Zertifikat auf Clients importieren:
- macOS: Doppelklick auf
ca.crt→ "Immer vertrauen" - Windows: Rechtsklick auf
ca.crt→ "Zertifikat installieren" → "Vertrauenswürdige Stammzertifizierungsstellen" - Linux: Abhängig von der Distribution, meist in
/usr/local/share/ca-certificates/
📱 Verbindung zum Server
Mumble Client herunterladen:
- Website: https://www.mumble.info/downloads/
- Verfügbar für Windows, macOS, Linux, iOS, Android
Verbindungsdetails:
- Adresse:
voice.example.com(deine konfigurierte Domain) - Port:
64738 - Benutzername: Frei wählbar
- Passwort: Das in
.envgesetzteMUMBLE_PASSWORD
🛠️ Verwaltung
Logs anzeigen
docker compose logs -f
Server stoppen
docker compose down
Server neu starten
docker compose restart
Server aktualisieren
docker compose pull
docker compose up -d
Zertifikate prüfen und erneuern
Automatisch (empfohlen):
./renew-certs.sh
Das Skript prüft automatisch, ob eine Erneuerung notwendig ist (30 Tage vor Ablauf).
Manuell:
Lösche die alten Zertifikate und führe das Setup-Skript erneut aus:
rm certs/mumble.*
./setup.sh
<EFBFBD> Automatische Zertifikatserneuerung
Das Projekt enthält ein Skript zur automatischen Überprüfung und Erneuerung der TLS-Zertifikate.
Manuelles Prüfen und Erneuern
./renew-certs.sh
Das Skript:
- ✅ Prüft die Gültigkeit der aktuellen Zertifikate
- ✅ Erneuert Zertifikate automatisch 30 Tage vor Ablauf
- ✅ Erstellt automatisch Backups der alten Zertifikate
- ✅ Startet den Container nach Erneuerung neu
- ✅ Loggt alle Aktionen in
cert-renewal.log
Automatisierung mit Cron
Für die automatische Zertifikatserneuerung empfiehlt sich ein wöchentlicher Cron-Job.
💡 Tipp: Eine Beispieldatei mit verschiedenen Cron-Konfigurationen findest du in crontab.example
1. Crontab bearbeiten:
crontab -e
2. Cron-Job hinzufügen (läuft jeden Sonntag um 3:00 Uhr):
# Mumble Certificate Renewal - jeden Sonntag um 3:00 Uhr
0 3 * * 0 /absolute/path/to/mumble-server/renew-certs.sh
Oder für eine andere Frequenz:
# Täglich um 2:00 Uhr
0 2 * * * /path/to/mumble/renew-certs.sh
# Jeden 1. des Monats um 3:00 Uhr
0 3 1 * * /path/to/mumble/renew-certs.sh
# Jeden Montag um 4:00 Uhr
0 4 * * 1 /path/to/mumble/renew-certs.sh
3. Cron-Job mit E-Mail-Benachrichtigung (optional):
MAILTO=deine-email@example.com
0 3 * * 0 /path/to/mumble/renew-certs.sh
Konfiguration der Erneuerungsschwelle
Die Erneuerungsschwelle (Standard: 30 Tage) kann im Skript angepasst werden:
# In renew-certs.sh, Zeile 17:
RENEWAL_THRESHOLD_DAYS=30 # Tage vor Ablauf
Log-Datei prüfen
Alle Aktivitäten werden geloggt:
cat cert-renewal.log
Oder für die letzten Einträge:
tail -50 cert-renewal.log
<EFBFBD>📁 Verzeichnisstruktur
.
├── docker-compose.yml # Docker Compose Konfiguration
├── setup.sh # Setup-Skript
├── renew-certs.sh # Zertifikatserneuerungs-Skript (Cron-fähig)├── crontab.example # Beispiel-Crontab-Konfigurationen├── cert-renewal.log # Log-Datei der Zertifikatserneuerungen
├── .env # Konfigurationsdatei (nicht in Git)
├── .env.example # Beispielkonfiguration
├── .gitignore # Git-Ignore-Regeln
├── data/ # Persistente Daten (DB, Logs)
├── certs/ # TLS-Zertifikate
│ ├── mumble.crt # Server-Zertifikat
│ ├── mumble.key # Private Key
│ ├── ca.crt # CA-Zertifikat (bei internal_ca)
│ └── backup-*/ # Automatische Zertifikats-Backups
└── README.md # Diese Datei
🔧 Fehlerbehebung
Container startet nicht
docker compose logs
Überprüfe die Logs auf Fehler.
Port bereits in Verwendung
Ändere den Port in der .env Datei:
PORT=64739
Verbindung schlägt fehl
- Portweiterleitung prüfen: Teste mit
telnet your-domain.com 64738 - Firewall prüfen: Stelle sicher, dass Port 64738 sowohl TCP als auch UDP offen ist
- DNS prüfen: Verifiziere mit
nslookup your-domain.com - Container-Status prüfen:
docker compose ps- sollte "running" zeigen
Zertifikatsfehler
Bei internal_ca: Stelle sicher, dass certs/ca.crt auf dem Client importiert wurde.
📊 Service-Details
- ID: mumble
- Suite: RPG
- Priorität: P2
- Kritikalität: Low
- RTO: 72h (Recovery Time Objective)
- RPO: Best-effort (Recovery Point Objective)
Auswirkung bei Ausfall: Voice nicht verfügbar; keine Auswirkung auf Core-Services.
🔒 Sicherheit
- ✅ Server-Passwort erforderlich
- ✅ TLS-Verschlüsselung
- ✅ Öffentliche Registrierung deaktiviert
- ✅ Keine VPN-Anforderung
- ✅ Direkte Port-Veröffentlichung (kein Reverse Proxy)
📞 Support
Bei Problemen:
- Überprüfe die Logs:
docker compose logs -f - Verifiziere die Konfiguration in
.env - Teste die Netzwerkverbindung
- Prüfe die Router-Portweiterleitung
📜 Lizenz
Dieses Setup verwendet Mumble, einen Open-Source Voice-Chat-Server unter BSD-Lizenz.