For the complete documentation index, see llms.txt. This page is also available as Markdown.

Запуск MikoPBX с помощью docker compose

Установка MikoPBX с помощью docker compose

Для работы с MikoPBX в контейнере необходимо установить docker и docker compose, а также создать пользователя и папки для хранения настроек конфигурации и записей разговоров по инструкции

Установка докера и cоздание пользователя и каталогов

Запуск с помощью docker compose

Вот пример файла docker-compose.yml, который может быть использован для управления вашим контейнером MikoPBX через Docker Compose:

docker-compose.yml
services:
  mikopbx:
    container_name: "mikopbx"
    image: "ghcr.io/mikopbx/mikopbx:latest"
    network_mode: "host"
    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 адрес.

На этом настройка завершена, можно настраивать учетные записи и выполнять звонки.

Не забудьте правильно настроить внешний firewall для Вашей АТС. Инструкцию по настройке Вы можете найти по ссылке.

Переменные окружения для конфигурирования 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?