No description
  • Shell 93.1%
  • HTML 6.9%
Find a file
2026-02-22 22:49:06 +01:00
landing update index html mit Mumble client adress 2026-02-22 22:49:06 +01:00
.env.example inital commit 2026-02-21 17:24:43 +01:00
.gitignore inital commit 2026-02-21 17:24:43 +01:00
crontab.example inital commit 2026-02-21 17:24:43 +01:00
docker-compose.yml nginx in compsoe 2026-02-22 21:07:49 +01:00
README.md inital commit 2026-02-21 17:24:43 +01:00
renew-certs.sh inital commit 2026-02-21 17:24:43 +01:00
setup.sh inital commit 2026-02-21 17:24:43 +01:00

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_signed oder internal_ca
  • WELCOME_TEXT: Begrüßungstext für Benutzer
  • MAX_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:

  1. Öffne die Admin-Oberfläche deines Routers
  2. Suche nach Portweiterleitung/Port-Forwarding/NAT-Einstellungen
  3. Erstelle neue Regeln für beide Protokolle (UDP + TCP)
  4. 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:

  1. Konfiguriere DynDNS in deinem Router (falls unterstützt)
  2. Oder nutze einen externen DynDNS-Anbieter (z.B. DuckDNS, No-IP, etc.)
  3. 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:

Verbindungsdetails:

  • Adresse: voice.example.com (deine konfigurierte Domain)
  • Port: 64738
  • Benutzername: Frei wählbar
  • Passwort: Das in .env gesetzte MUMBLE_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

  1. Portweiterleitung prüfen: Teste mit telnet your-domain.com 64738
  2. Firewall prüfen: Stelle sicher, dass Port 64738 sowohl TCP als auch UDP offen ist
  3. DNS prüfen: Verifiziere mit nslookup your-domain.com
  4. 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:

  1. Überprüfe die Logs: docker compose logs -f
  2. Verifiziere die Konfiguration in .env
  3. Teste die Netzwerkverbindung
  4. Prüfe die Router-Portweiterleitung

📜 Lizenz

Dieses Setup verwendet Mumble, einen Open-Source Voice-Chat-Server unter BSD-Lizenz.