Poradnik

Postaw własny serwer Mumble

Mumcord nie potrzebuje specjalnego serwera: wystarczy zwykły serwer Mumble. Z Dockerem twój ruszy w około 15 minut, nawet jeśli robisz to pierwszy raz.

  • 64738 port, TCP i UDP
  • 1 rdzeń i 512 MB RAM obsłużą kilkadziesiąt osób
  • 0 € open source; płacisz tylko za maszynę

W ośmiu krokach

  1. Wybierz maszynę

    Najprościej wziąć mały serwer z Linuxem od dostawcy hostingu („VPS” za kilka euro miesięcznie). Działa całą dobę i ma stały adres. Komputer w domu albo Raspberry Pi też się nada; wtedy musisz otworzyć port na routerze (krok 5).

    Mumble potrzebuje bardzo mało mocy. Ważniejsze jest łącze: każda mówiąca osoba zużywa około 40–100 kbit/s.

  2. Zainstaluj Dockera

    Zaloguj się na serwer przez SSH. Na Linuxie to polecenie instaluje Dockera razem z Compose. Na Windowsie i macOS użyj zamiast tego Docker Desktop.

    Terminal
    curl -fsSL https://get.docker.com | sudo sh
    docker compose version

    Jeśli widzisz numer wersji, wszystko gotowe.

  3. Utwórz folder i hasło

    Utwórz folder i wygeneruj losowe hasło do konta administratora SuperUser:

    Terminal
    mkdir -p ~/mumble && cd ~/mumble
    openssl rand -base64 24
    .env
    # Stays on the server. Never share it in Git, chats or screenshots.
    SUPERUSER_PASSWORD=paste-the-random-password-here
    SERVER_PASSWORD=

    Zapisz drugi plik jako .env i wklej wygenerowane hasło (na przykład przez nano .env). Jeśli nie każdy, kto zna adres, ma wejść, ustaw SERVER_PASSWORD, które przekażesz swoim ludziom. Potem chmod 600 .env odcina od pliku innych użytkowników maszyny.

  4. Plik docker-compose.yml

    Ten plik trafia do tego samego folderu jako docker-compose.yml. Zmień nazwę serwera i tekst powitalny, jak chcesz; reszta może zostać bez zmian.

    docker-compose.yml
    # Mumble server for Mumcord and any other Mumble client
    name: mumble
    
    services:
      mumble-server:
        image: mumblevoip/mumble-server:v1.5.735   # pinned version; raise it here to update
        restart: unless-stopped
        ports:
          - "64738:64738/tcp"   # connection and chat
          - "64738:64738/udp"   # voice
        volumes:
          - data:/data          # channels, registrations and certificate
        environment:
          # Passwords come from the .env file next to this one, never straight in here.
          MUMBLE_SUPERUSER_PASSWORD: ${SUPERUSER_PASSWORD:?SUPERUSER_PASSWORD is missing in .env}
          MUMBLE_CONFIG_SERVER_PASSWORD: ${SERVER_PASSWORD:-}   # empty = anyone with the address can join
          MUMBLE_CONFIG_REGISTER_NAME: "Our Server"              # name of the top channel
          MUMBLE_CONFIG_WELCOME_TEXT: "Welcome! Say hi in the chat."   # pinned at the top of the chat in Mumcord
          MUMBLE_CONFIG_USERS: "50"                             # at most this many at once
          MUMBLE_CONFIG_IMAGE_MESSAGE_LENGTH: "1048576"         # images in chat up to 1 MB (default: 128 KB)
          MUMBLE_CONFIG_TEXT_MESSAGE_LENGTH: "10000"            # longer messages (default: 5000 characters)
    
    volumes:
      data:

    Dwa ostatnie ustawienia są dla Mumcorda: wklejane obrazy mogą być większe, a długie wiadomości nie są ucinane. Każde inne ustawienie działa według tego samego wzoru MUMBLE_CONFIG_…, zobacz dokumentację obrazu.

  5. Uruchom i otwórz port

    Uruchom serwer i zerknij do logu:

    Terminal
    docker compose up -d
    docker compose logs -f   # Ctrl+C only stops the output

    Gdy pojawi się Server listening on 0.0.0.0:64738, serwer działa. Teraz port 64738 dla TCP i UDP musi być osiągalny z zewnątrz:

    Serwer z firewallem (na przykład ufw): sudo ufw allow 64738/tcp i sudo ufw allow 64738/udp. Niektórzy dostawcy mają też firewall w panelu klienta.

    Komputer w domu: ustaw na routerze przekierowanie portu 64738 TCP i UDP na ten komputer.

  6. Połącz się Mumcordem

    W Mumcordzie kliknij + na pasku serwerów i wpisz adres IP lub nazwę swojego serwera. Nazwa jest wygodniejsza niż IP: utwórz u dostawcy domeny rekord A, np. voice.example.org, wskazujący na to IP.

    Przy pierwszym połączeniu Mumcord pokazuje odcisk certyfikatu. Tak ma być: serwer przy pierwszym starcie utworzył własny certyfikat. Potwierdź go raz; jeśli później niespodziewanie się zmieni, Mumcord cię ostrzeże.

  7. Zaproś ludzi

    Wyślij swoim ludziom link. Kliknięcie otwiera Mumcorda (lub dowolnego innego klienta Mumble) i od razu łączy; dodaj na końcu nazwę kanału, by trafić na właściwy kanał:

    Terminal
    mumble://voice.example.org
    mumble://voice.example.org/Gaming

    Kto nie ma jeszcze Mumcorda, znajdzie go na mumcord.app. Hasło serwera wyślij osobno, nie razem z linkiem.

  8. Skonfiguruj kanały i uprawnienia

    Tworzenie kanałów i nadawanie uprawnień pojawi się w Mumcordzie w Epic 4. Do tego czasu użyj raz oficjalnego klienta Mumble:

    1. Połącz się z nazwą użytkownika SuperUser i hasłem z .env.

    2. Kliknij prawym przyciskiem górny kanał → Dodaj, dla każdego kanału, który chcesz mieć.

    3. Żeby nie potrzebować za każdym razem SuperUsera: połącz się Mumcordem pod własnym nickiem i kliknij swój nick w lewym dolnym rogu → Zarejestruj się na tym serwerze. Potem jako SuperUser: górny kanał → Edytuj → Grupy → dodaj swój nick do grupy admin.

