Asterisk — это сервер телефонии с открытым исходным кодом. Многие считают его ТОП-1 бесплатных АТС, распространяемых как self-hosted решение.
FreePBX — GUI с открытым исходным кодом разработанный для управления сервером Asterisk.
Помимо прочего FreeBPX в последних релизах — не только дает возможность базового управления Asterisk, но и расширяет его функционал.
В статье я опишу процесс установки Asterisk и FreePBX на сервер Ubuntu 20.04
Перейдем к установке
По непонятной мне причине, Asterisk по прежнему необходимо компилировать из исходников скачанных с сайта. Хотя в репозиториях Canonical появился пакет с asterisk с возможностью установить через пакетный менеджер, но либо я не разобрался в теме, либо он относительно урезанный. В любом случае установка из исходников примерно одинаково отработает на любой системе.
Для начала устанавливаем зависимости для компилятора:
apt-get install unzip git gnupg2 curl libnewt-dev libssl-dev libncurses5-dev subversion libsqlite3-dev build-essential libjansson-dev libxml2-dev uuid-dev subversion -y
Скачиваем самый последний релиз астериска (на момент написания статьи — самым свежим был 19)
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-19-current.tar.gz
По завершению загрузки — распаковываем
tar zxf asterisk-19-current.tar.gz
Переходим в распакованный каталог и устанавливаем требуемые зависимости с помощью команд:
cd asterisk-19.2.0/
contrib/scripts/get_mp3_source.sh
contrib/scripts/install_prereq install
Далее запускаем конфигурацию астериска:
./configure
Выбираем нужные нам модули Asterisk:
make menuselect
Навигация с помощью стрелок и tab, выбор с помощью Enter
Не забываем выбрать русские звуки:
Экстра саундов на русском нет, потому придется довольствоваться английским:
Клацаем «save & exit» в нижнем правом углу.
Как только конфигурация завершена — собираем астериск командой:
make -j2
И устанавливаем Asterisk:
make install
Устанавливаем конфиги, примеры и модули с помощью следующих команд:
make samples
make config
ldconfig
Переходим к настройке.
По умолчанию Asterisk запускается от пользователя root, но это не круто, потому сначала исправляем это упущение, создав пользователя и группу пользователя asterisk:
groupadd asterisk
useradd -r -d /var/lib/asterisk -g asterisk asterisk
Добавляем нужные права для группы астериск:
usermod -aG audio,dialout asterisk
И выдаем права на нужные каталоги:
chown -R asterisk.asterisk /etc/asterisk
chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk
chown -R asterisk.asterisk /usr/lib/asterisk
Редактируем конфигурацию, созданную по умолчанию, устанавливаем пользователем по умолчанию — asterisk, открываем для редактирования файл конфигурации:
nano /etc/default/asterisk
Находим и раскоменчиваем строки:
AST_USER="asterisk"
AST_GROUP="asterisk"
Cохраняем и открываем следующий файл:
nano /etc/asterisk/asterisk.conf
Раскоменчиваем:
runuser = asterisk ; The user to run as.
rungroup = asterisk ; The group to run as.
В самом низу файла раскоменчиваем и приводим вот к такому виду:
[files]
astctlpermissions = 0660
astctlowner = asterisk
astctlgroup = asterisk
astctl = asterisk.ctl
Сохраняем, закрываем, перезапускаем астериск и добавляем его в автозагрузку:
systemctl restart asterisk
systemctl enable asterisk
Проверяем статус службы:
systemctl status asterisk
В некоторых случаях в статусе можно получить ошибку:
radcli: rc_read_config: rc_read_config: can't open /etc/radiusclient-ng/radiusclient.conf: No such file or directory
Не беда, пофиксить можно вот так:
sed -i 's";\[radius\]"\[radius\]"g' /etc/asterisk/cdr.conf
sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cdr.conf
sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cel.conf
Снова перезапускаем asterisk и проверяем статус, всё должно быть хорошо:
Проверяем что всё удачно запустилось — перейдя в консоль:
asterisk -rvv
Если вы видите такое сообщение — то установка выполнена успешно:
Для выхода из консоли набираем:
exit
Переходим к установке FreePBX
Для установки FreePBX нужен Apache Webserver, MySQL (MariaDB) и PHP 7.2.
По умолчанию в Ubuntu 20.04 устанавливается PHP версии 7.4, потому сначала добавляем нужные репозитории:
apt-get install software-properties-common -y
add-apt-repository ppa:ondrej/php -y
Теперь устанавливаем сами пакеты:
apt-get install apache2 mariadb-server libapache2-mod-php7.2 php7.2 php-pear php7.2-cgi php7.2-common php7.2-curl php7.2-mbstring php7.2-gd php7.2-mysql php7.2-bcmath php7.2-zip php7.2-xml php7.2-imap php7.2-json php7.2-snmp -y
Скачиваем дистрибутив FreePBX (на момент написания статьи был 15)
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-15.0-latest.tgz
Распаковываем:
tar -xvzf freepbx-15.0-latest.tgz
Переходим в каталог и устанавливаем пакеты Node.js:
cd freepbx
apt-get install nodejs -y
Устанавливаем нужные зависимости:
./install -n
В результате вы должны получить сообщение об успешной установке:
Далее меняем пользователя в Apache на asterisk и разрешаем allowoverride:
sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf
sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
Увеличиваем upload_max_filesize в php.ini с помощью команд:
sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php/7.2/apache2/php.ini
sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php/7.2/cli/php.ini
Включаем Apache rewrite и перезапускаем сервис:
a2enmod rewrite
systemctl restart apache2
Далее заходим на http://<Адрес вашего сервера>/admin/config.php
Настраиваем администратора:
На этом настройка закончена.
Отправить ответ