Установка FreePBX Core в Ubuntu Linux 18.04


А почему именно FreePBX и тем более на Ubuntu Linux?

Помните, что я вам говорил о использовании программного обеспечения которое разрабатывалось для строго определенного окружения (обычно Linux дистрибутива) с несвойственным ему окружением? Правильно, я говорил, что так делать не стоит особенно в продакшн и именно поэтому я приводил все инструкции по настройке и установке FreePBX применительно к CentOS. Но тут оказалось, что можно официально ставить FreePBX Core на Ubuntu Linux, но с некоторыми оговорками, главная из которых это то, что коммерческие модули в таком окружении не поддерживаются.

Установка FreePBX в Ubuntu Linux 18.04

Скажем так, что коммерческие модули я вообще за всю свою практику никогда не ставил, а FreePBX стала уже стандартом в SOHO поэтому чистый Asterisk с довеском в виде книжки "Asterisk - Будущее IP-телефонии" уже никому не интересно. Я тут на досуге подумал, что будет довольно интересно попробовать запустить FreePBX в окружении Ubuntu Linux 18.04 и даже упаковать ее в LXC-контейнер и настроить максимальную автоматизацию развертывания таких комплексов при помощи Ansible.

Идея черт подери интересная, поэтому давайте начнем!

Установка FreePBX Core

Начинаем с банального подключения репозитариев со старыми версиями PHP, так как FreePBX работает только под PHP 5.6:

# add-apt-repository ppa:ondrej/php
# apt-get update

Устанавливаем необходимые для работы пакеты:

# apt-get install -y openssh-server apache2 mysql-server mysql-client   mongodb curl sox mpg123 sqlite3 git uuid libodbc1 unixodbc \
unixodbc-bin   asterisk asterisk-core-sounds-en-wav asterisk-core-sounds-en-g722   asterisk-dahdi asterisk-flite asterisk-modules \
asterisk-mp3 asterisk-mysql   asterisk-moh-opsound-g722 asterisk-moh-opsound-wav asterisk-opus   asterisk-voicemail dahdi dahdi-dkms \
dahdi-linux libapache2-mod-security2   php5.6 php5.6-cgi php5.6-cli php5.6-curl php5.6-fpm php5.6-gd php5.6-mbstring   php5.6-mysql \
php5.6-odbc php5.6-xml php5.6-bcmath php-pear libicu-dev gcc   g++ make postfix libapache2-mod-php5.6

Опционально обновляем систему:

# apt-get upgrade

Установлен Asterisk версии 13.18.3:

# asterisk -rv
Asterisk 13.18.3~dfsg-1ubuntu4, Copyright (C) 1999 - 2014, Digium, Inc. and others.

Устанавливаем Node.JS десятой версии:

# curl -sL https://deb.nodesource.com/setup_10.x | bash -
# apt-get install -y nodejs

Исправляем разрешения на каталогах необходимые для работы FreePBX:

# chown asterisk. /var/run/asterisk
# chown -R asterisk. /etc/asterisk
# chown -R asterisk. /var/{lib,log,spool}/asterisk
# chown -R asterisk. /usr/lib/asterisk
# chsh -s /bin/bash asteris

Удаляем "примеры конфигураций":

# rm -rf /var/www/html
# rm -rf /etc/asterisk/ext* /etc/asterisk/sip* /etc/asterisk/pj* /etc/asterisk/iax* /etc/asterisk/manager*
# sed -i 's/.!.//' /etc/asterisk/asterisk.con

Настраиваем web-сервер Apache:

# sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php/5.6/cgi/php.ini
# sed -i 's/www-data/asterisk/' /etc/apache2/envvars
# sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
# a2enmod rewrite
# service apache2 restart
# sed -i 's/ each(/ @each(/' /usr/share/php/Console/Getopt.php

Устанавливаем Mysql-коннектор ODBC:

# mkdir -p /usr/lib/odbc
# curl -s https://cdn.mysql.com/Downloads/Connector-ODBC/5.3/mysql-connector-odbc-5.3.11-linux-ubuntu18.04-x86-64bit.tar.gz |   tar -C /usr/lib/odbc --strip-components=2 --wildcards -zxvf - */lib/*so

Создаем конфигурацию подключения к базе данных:

# cat > /etc/odbc.ini << EOF
[MySQL-asteriskcdrdb]
Description=MySQL connection to 'asteriskcdrdb' database
driver=MySQL
server=localhost
database=asteriskcdrdb
Port=3306
Socket=/var/run/mysqld/mysqld.sock
option=3
Charset=utf8
EOF

И еще один конфигурационный файл:

# cat > /etc/odbcinst.ini << EOF
[MySQL]
Description=ODBC for MySQL
Driver=/usr/lib/odbc/libmyodbc5w.so
Setup=/usr/lib/odbc/libodbcmy5S.so
FileUsage=1
EOF

Небольшой фикс структуры каталогов для Ubuntu/Debian:

# rm -rf /var/lib/asterisk/moh
# ln -s /usr/share/asterisk/moh /var/lib/asterisk/moh
# rm -rf /usr/share/asterisk/sounds
# ln -s /var/lib/asterisk/sounds /usr/share/asterisk/sounds
# chown -R asterisk.asterisk /usr/share/asterisk

Финальный аккорд, это установка собственно FreePBX 14:

# cd /usr/src
# wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-14.0-latest.tgz
# tar zxf freepbx-14.0-latest.tgz
# cd freepbx
# ./install -n

Устанавливаем необходимые для работы модули:

Переходим в web-интерфейс управления FreePBX (по IP-адресу сервера куда мы ее установили):

http://10.212.5.2/admin/config.php

Проводим первоначальную установку которая будет заключаться в создании пользователя администратора и настройке базовых параметров:

Создание пользователя администратора в FreePBX

Следующим этапом переходим "Admin -> Module Admin" и нажимаем кнопку "Check Online" и после непродолжительного онлайн обновления мы получаем список доступных для установки модулей.

Установка модулей для FreePBX

Если вы планируете настроить IP-АТС для малого бизнеса, то вам обязательно потребуются следующие модули:

  • Backup & Restore
  • Call Forward
  • Do-Not-Disturb (DND)
  • IVR
  • Text To Speech Engines

Установка проводится банальным нажатием кнопки "Download and install". Более подробно про настройку входящих-исходящих звонков и каждого из модулей я расскажу немного позже.

P.S. Если вы еще не определились с провайдером для ваших входящих и исходящих звонков, то могу порекомендовать Zadarma.

Zadarma - провайдер IP-телефонии

Если вы воспользуетесь моей реферальной ссылкой при регистрации, то с меня настройка FreePBX на вашей площадке.

Рефералочка: https://zadarma.com/ru/?ref=12ea1bfba8cd51cf53d4eda7bfad7b6b