Utrzymanie i problemy

Jak zaktualizować serwer?

Wpisz nową wersję po image: w docker-compose.yml (lista na Docker Hub), a potem uruchom docker compose pull i docker compose up -d. Kanały i rejestracje zostają zachowane.

Jak zrobić kopię zapasową?

Wszystko, co ważne, jest w wolumenie mumble_data. Zatrzymaj, spakuj, wznów: docker compose stop, potem docker run --rm -v mumble_data:/data -v "$PWD":/backup alpine tar czf /backup/mumble-backup.tar.gz -C /data . i na koniec docker compose start.

Nikt nie może połączyć się z serwerem.

Prawie zawsze port jest zamknięty. Sprawdź przez docker compose ps, czy kontener działa, potem firewall, firewall dostawcy i router (krok 5). Jeśli serwer stoi w domu, z wnętrza własnej sieci publiczny adres może być nieosiągalny; wtedy testuj z lokalnym IP.

Połączenie działa, ale głos się opóźnia.

Zwykle otwarty jest tylko TCP, a nie UDP. Mumcord sam przechodzi wtedy na TCP. To działa, ale wolniej. Otwórz też UDP 64738.

Nie pamiętam hasła SuperUser.

Wpisz nowe w .env i uruchom docker compose up -d. Serwer stosuje je przy każdym starcie.

Więcej pomocy znajdziesz w wiki i w zgłoszeniach na GitHubie. Wiki → Issues →