Docker Mumble-Servers

Einrichten eines Mumble-Servers mit Let's Encrypt-Zertifikaten in Docker

In diesem Artikel zeige ich dir, wie du einen Mumble-Server mit Docker betreibst und dabei automatisch ein Let’s Encrypt-Zertifikat für eine sichere Verbindung einrichtest. Wir verwenden dafür Docker Compose, Certbot und Umgebungsvariablen, um die Konfiguration flexibel und einfach zu gestalten.

Was macht diese Konfiguration?

  1. Certbot:

    • Certbot ist ein Tool, das Zertifikate von Let’s Encrypt erstellt und erneuert. Es wird im Standalone-Modus ausgeführt, um ein SSL/TLS-Zertifikat für deinen Mumble-Server zu generieren.
    • Das Zertifikat wird in einem lokalen Verzeichnis gespeichert und vom Mumble-Server verwendet, um verschlüsselte Verbindungen zu ermöglichen.
  2. Mumble-Server:

    • Der Mumble-Server wird in einem Docker-Container ausgeführt und konfiguriert, um das von Certbot generierte Zertifikat für sichere Verbindungen zu nutzen.
    • Er wartet darauf, dass Certbot das Zertifikat erstellt, bevor er startet.
  3. Umgebungsvariablen:

    • Die Konfiguration verwendet Umgebungsvariablen für die E-Mail-Adresse und die Domain. Dadurch kannst du die Einstellungen leicht ändern, ohne die Docker-Compose-Datei direkt bearbeiten zu müssen.

Voraussetzungen

  1. Docker und Docker Compose:

    • Stelle sicher, dass Docker und Docker Compose auf deinem Server installiert sind. Du kannst dies mit den folgenden Befehlen überprüfen:
      1
      2
      
      docker --version
      docker-compose --version
      
  2. Domain:

    • Du benötigst eine Domain, die auf die IP-Adresse deines Servers zeigt. In diesem Beispiel verwenden wir die Domain domain.server.de.
  3. Ports:

    • Stelle sicher, dass die Ports 80 (HTTP) und 64738 (Mumble) auf deinem Server geöffnet sind.

Schritt-für-Schritt-Anleitung

1. Projektverzeichnis erstellen

Erstelle ein neues Verzeichnis für dein Projekt und wechsle in dieses Verzeichnis:

1
2
mkdir mumble-docker
cd mumble-docker

2. Docker-Compose-Datei erstellen

Erstelle eine Datei namens docker-compose.yml und füge die folgende Konfiguration ein:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
services:
  certbot:
    image: certbot/certbot:latest
    container_name: certbot
    ports:
      - 80:80
    volumes:
      - ./data/letsencrypt:/etc/letsencrypt
    entrypoint: >
      sh -c "certbot certonly --standalone --non-interactive --agree-tos --email
      ${CERTBOT_EMAIL} -d ${CERTBOT_DOMAIN} && tail -f /dev/null"
    restart: no

  mumble-server:
    image: mumblevoip/mumble-server:latest
    container_name: mumble-server
    ports:
      - 64738:64738
    volumes:
      - ./data:/data
      - ./letsencrypt:/letsencrypt
    environment:
      - MUMBLE_CONFIG_SSL_CERT=/letsencrypt/live/${CERTBOT_DOMAIN}/fullchain.pem
      - MUMBLE_CONFIG_SSL_KEY=/letsencrypt/live/${CERTBOT_DOMAIN}/privkey.pem
    restart: always
    depends_on:
      - certbot

3. Umgebungsvariablen definieren

Erstelle eine Datei namens .env im gleichen Verzeichnis und füge die folgenden Variablen hinzu:

1
2
CERTBOT_EMAIL=mailadresse@server.de
CERTBOT_DOMAIN=domain.server.de

Diese Datei wird von Docker Compose automatisch geladen und ersetzt die Variablen in der docker-compose.yml.

4. Verzeichnisstruktur vorbereiten

Erstelle die benötigten Verzeichnisse für die Zertifikate und Daten:

1
2
mkdir -p data
mkdir -p letsencrypt

5. Dienste starten

Starte die Dienste mit Docker Compose:

1
docker-compose up
  • Der Certbot-Container wird gestartet und erstellt ein Zertifikat für die angegebene Domain.
  • Der Mumble-Server-Container wartet, bis das Zertifikat verfügbar ist, und startet dann mit der Konfiguration für verschlüsselte Verbindungen.

6. Überprüfen, ob alles funktioniert

  • Öffne deinen Mumble-Client und verbinde dich mit mumble://domain.server.de.
  • Dein Mumble-Server sollte jetzt mit einem gültigen SSL-Zertifikat laufen.

Automatische Zertifikatserneuerung

Let’s Encrypt-Zertifikate sind nur 90 Tage gültig. Um die Zertifikate zu erneuern, kannst du den Container manuell starten, um die Zertifikate zu erneuern:

1
docker-compose run certbot