Установка на Ubuntu 24.04 (ВМ)
Установщик для ВМ разворачивает MonoPbx на одном узле на Ubuntu 24.04 LTS (amd64 или arm64) и больше ничего: без Debian и без RHEL. Внутри он использует производственный набор Docker Compose. Установщик добавляет Docker, секреты, HTTPS, юнит systemd и самопроверку вокруг него.
:::warning Домен загрузки-заглушка
Команда однострочной установки использует get.mpbx.ilinaia.com. Этот домен является заглушкой: записи DNS не существует, и релиз не опубликован. Пока этого не произошло, соберите набор самостоятельно (см. «Сборка набора») и запускайте установщик с заданными MPBX_BUNDLE_FILE и MPBX_BUNDLE_SHA256.
:::
# once the download domain exists
curl -fsSL https://get.mpbx.ilinaia.com/install.sh | sudo bash
# today, with a bundle you built
MPBX_BUNDLE_FILE=/path/mpbx-bundle.tar.gz MPBX_BUNDLE_SHA256=<sha256> sudo -E bash install.sh
Никогда не запускайте установщик на рабочей станции. Он отказывается работать с любой системой, кроме Ubuntu 24.04, но всё равно устанавливает пакеты и пишет в /etc и /opt. Сначала попробуйте его на одноразовой виртуальной машине.
:::note Статус проверки
Собственные тесты установщика запускаются из deploy/installer/test. Полная установка на одноразовой виртуальной машине Ubuntu 24.04 — ручная проверка владельца (ожидает выполнения). Исполняемые блоки руководства проверяются скриптом site/scripts/check-guides.mjs.
:::
Что он делает
| Шаг | Подробности |
|---|---|
| Предварительная проверка | Ubuntu 24.04, x86_64 или aarch64, systemd, root, 2 ЦП, 4 ГБ ОЗУ, 20 GiB свободного места в /var/lib, порты 80 и 443 и веб-порт свободны, терминал (для подтверждения ключа восстановления), публичный IP и DNS для --domain указывает на этот IP. |
| Docker | Пропускается, если Docker Engine 24+ с Compose 2.24+ уже работает. Иначе используется официальный репозиторий apt Docker; отпечаток ключа подписи должен совпадать с закреплённым в скрипте, иначе ничего не устанавливается. |
| Набор | Загружает mpbx-bundle.tar.gz и SHA256SUMS, проверяет SHA-256 и устанавливает набор в /opt/mpbx. |
| Секреты | Запускает mpbx init. В терминале показывает ключ восстановления один раз и просит перепечатать одну группу символов, прежде чем что-либо записать. Также выводит одноразовую ссылку настройки для первого администратора. |
| Служба | /etc/systemd/system/mpbx.service (включён) и вспомогательная утилита /usr/local/sbin/mpbx-ctl. |
| Самопроверка | mpbx-ctl selftest проверяет юнит, каждый контейнер, API по HTTP и HTTPS, отсутствие прослушивания портов баз данных на хосте и режим 0600 у .env. |
| Брандмауэр | Выводит правила, которые нужно открыть. Сам брандмауэр не меняет. |
Параметры
--domain FQDN public name (its A record must point at this server); with --accept-acme-terms enables ACME
--accept-acme-terms accept the ACME CA's subscriber agreement (Let's Encrypt by default)
--acme-email ADDRESS contact for the CA's expiry notices
--acme-directory URL another ACME CA (https only)
--public-ip IP skip the public-IP lookup
--no-tls | --tls do not publish 80/443 | publish them (default)
--http-port PORT plain web/API port (default 8080)
--channel stable|beta|nightly, --version X
--unattended no terminal: the recovery key is printed once to stdout and cannot be confirmed
--yes do not ask "Continue?"
Также существуют --skip-dns-check, --force-bundle, --skip-resource-checks и --docker-only.
Брандмауэр
| Порт | Зачем |
|---|---|
| 80/tcp, 443/tcp | Проверка ACME и перенаправление; веб-клиент, API и WebSocket |
| 5060/udp+tcp, 5061/tcp | SIP. Роль граничного узла SIP пока недоступна, поэтому сейчас здесь ничего не слушает. |
| 30000-40000/udp | RTP (rtpengine). Без него звонки устанавливаются, но без звука. |
| 3478 и диапазон ретрансляции | только с профилем turn |
Никогда не открывайте 5432, 6379, 8123, 9000 или 22222 (управляющий порт rtpengine не имеет аутентификации). Набор не публикует ни один из них. Порты, опубликованные Docker, обходят ufw.
Повседневные команды
sudo mpbx-ctl status
sudo mpbx-ctl logs mpbx
sudo mpbx-ctl selftest
sudo mpbx-ctl restart
sudo mpbx-ctl stop
sudo mpbx-ctl setup-url # a new single-use setup URL; the previous one stops working
sudo mpbx-ctl version
Настройки и секреты хранятся в /opt/mpbx/compose/prod/.env. Сохраняйте резервную копию этого файла вместе с томами Docker (см. Резервное копирование и восстановление).
Повторный запуск безопасен
Каждый шаг сходится к одному и тому же результату. Существующие секреты никогда не перевыпускаются, изменённые вами значения .env сохраняются, и ничего не удаляется. Неудачную установку можно запустить заново. Обновление и откат (mpbx upgrade) пока не реализованы: набор другой версии отклоняется, если не передан --force-bundle.
Удаление
sudo mpbx-ctl uninstall # asks first; keeps the Docker volumes and .env
sudo mpbx-ctl uninstall --delete-data # also deletes the volumes and /opt/mpbx; you must type this host's name
Одного --yes недостаточно для удаления данных. Docker, его источник apt и ваш брандмауэр никогда не затрагиваются. Удаление данных также удаляет мастер-ключ: без резервной копии и её парольной фразы его нельзя восстановить.
Сборка набора
Из копии репозитория запустите deploy/installer/build-bundle.sh --version X.Y.Z --images-file images.env --out dist. Команда создаёт mpbx-bundle.tar.gz и SHA256SUMS. Файл images.env задаёт MPBX_IMAGE и MPBX_RTPENGINE_IMAGE. В версии v1 подписи набора и образов не используются: целостность обеспечивается HTTPS до сервера загрузки, SHA-256 набора, закреплённым ключом Docker и образами, закреплёнными по digest.