Запуск MikoPBX с помощью docker compose
Установка MikoPBX с помощью docker compose
Для работы с MikoPBX в контейнере необходимо установить docker и docker compose, а также создать пользователя и папки для хранения настроек конфигурации и записей разговоров по инструкции
Установка докера и cоздание пользователя и каталоговЗапуск с помощью docker compose
Вот пример файла docker-compose.yml, который может быть использован для управления вашим контейнером MikoPBX через Docker Compose:
services:
mikopbx:
container_name: "mikopbx"
image: "ghcr.io/mikopbx/mikopbx-x86-64"
network_mode: "host"
cap_add:
- NET_ADMIN
entrypoint: "/sbin/docker-entrypoint"
hostname: "mikopbx-in-a-docker"
volumes:
- /var/spool/mikopbx/cf:/cf
- /var/spool/mikopbx/storage:/storage
tty: true
environment:
- ID_WWW_USER=${ID_WWW_USER}
- ID_WWW_GROUP=${ID_WWW_GROUP}
# Изменение имени станции через переменные окружения
- PBX_NAME=MikoPBX-in-Docker
# Изменение стандартного порта SSH на 23
- SSH_PORT=23
# Изменение стандартного порта WEB на 8080
- WEB_PORT=8080
# Изменение стандартного порта WEB HTTPS на 8443
- WEB_HTTPS_PORT=8443Сохраните содержимое в файл docker-compose.yml, выполните необходимые корректировки и запускайте MikoPBX коммандой:
Запуск нескольких MikoPBX на одном хосте
Режим без изоляции сети хоста от контейнеров (–net=host)
Также можно оганизовать запуск нескольких контенеров MikoPBX на одном хосте, но здесь надо учитывать особенности работы Docker с портами, если не использовать режим –net=host то это приведет к высокой нагрузке на процессор хостовой системы, т.к. Docker создает для каждого выделенного порта отдельное правило в Iptables.
С включенным режимом –net=host вам необходимо вручную следить за распределением доступных портов между запускаемыми контейнерами и встроенными приложениями. Например, для запуска двух контейнеров с MikoPBX на одном хосте, можно использовать следующий конфигурационный файл:
Сохраните содержимое в файл docker-compose.yml, выполните необходимые корректировки и запускайте MikoPBX коммандой:
Режим сетевого моста (–net=bridge)
Существует вариант запуска контейнеров с MikoPBX в режиме –net=bridge, но как описано выше для использования этого режима необходимо или существенно ограничить диапазон RTP портов, или открывать к ним доступ на хостовой машине не используя возможности Docker.
Для этого вам необходимо написать небольшой скрипт, для определения имени текущего мостового интерфейса и IP адреса каждого контейнера, и после запуска docker compose добавить необходимые правила iptables для диапазона RTP портов следующим образом:
Опишем несколько контейнеров в файле docker-compose.yaml, определим разные порты для веб интерфейса, SIP портов и диапазоны RTP портов, чтобы они не пересекались.
Создаем папку для скриптов
Сохраняем файлы start-multiple-mikopbx.sh и docker-compose.yaml в эту папку.
Устанавливаем необходимые зависимости для работы скрипта.
Переходим в нашу папку, добавляем права на выполнение и запускаем наш скрипт.
Пока ожидаем запуск контейнеров, проверяем настройки брендмауера на хосте, при необходимости открваем те порты, которые указаны в нашем docker-compose.yaml файле, а именно:
TCP/UDP порты 5060 и 6060 для SIP
UDP диапазоны 10000-10800 и 20000-20800 для передачи звука по RTP
TCP порты 8443 и 9443 для HTTPS протокола, для работы Web интерфейса.
Входим по очереди на каждую из станций по адресам:
https://<IP хостовой машины>:8443
https://<IP хостовой машины>:9443
Для входа в веб-интерфейс первой АТС MikoPBX используйте логин admin и пароль mikopbx-first-password
Для входа в веб-интерфейс второй АТС MikoPBX используйте логин admin и пароль mikopbx-second-password
В каждой машине должен быть включен режим NAT, указывая что контейнер находится за маршрутизатором в настройках сетевого интерфейса. Если станции будут использоваться внутри локальной сети, то в поле внешнего IP прописваем локальный IP адрес хостовой машины, в противном случе ее публичный IP адрес.
Важное замечание! Один из наших контейнеров использует проброс с SIP порта с изменением его значения 5060 -> 6060. В данном случае, для корректной работы системы, необходимо добавить внешнее значение SIP порта в настройках NAT в разделе сетевых интерфейсов MikoPBX. Эту настройку также можно сделать задав соответвующее значение переменной окружения EXTERNAL_SIP_PORT=6060 в файле docker-compose.
На этом настройка завершена, можно настраивать учетные записи и выполнять звонки.
Переменные окружения для конфигурирования MikoPBX
Ниже перечислены некоторые переменные окружения, которые позволят скорректировать используемые MikoPBX порты и настройки.
SSH_PORT - порт для SSH (22)
WEB_PORT - порт для работы web интерфейса по протоколу HTTP (80)
WEB_HTTPS_PORT - порт для работы web интерфейса по протоколу HTTPS (443)
SIP_PORT - порт для подключения SIP клиента (5060)
TLS_PORT - порт для подключения SIP клиента с шифрованием (5061)
RTP_PORT_FROM - начало диапазона RTP портов, передача голоса (10000)
RTP_PORT_TO - конец диапазона RTP портов, передача голоса (10800)
IAX_PORT - порт для подключения IAX клиентов (4569)
AMI_PORT - порт AMI (5038)
AJAM_PORT - порт AJAM используется для подключения панели телефонии для 1С (8088)
AJAM_PORT_TLS - порт AJAM используется для подключения панели телефонии для 1С (8089)
BEANSTALK_PORT - порт для сервера очередей Beanstalkd (4229)
REDIS_PORT - порт для сервера Redis (6379)
GNATS_PORT - порт для сервера gnatsd (4223)
ID_WWW_USER - идентификатор пользователя www-user (можно задать выражением
$(id -u www-user), где www-user имя НЕ root пользователя)ID_WWW_GROUP - идентификатор группы www-user (можно задать выражением
$(id -g www-user), где www-user имя НЕ root группы)WEB_ADMIN_LOGIN - логин для доступа в Web интерфейс
WEB_ADMIN_PASSWORD - пароль для доступа в Web интерфейс
Полный список всех возможных параметров настроек доступен в исходном коде по ссылке.
Last updated
Was this helpful?

