Ръководство

Направи си собствен Mumble сървър

Mumcord няма нужда от специален сървър: обикновен Mumble сървър е напълно достатъчен. С Docker твоят е готов за около 15 минути, дори ако никога не си правил такова нещо.

  • 64738 порт, TCP и UDP
  • 1 ядро и 512 MB RAM стигат за десетки хора
  • 0 € отворен код; плащаш само за машината

В осем стъпки

  1. Избери машина

    Най-лесният избор е малък Linux сървър от хостинг доставчик („VPS“ за няколко евро на месец). Работи денонощно и има фиксиран адрес. Става и компютър у дома или Raspberry Pi; тогава трябва да отвориш порт на рутера си (стъпка 5).

    Mumble има нужда от много малко мощност. По-важна е връзката: всеки, който говори, използва около 40–100 kbit/s.

  2. Инсталирай Docker

    Влез в сървъра през SSH. Под Linux тази команда инсталира Docker заедно с Compose. Под Windows и macOS вместо това използвай Docker Desktop.

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

    Ако видиш номер на версия, си готов.

  3. Създай папка и парола

    Създай папка и генерирай случайна парола за администраторския акаунт 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=

    Запази втория файл като .env и постави в него генерираната парола (например с nano .env). Ако не всеки с адреса трябва да може да влезе, задай SERVER_PASSWORD, която да дадеш на своите хора. След това chmod 600 .env пази файла от другите потребители на машината.

  4. Файлът docker-compose.yml

    Този файл отива в същата папка като docker-compose.yml. Промени името на сървъра и текста за добре дошли, както искаш; останалото е добре както си е.

    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:

    Последните две настройки са заради Mumcord: поставените изображения могат да са по-големи, а дългите съобщения не се отрязват. Всяка друга настройка следва същия модел MUMBLE_CONFIG_…, виж документацията на образа.

  5. Стартирай го и отвори порта

    Стартирай сървъра и хвърли бърз поглед на лога:

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

    Щом пише Server listening on 0.0.0.0:64738, работи. Сега порт 64738 за TCP и UDP трябва да е достъпен отвън:

    Сървър със защитна стена (например ufw): sudo ufw allow 64738/tcp и sudo ufw allow 64738/udp. Някои доставчици имат и защитна стена в клиентския си панел.

    Компютър у дома: настрой пренасочване на порт 64738 TCP и UDP на рутера си към този компютър.

  6. Свържи се с Mumcord

    В Mumcord кликни + в лентата със сървъри и въведи IP адреса или името на сървъра си. Името е по-удобно от IP: създай A запис при доставчика на домейна си, например voice.example.org, който сочи към IP адреса.

    При първото свързване Mumcord показва отпечатъка на сертификата. Това е нормално: сървърът е създал собствен сертификат при първото си стартиране. Потвърди го веднъж; ако по-късно се промени неочаквано, Mumcord ще те предупреди.

  7. Покани хора

    Изпрати на хората си линк. Клик върху него отваря Mumcord (или друг Mumble клиент) и се свързва веднага; добави име на канал в края, за да попаднат в правилния канал:

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

    Който още няма Mumcord, ще го намери на mumcord.app. Изпращай паролата за сървъра отделно от линка.

  8. Настрой канали и права

    Създаването на канали и раздаването на права идва в Mumcord с Epic 4. Дотогава използвай веднъж официалния клиент на Mumble:

    1. Свържи се с потребителско име SuperUser и паролата от .env.

    2. Десен клик върху най-горния канал → Добави, за всеки канал, който искаш.

    3. За да не ти трябва SuperUser всеки път: свържи се с Mumcord под собственото си име и кликни името си долу вляво → Регистрирай се на този сървър. След това като SuperUser: най-горният канал → Редактирай → Групи → добави името си в групата admin.

Поддръжка и проблеми

Как да обновя сървъра?

Сложи новата версия след image: в docker-compose.yml (виж списъка в Docker Hub), после изпълни docker compose pull и docker compose up -d. Каналите и регистрациите се запазват.

Как да направя резервно копие?

Всичко важно се намира в тома mumble_data. Пауза, архивиране, продължаване: docker compose stop, после docker run --rm -v mumble_data:/data -v "$PWD":/backup alpine tar czf /backup/mumble-backup.tar.gz -C /data . и накрая docker compose start.

Никой не може да се свърже със сървъра.

Почти винаги портът е затворен. Провери с docker compose ps, че контейнерът работи, после защитната стена, защитната стена на доставчика и рутера си (стъпка 5). Ако сървърът е у дома, може да не достигаш публичния адрес от собствената си мрежа; тогава тествай с локалния IP.

Свързването работи, но гласът закъснява.

Обикновено е отворен само TCP, а не UDP. Тогава Mumcord сам преминава на TCP. Това работи, но е по-бавно. Отвори и UDP 64738.

Забравих паролата на SuperUser.

Сложи нова в .env и изпълни docker compose up -d. Сървърът я прилага при всяко стартиране.

Още помощ има в уикито и в issues в GitHub. Wiki → Issues →