Установка через apt (одна команда)
Пакет Debian monopbx — самый быстрый способ запустить MonoPbx на чистом сервере Ubuntu 24.04 LTS (amd64). Он устанавливает Docker из собственных пакетов Ubuntu, производственный набор Compose и команду monopbx и запускает всё как службу systemd monopbx.service. Caddy перед сервером получает сертификат Let's Encrypt, отдаёт консоль по HTTPS и передаёт SIP WebSocket веб-софтфона по адресу wss://<ваш домен>/sip.
:::note Предварительная версия
До первого релиза в репозитории лежат предварительные сборки (0.1.0~edge…). Другие системы (Ubuntu 22.04, Debian 12, arm64) отклоняются с понятным сообщением, и ничего не меняется.
:::
Одна команда
Сначала направьте DNS-имя на сервер (запись A), затем:
curl -fsSL https://ilinaya.github.io/monopbx-apt/install.sh | sudo bash -s -- --domain pbx.example.com --email admin@example.com
Скрипт проверяет систему, добавляет APT-репозиторий MonoPbx и проверяет его ключ подписи (отпечаток 320D C78E FDC8 439C 04F5 FCA6 3E87 FE3D 4C71 5372), выполняет apt-get install monopbx, затем monopbx setup с вашими параметрами. Без --domain сервер получает имя <public-ip>.sslip.io (публичная DNS-служба, которая отвечает адресом, записанным в имени), поэтому сертификат работает и без собственного домена. Указывая --email, вы принимаете Subscriber Agreement Let's Encrypt; на этот адрес приходят уведомления об истечении срока.
Или по шагам через apt
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://ilinaya.github.io/monopbx-apt/key.gpg | sudo tee /etc/apt/keyrings/monopbx.gpg >/dev/null
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/monopbx.gpg] https://ilinaya.github.io/monopbx-apt stable main" | sudo tee /etc/apt/sources.list.d/monopbx.list
sudo apt-get update && sudo apt-get install -y monopbx
sudo monopbx setup --domain pbx.example.com --email admin@example.com
Что делает setup
| Шаг | Подробности |
|---|---|
| Предварительная проверка | Ubuntu 24.04, 2 ЦП, 4 ГБ ОЗУ, 20 GiB свободного места в /var/lib, свободные порты 80 и 443, публичный IP, DNS домена. |
| Секреты | mpbx init записывает все секреты в /opt/mpbx/compose/prod/.env (режим 0600, копия в /etc/mpbx/secrets.env). Ключ восстановления показывается один раз: в терминале нужно ввести одну его группу повторно; без терминала он печатается один раз, поэтому надёжно сохраните вывод. |
| Фронт | Caddy на 80/443: сертификат (Let's Encrypt, Caddy продлевает его сам), консоль и wss://<домен>/sip к SIP-краю. |
| SIP | 5060 UDP/TCP и SIP поверх TLS на 5061. Сертификат TLS берётся из хранилища сертификатов АТС, которое само заказывает сертификат Let's Encrypt на то же имя через Caddy и автоматически продлевает его. |
| Брандмауэр | Если ufw включён, открывает 80/tcp, 443/tcp, 5060, 5061/tcp и диапазон RTP. Откройте те же порты в облачном брандмауэре. |
| Служба | monopbx.service (псевдоним mpbx.service) запускается и включается; затем самопроверка. |
| Итог | URL консоли, одноразовая ссылка настройки для первого администратора и ключ восстановления. |
Откройте ссылку настройки (https://<домен>/setup#token=…), чтобы создать первого администратора: адрес электронной почты, пароль, затем второй фактор TOTP (отсканируйте QR-код приложением-аутентификатором). Потеряли ссылку? sudo monopbx setup-url выдаёт новую.
Параметры
--domain FQDN публичное имя; его запись A должна указывать на этот сервер (по умолчанию <public-ip>.sslip.io)
--email ADDRESS контакт для Let's Encrypt; обязателен, если не указан --no-tls
--no-tls без публичного сертификата: Caddy использует собственный внутренний УЦ (браузеры предупреждают). Для тестов и закрытых сетей
--public-ip IP не определять публичный IP (за NAT укажите адрес, до которого доходят телефоны)
--relay URL push-ретранслятор для мобильных приложений (по умолчанию ретранслятор MonoPbx)
--no-relay не регистрироваться в push-ретрансляторе (мобильные приложения звонят только на переднем плане)
--turn запустить coturn для софтфонов за строгим NAT
--yes не спрашивать «Continue?»
Любой другой параметр install.sh установщика для ВМ можно передать после --, например -- --calls 500.
Повседневные команды
monopbx status # версия, служба, контейнеры
monopbx logs mpbx # журнал одной службы (mpbx, mpbx-sip, caddy, postgres, ...)
sudo monopbx selftest # контейнеры, HTTPS через Caddy, wss /sip, SIP TLS 5061, mpbx selftest
sudo monopbx backup # pg_dump в /var/backups/monopbx (0600); --with-secrets копирует и .env
sudo monopbx setup-url # новая ссылка для первого администратора
sudo monopbx ctl rollback # любая команда mpbx-ctl
Копируйте резервные копии и /opt/mpbx/compose/prod/.env за пределы сервера. Полные зашифрованные резервные копии описаны в разделе Резервное копирование и восстановление.
Обновления
sudo apt-get update && sudo apt-get upgrade устанавливает следующий релиз: шаг после установки пакета делает pg_dump, затем запускает mpbx-ctl upgrade (снимок, проверки, миграции, самопроверка, автоматический откат при ошибке). Если обновление не завершилось, MonoPbx продолжает работать на предыдущем релизе, а sudo monopbx upgrade повторяет попытку. Задайте MONOPBX_SKIP_UPGRADE=1 для apt-get, чтобы отложить обновление.
Удаление
sudo monopbx uninstall # останавливает и удаляет службу и контейнеры; данные и секреты сохраняются
sudo monopbx uninstall --purge # также удаляет тома с данными и /opt/mpbx (нужно ввести имя хоста)
sudo apt-get remove monopbx # удаляет пакет; никогда не останавливает MonoPbx и не удаляет данные
Docker остаётся установленным.