Guia

Aloja o teu próprio servidor Mumble

O Mumcord não precisa de um servidor especial: basta um servidor Mumble normal. Com o Docker, o teu fica a funcionar em cerca de 15 minutos, mesmo que nunca tenhas feito isto antes.

  • 64738 porta, TCP e UDP
  • 1 núcleo e 512 MB de RAM aguentam dezenas de pessoas
  • 0 € open source; só pagas a máquina

Em oito passos

  1. Escolhe uma máquina

    A opção mais fácil é um pequeno servidor Linux de um fornecedor de alojamento (um “VPS” por poucos euros por mês). Funciona 24 horas por dia e tem um endereço fixo. Um computador em casa ou um Raspberry Pi também serve; nesse caso, tens de abrir uma porta no router (passo 5).

    O Mumble precisa de muito pouca potência. A ligação importa mais: cada pessoa a falar usa cerca de 40–100 kbit/s.

  2. Instala o Docker

    Entra no servidor por SSH. No Linux, este comando instala o Docker, incluindo o Compose. No Windows e no macOS, usa antes o Docker Desktop.

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

    Se vires um número de versão, está tudo pronto.

  3. Cria uma pasta e uma palavra-passe

    Cria uma pasta e gera uma palavra-passe aleatória para a conta de administração 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=

    Guarda o segundo ficheiro como .env e cola lá a palavra-passe gerada (por exemplo com nano .env). Se nem toda a gente que tem o endereço deve poder entrar, define uma SERVER_PASSWORD que dás ao teu pessoal. Depois, chmod 600 .env impede que outros utilizadores da máquina acedam ao ficheiro.

  4. O docker-compose.yml

    Este ficheiro vai para a mesma pasta, como docker-compose.yml. Muda o nome do servidor e o texto de boas-vindas como quiseres; o resto está bem como está.

    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:

    As duas últimas definições existem por causa do Mumcord: as imagens coladas podem ser maiores e as mensagens longas não são cortadas. Todas as outras definições seguem o mesmo padrão MUMBLE_CONFIG_…; vê a documentação da imagem.

  5. Arranca e abre a porta

    Arranca o servidor e dá uma vista de olhos rápida ao log:

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

    Quando aparecer Server listening on 0.0.0.0:64738, está a funcionar. Agora a porta 64738 para TCP e UDP tem de estar acessível a partir do exterior:

    Servidor com firewall (por exemplo ufw): sudo ufw allow 64738/tcp e sudo ufw allow 64738/udp. Alguns fornecedores também têm uma firewall na área de cliente.

    Computador em casa: configura no router um reencaminhamento de portas para 64738 TCP e UDP para este computador.

  6. Liga-te com o Mumcord

    No Mumcord, clica em + na barra de servidores e introduz o endereço IP ou o nome do teu servidor. Um nome é mais simpático do que um IP: cria um registo A no teu fornecedor de domínio, como voice.example.org, a apontar para o IP.

    Na primeira ligação, o Mumcord mostra a impressão digital do certificado. É normal: o servidor criou o seu próprio certificado no primeiro arranque. Confirma-a uma vez; se mudar inesperadamente mais tarde, o Mumcord avisa-te.

  7. Convida pessoas

    Envia um link ao teu pessoal. Ao clicar nele, abre-se o Mumcord (ou qualquer outro cliente Mumble) e a ligação é feita de imediato; acrescenta o nome de um canal no fim para ir parar ao canal certo:

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

    Quem ainda não tem o Mumcord encontra-o em mumcord.app. Envia a palavra-passe do servidor separadamente do link.

  8. Configura canais e permissões

    Criar canais e atribuir permissões chega ao Mumcord com o Epic 4. Até lá, usa uma vez o cliente oficial do Mumble:

    1. Liga-te com o nome de utilizador SuperUser e a palavra-passe do .env.

    2. Clique direito no canal de topo → Adicionar, para cada canal que quiseres.

    3. Para não precisares do SuperUser sempre: liga-te com o Mumcord com o teu próprio nome e clica no teu nome no canto inferior esquerdo → Registar neste servidor. Depois, como SuperUser, canal de topo → Editar → Grupos → adiciona o teu nome ao grupo admin.

Manutenção e problemas

Como atualizo o servidor?

Coloca a nova versão depois de image: no docker-compose.yml (vê a lista no Docker Hub) e depois executa docker compose pull e docker compose up -d. Os canais e os registos são mantidos.

Como faço uma cópia de segurança?

Tudo o que importa está no volume mumble_data. Pausar, empacotar, retomar: docker compose stop, depois docker run --rm -v mumble_data:/data -v "$PWD":/backup alpine tar czf /backup/mumble-backup.tar.gz -C /data . e, por fim, docker compose start.

Ninguém consegue chegar ao servidor.

Quase sempre a porta está fechada. Verifica com docker compose ps se o contentor está a correr, depois a firewall, a firewall do fornecedor e o teu router (passo 5). Se o servidor estiver em casa, pode não ser possível chegar ao endereço público a partir da tua própria rede; nesse caso, testa com o IP local.

A ligação funciona, mas a voz tem atraso.

Normalmente só o TCP está aberto, não o UDP. O Mumcord passa então sozinho para TCP. Funciona, mas é mais lento. Abre também o UDP 64738.

Esqueci-me da palavra-passe do SuperUser.

Coloca uma nova no .env e executa docker compose up -d. O servidor aplica-a em cada arranque.

Há mais ajuda na wiki e nas issues do GitHub. Wiki → Issues →