====== Установка MikoPBX ====== [[index|Обратно к перечню инструкций]] **MikoPBX** - полноценная операционная система и телефонный сервер. Поставляется в виде образа (файл *.iso, *.img), который необходимо установить на ваш компьютер, сервер или в облако\\ **Инструкции по обновлению доступны по [[update|ссылке]]**... На текущий момент существует несколько способов установки MikoPBX: - **VM** - Установка АТС на **виртуальную машину** - **Cloud** - Установка АТС в облако (Yandex или Mail.ru) - **Live USB** - установка MikoPBX с **USB** на отдельно выделенный сервер. ПК должен поддерживать загрузку с USB. - **Bootable USB** - **загрузочный USB диск**, с которого будет работать MikoPBX. При загрузке с USB все изменения в конфигурации действуют до первой перезагрузки. ПК должен поддерживать загрузку с USB. - **Live CD** - установка MikoPBX с **CD-диска** на отдельно выделенный сервер. ПК должен поддерживать загрузку с CD. - **Docker** - требования **linux 5**+ и установленный **docker** ===== Требование к сетевому каналу ===== Пример расчета необходимой пропускной способности канала для различных кодеков на 30 одновременных звонков. АТС поддерживает наиболее популярные кодеки: * **G.711** - 4.67 Mbps * **GSM** - 1.68 Mbps * **G.722** - 4.67 Mbps * **G.729** - 1.38 Mbps (**кодек будет доступен в версиях 2022.2.1+**) Расчет ориентировочный, при использовании одного кодека на всех устройствах, подключенных к АТС. Подробнее [[https://www.asteriskguru.com/tools/bandwidth_calculator.php | тут]]. ===== Минимальные системные требования ===== Мы рекомендуем для развертывания АТС использовать **два** жестких диска. * Жесткий диск объемом **800 Mb** для основной системы * Жесткий диск объемом **50+ Gb** для записей разговоров * **1 (2 ядра)** процессор **x86-64** * **2Gb** оперативной памяти * Сетевой адаптер ПК, с такими параметрами, в наших тестах, держит **38 одновременных входящих звонков** при условиях: * К очереди подключено 10 агентов (все online) * Каждую секунду поступает новый звонок * Клиенту во время ожидания воспроизводится музыка (MOH) * На АТС не установлено доп. модулей Ориентировочно, **1 час** разговора занимает **14Мб** места на диске. ===== Виртуальные машины ===== Ниже представлен перечень инструкций для установки MikoPBX на рекомендуемые виртуальные машины: * [[setup:virtualbox|VirtualBOX]] * [[setup:vmwareFusion|VMware Fusion]] * [[setup:vmware|VMware ESXi]] * [[setup:vmware_workstation|VMware Workstation Pro]] * [[setup:hyperv|Hyper-V]] * [[https://настройка-микротик.рф/ip-телефония-с-нуля/|MikoPBX на Proxmox (настройка-микротик.рф)]] ===== Установка в облако ===== Ниже представлен перечень инструкций для установки MikoPBX в облаке: * [[faq:mcs|MailRu Cloud Solutions]] * [[faq:yandex_cloud|Yandex Cloud]] * [[faq:azure|Microsoft Azure]] * [[faq:google-cloud|Google Cloud]] * [[https://asko.host/pbx | Облако asko.host]] * [[faq:hetzner-cloud|Hetzner cloud]] ===== Docker ===== "**Host система**" должна быть запущена на базе Linux 5+. Тестировалось на Debian 11 и Ubuntu-21.04. В планах добавить поддержку ARM. # Создание на хост системе каталогов для хранения данных MikoPBX # Для хранения настроек: mkdir -p /var/spool/mikopbx/cf # Для хранения записей разговоров и бекапов: mkdir -p /var/spool/mikopbx/storage # Получаем контейнер: docker pull ghcr.io/mikopbx/mikopbx-x86-64 # Вариант запуска MikoPBX # НЕ привилегированный режим. Пользователь и группа "www-data" дожены существовать в системе: docker run --cap-add=NET_ADMIN --net=host --name mikopbx --hostname mikopbx \ -v /var/spool/mikopbx/cf:/cf \ -v /var/spool/mikopbx/storage:/storage \ -e SSH_PORT=23 \ -e ID_WWW_USER="$(id -u www-data)" \ -e ID_WWW_GROUP="$(id -g www-data)" \ -it -d --restart always ghcr.io/mikopbx/mikopbx-x86-64 Флаг **NET_ADMIN** необходим для возможности работы **fail2ban** и **iptables** внутри контейнера. **Обязательно** укажите параметр "**hostname**", иначе его значение будет назначено автоматически, что приведен к проблеме с лицензированием. Если необходимо использовать "[[module-backup|Модуль резервного копирования]]", то контейнер следует запускать с флагом **--privileged**. Резервное копирование можно выполнять архивированием каталогов **cf** и **storage** вручную (когда контейнер остановлен). Флаг **--net=host** указывает на то, что NAT не будет использоваться для нового контейнера. Все порты, что должен занять контейнер будет заняты и на хост машине. Подробнее в [[https://docs.docker.com/network/host/|документации...]] Если на хост машине, какой то из портов занят, то при загрузке MikoPBX могут возникнуть ошибки. \\ \\ Ниже описаны переменные окружение, которые позволят скорректировать используемые MikoPBX порты: * **SSH_PORT** - порт для SSH (**22**) * **WEB_PORT** - порт для работы web интерфейса по протоколу HTTP (**80**) * **WEB_HTTPS_PORT** - порт для работы web интерфейса по протоколу HTTPS (**443**) * **SIP_PORT** - порт для подключения SIP клиента (**5060**) * **RTP_FROM** - начало диапазона RTP портов, передача голоса (**10000**) * **RTP_TO** - конец диапазона RTP портов, передача голоса (**10200**) * **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 (можно задать выражением **"$(id -u www-data)"**, где www-data имя **НЕ root** пользователя) * **ID_WWW_GROUP** - идентификатор группы www (можно задать выражением **"$(id -g www-data)"**, где www-data имя **НЕ root** пользователя) Пример **docker-compose.yml**: version: "3.9" services: mikopbx: container_name: "mikopbx" hostname: "mikopbx" image: "ghcr.io/mikopbx/mikopbx-x86-64" network_mode: "host" command: '-d' tty: true cap_add: - NET_ADMIN volumes: - /var/spool/mikopbx/cf:/cf - /var/spool/mikopbx/storage:/storage # environment: ## Изменение стандартного порта SSH на 23 # - SSH_PORT=23 ## Изменение стандартного порта HTTP на 81 # - WEB_PORT=81 # DAHDI не обязательное условие. Он необходим для работы MeetMe в панели телефонии. # devices: # - "/dev/dahdi/transcode:/dev/dahdi/transcode" # - "/dev/dahdi/channel:/dev/dahdi/channel" # - "/dev/dahdi/ctl:/dev/dahdi/ctl" # - "/dev/dahdi/pseudo:/dev/dahdi/pseudo" # - "/dev/dahdi/timer:/dev/dahdi/timer" **Обязательно** укажите параметр "**hostname**", иначе его значение будет назначено автоматически, что приведен к проблеме с лицензированием. Команда для подключения к консоли АТС: docker exec -it mikopbx sh Команда для подключения к консольному меню АТС: docker exec -it mikopbx /etc/rc/console_menu ===== Live USB / Bootable USB ===== Протестировано на:\\ * Intel NUC DCCP847DYE * Intel NUC D54250WUKH Большинство современных ПК поддерживают загрузку с USB устройства. \\ **MikoPBX** может быть запущена с USB устройства. Такой способ установки может потребоваться при отсутствии CDROM. **Обратите внимание!** Минимальная емкость USB диска - **600MB** * Режим **Bootable USB** предназначен для работы АТС с USB диска (флэш карты). Используйте для установки файл ***.img**\\ \\ * Режим **Live USB** предназначен для установки или восстановления системы. Используйте для установки файл ***.iso** ==== Используем Windows ==== Для создания загрузочного USB диска рекомендуем использовать приложение [[http://www.osforensics.com/tools/write-usb-images.html|imageUSB]]. Скачать можно по [[http://www.osforensics.com/tools/write-usb-images.html|ссылке]]. Альтернатива - используйте **[[https://www.balena.io/etcher/ | balenaEtcher]]** - Загрузите и установите приложение. - Запустите imageUSB - Подключите USB диск к ПК - Выполните действие "**Refresh drives**" - Выберите USB диск {{ :111.png |}} - Выберите файл образа - Выполните действие "**Write**" - Дождитесь окончания записи - Подключите USB диск к ПК - Перезагрузите ПК для загрузки с диска ==== Используем OSX ==== Будте внимательны при выборе устройства к форматированию. Изменения не обратимы! - Откройте приложение "**Terminal**" (Терминал) - Подключите USB диск - Выполните команду diskutil list - Будет отображена информация о всех подключенных дисках {{ :123.png |}} - В текущем примере имя устройства USB "**/dev/disk3**". Cравним вывод команды "diskutil list" до и после подключения устройства - Форматируем диск. Потребуется ввести пароль администратора sudo diskutil eraseDisk FAT32 NONAME MBRFormat /dev/disk3; - Отключим устройство следующей командой sudo diskutil unmountDisk /dev/disk3; - Запишем образ на usb носитель sudo dd if=1.0.64-9.0-svn-mikopbx-x86-64-cross-linux.img of=/dev/disk3 bs=1m; ===== Live CD ===== **Установка с помощью Live CD** - самый простой способ установки на настольный ПК.\\ \\ 1. Для начала необходимо скачать образ Live CD. \\ \\ 2. Запишите образ "**XXXX.X.XXX-mikopbx-generic-x86-64-linux**" на компакт-диск\\ \\ 3. Вставьте Live CD в компьютер\\ \\ 4. **ПК должен поддерживать загрузку с CD**. Должен быть настроен порядок загрузки с CD привода.\\ \\ 5. Перезагрузите ПК\\ \\ 6. Если загрузка прошла успешно, появится консольное меню. На данном этапе MikoPBX загружается с диска (Live CD), на который записан iso образ. На это нам указывает строчка: "**АТС запущена с Live CD в режиме восстановления**".\\ {{ ::install-livecd-6.png |}} 7. Производим установку MikoPBX. * Введите с клавиатуры цифру **8** и нажмите «**Enter**» для начала установки. MikoPBX отобразит информацию о всех **доступных** дисках. В текущем примере - диск «**sda**». * Введите с клавиатуры имя диска, в текущем случае **sda**. * Система запросит подтверждение. Подтверждаем - **y**. Имена дисков могут отличаться для вашей системы. Будьте внимательны с выбором, все данные на диске, куда устанавливается MikoPBX, будут потеряны. {{ :setup:2018-11-16_163316.png |}}\\ Диск, на который будет установлена MikoPBX, называется **системным** (**SYSTEM**). В качестве системного диска можно выбрать диск, размер которого будет превышать **600 Мб**. \\ \\ 8. После завершения установки система перезагрузится. MikoPBX автоматически извлечет диск "**XXXX.X.XXX-mikopbx-generic-x86-64-linux*" из привода, теперь **MikoPBX** будет запускаться с диска **sda**, на который мы и установили систему.\\ \\ 9. После перезапуска увидим, что строчка "**АТС запущена с Live CD в режиме восстановления**" отсутствует.\\ {{ ::install-livecd-9-2.png |}} 10. Далее система предложит подключить диск для хранения записей разговоров в MikoPBX. * Введите наименование диска для подключения (например, sdb) и нажмите Enter. {{ :setup:2018-11-16_163519.png |}} **Важно!** В качестве диска для хранения записей разговоров может выступать **системный диск**, на который установлена сама MikoPBX (в нашем примере диск sda) только в том случае, если его **размер** будет превышать **600 МБ**. В противном случае системный диск подключить для хранения записей разговоров не получится. \\ \\ При повторной попытке подключения диска для хранения записей разговоров будет выведено уведомление о том, что диск уже смонтирован.\\ {{ ::install-livecd-11-storage-1.png |}} {{ ::install-livecd-11-storage-2.png |}} [[index|Обратно к перечню инструкций]]