====== Установка 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|Обратно к перечню инструкций]]