Vodnik

Postavi svoj strežnik Mumble

Mumcord ne potrebuje posebnega strežnika: dovolj je navaden strežnik Mumble. Z Dockerjem tvoj teče v približno 15 minutah, tudi če tega še nikoli nisi počel.

  • 64738 vrata, TCP in UDP
  • 1 jedro in 512 MB RAM-a zmoreta več deset ljudi
  • 0 € odprta koda; plačaš samo računalnik

V osmih korakih

  1. Izberi računalnik

    Najlažja izbira je majhen strežnik Linux pri ponudniku gostovanja (»VPS« za nekaj evrov na mesec). Teče neprekinjeno in ima stalen naslov. Deluje tudi računalnik doma ali Raspberry Pi; takrat moraš na usmerjevalniku odpreti vrata (5. korak).

    Mumble potrebuje zelo malo moči. Pomembnejša je povezava: vsaka oseba, ki govori, porabi približno 40–100 kbit/s.

  2. Namesti Docker

    Prijavi se na strežnik prek SSH. Na Linuxu ta ukaz namesti Docker skupaj s Compose. Na Windows in macOS namesto tega uporabi Docker Desktop.

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

    Če vidiš številko različice, si pripravljen.

  3. Ustvari mapo in geslo

    Ustvari mapo in ustvari naključno geslo za skrbniški račun 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=

    Drugo datoteko shrani kot .env in vanjo prilepi ustvarjeno geslo (na primer z nano .env). Če naj ne pride noter vsak, ki pozna naslov, nastavi SERVER_PASSWORD, ki ga daš svojim ljudem. Nato chmod 600 .env prepreči drugim uporabnikom računalnika dostop do datoteke.

  4. Datoteka docker-compose.yml

    Ta datoteka gre v isto mapo kot docker-compose.yml. Ime strežnika in pozdravno besedilo spremeni po želji; ostalo je v redu, kot je.

    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:

    Zadnji dve nastavitvi sta tam zaradi Mumcorda: prilepljene slike so lahko večje in dolga sporočila se ne odrežejo. Vse druge nastavitve sledijo istemu vzorcu MUMBLE_CONFIG_…, glej dokumentacijo slike.

  5. Zaženi ga in odpri vrata

    Zaženi strežnik in na hitro poglej dnevnik:

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

    Ko piše Server listening on 0.0.0.0:64738, teče. Zdaj morajo biti vrata 64738 za TCP in UDP dosegljiva od zunaj:

    Strežnik s požarnim zidom (na primer ufw): sudo ufw allow 64738/tcp in sudo ufw allow 64738/udp. Nekateri ponudniki imajo požarni zid tudi v svoji uporabniški plošči.

    Računalnik doma: na usmerjevalniku nastavi posredovanje vrat 64738 TCP in UDP na ta računalnik.

  6. Poveži se z Mumcordom

    V Mumcordu klikni + v vrstici strežnikov in vnesi IP-naslov ali ime svojega strežnika. Ime je lepše kot IP: pri ponudniku domene ustvari zapis A, na primer voice.example.org, ki kaže na IP.

    Ob prvi povezavi Mumcord pokaže prstni odtis certifikata. To je pričakovano: strežnik je ob prvem zagonu ustvaril lasten certifikat. Enkrat ga potrdi; če se pozneje nepričakovano spremeni, te Mumcord opozori.

  7. Povabi ljudi

    Svojim ljudem pošlji povezavo. Klik nanjo odpre Mumcord (ali katerikoli drug odjemalec Mumble) in se takoj poveže; na koncu dodaj ime kanala, da pristanejo v pravem kanalu:

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

    Kdor Mumcorda še nima, ga najde na mumcord.app. Geslo strežnika pošlji ločeno od povezave.

  8. Nastavi kanale in dovoljenja

    Ustvarjanje kanalov in dodeljevanje dovoljenj pride v Mumcord z Epic 4. Do takrat enkrat uporabi uradni odjemalec Mumble:

    1. Poveži se z uporabniškim imenom SuperUser in geslom iz .env.

    2. Desni klik na zgornji kanal → Dodaj, za vsak kanal, ki ga želiš.

    3. Da ne potrebuješ vsakič SuperUserja: poveži se z Mumcordom pod svojim imenom in klikni svoje ime spodaj levo → Registriraj se na tem strežniku. Nato kot SuperUser: zgornji kanal → Uredi → Skupine → dodaj svoje ime v skupino admin.

Vzdrževanje in težave

Kako posodobim strežnik?

Novo različico vpiši za image: v docker-compose.yml (glej seznam na Docker Hub), nato zaženi docker compose pull in docker compose up -d. Kanali in registracije se ohranijo.

Kako naredim varnostno kopijo?

Vse pomembno je v nosilcu mumble_data. Ustavi, zapakiraj, nadaljuj: docker compose stop, nato docker run --rm -v mumble_data:/data -v "$PWD":/backup alpine tar czf /backup/mumble-backup.tar.gz -C /data . in na koncu docker compose start.

Nihče ne more doseči strežnika.

Skoraj vedno so vrata zaprta. Z docker compose ps preveri, ali vsebnik teče, nato preveri požarni zid, požarni zid ponudnika in usmerjevalnik (5. korak). Če je strežnik doma, javnega naslova iz lastnega omrežja morda ne dosežeš; takrat preizkusi z lokalnim IP-jem.

Povezava deluje, glas pa zaostaja.

Običajno je odprt samo TCP, ne pa UDP. Mumcord takrat sam preklopi na TCP. To deluje, a je počasneje. Odpri še UDP 64738.

Pozabil sem geslo za SuperUser.

Vpiši novo v .env in zaženi docker compose up -d. Strežnik ga uveljavi ob vsakem zagonu.

Več pomoči najdeš v wikiju in v prijavah (issues) na GitHubu. Wiki → Issues →