Установка Asterisk и FreePBX на Ubuntu

astreisk+freepbx+ubuntu_logo

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

Не забываем выбрать русские звуки:

core-sounds
Устанавливаем пакет звуков на русском

Экстра саундов на русском нет, потому придется довольствоваться английским:

extra-sounds
extras sound

Клацаем «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 good status
Успешный запуск asterisk

Проверяем что всё удачно запустилось — перейдя в консоль:

asterisk -rvv

Если вы видите такое сообщение — то установка выполнена успешно:

successfull install asterisk
Успешный вход в консоль Asterisk

Для выхода из консоли набираем:

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

В результате вы должны получить сообщение об успешной установке:

Succress FreePBX
Succressfull installing FreePBX

Далее меняем пользователя в 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

Настраиваем администратора:

Provide your Admin user details
Настраиваем админа.

На этом настройка закончена.

FreePBX

Полезные материалы по теме:

Оставьте первый комментарий

Отправить ответ

Ваш e-mail не будет опубликован.


*