Администрирование, Блог

IT понятным языком. Установка Asterisk + FreePBX + Запись звонков. Часть I: Asterisk.

Когда в компании возникает ситуация, в которой необходимо настраивать телефонию, перед исполнителем открывается множество возможностей реализации данной задачи. Например, можно использовать довольно известные сервисы по типу Mango Office, однако, поддержание работы этого сервиса может обойтись компании в копеечку. Поэтому, с наибольшей вероятностью, руководство затребует от исполнителя какое-нибудь OpenSource решение, которое позволит звонить как во внешний мир, так и внутри компании. Для реализации подобного сервиса существует Asterisk — свободное решение компьютерной телефонии с открытым исходным кодом от компании Digium. Его одного было бы достаточно, если бы администрированием телефонии занимался исключительно системный администратор, который готов заводить пользователей и вытаскивать записи разговоров при помощи терминала (благо, Asterisk располагает таким функционалом). Однако, зачастую это не так, поэтому требуется организовать и визуальное представление телефонии, которым станет FreePBX. FreePBX — графический интерфейс пользователя с открытым исходным кодом, предназначенный для управления Asterisk.

Разобравшись с исходными данными задачи, следует рассмотреть среду, в которой данное решение будет реализовываться. В первую очередь нам понадобится сервер (или виртуальная машина) на базе Linux. В данной статье используется дистрибутив Ubuntu 20.04.04 Live Server. Его можно бесплатно загрузить с официального сайта.

Следует отметить, что FreePBX предлагают готовый дистрибутив Linux, базирующийся на CentOS и включающий в себя как Asterisk, так и FreePBX. Это удобное решение, однако, оно содержит большое количество коммерческих предложений по приобретению модулей, а также требует активации. Грубо говоря — много лишних действий и никакого контроля происходящего. По этой причине было решено устанавливать пакеты вручную.

Руководство будет разделено на несколько частей. На данном этапе мы рассмотрим установку и настройку Asterisk. Остальные манипуляции будут освещены в следующих материалах.

Когда среда для развертывания сервиса будет готова, можно переходить к установке. Для начала следует обновить имеющиеся пакеты:

 apt-get update -y
 apt-get upgrade -y

После обновления пакетов, установим все зависимости, требуемые для работы 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

Зависимости установлены, переходим к установке самого Asterisk. Скачаем его с официального сайта при помощи утилиты wget. Добавлю, что на текущий момент (октябрь 2022г.), последней версией является 18-ая. Если Вы желаете установить старую версию, смените число «18» из ссылки на «17», «16» и так далее:

wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz

Скачанный архив запакован в формате .tar. Распакуем его:

tar -xvzf asterisk-18-current.tar.gz

После распаковки следует перейти в распакованную директорию Asterisk и запустить скрипты установки:

 cd asterisk-18.*
 contrib/scripts/get_mp3_source.sh
 contrib/scripts/install_prereq install 

Для конфигурации Asterisk, после завершения предыдущих скриптов, осуществляем следующее:

./configure

Результатом данной команды будет вот такой вывод:


Далее сконфигурируем аддоны и модули Asterisk:

 make menuselect

Выбирать аддоны и модули следует осторожно. В особенности, это касается звуковых файлов, так как их загрузка может занимать достаточное количество времени.

Выбираем модули в соответствии с изображениям:

Также рекомендуется установить русскоязычные пакеты, в соответствии с англоязычными, отображёнными на скриншотах.

Выбрав модули, вводим команду:

 make -j2

Успешность выполнения команды сигнализирует данный вывод:

Далее установим сам Asterisk:

make install

После установки получим такой вывод:

Далее запустим попорядку следующие команды, установив конфигурации и предустановки:

make samples
make config
ldconfig

Установив Asterisk в нашу систему, необходимо сконфигурировать его работу. Первым делом создадим учётную запись и группу Asterisk, чтобы программа запускалась не только от имени администратора:

groupadd asterisk
useradd -r -d /var/lib/asterisk -g asterisk asterisk

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

usermod -aG audio,dialout asterisk

Теперь выдадим разрешения на влпдение Asterisk:

chown -R asterisk.asterisk /etc/asterisk
chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk
chown -R asterisk.asterisk /usr/lib/asterisk

Для правильной работы Asterisk от имени нужной группы и пользователя, необходимо отредактировать файл конфигурации Asterisk:

nano /etc/default/asterisk

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

AST_USER="asterisk"
AST_GROUP="asterisk"

Сохраняем данные изменения и переходим к работе с другим файлом:

nano /etc/asterisk/asterisk.conf

Делаем то же самое с другими строчками:

runuser = asterisk ; The user to run as.
rungroup = asterisk ; The group to run as.

Как и в предыдущий раз, сохраняем файл. Теперь сделаем перезапуск всего Asterisk:

systemctl restart asterisk

Проверим статус работы:

systemctl status asterisk

Рещультатом предыдущей команды должен стать такой вывод:

После их выполнения заново перезапустим установленный Asterisk:

systemctl restart asterisk

Если все сделано правильно, можем перейти к командной строке самого Asterisk:

asterisk -rvv

В случае успеха мы увидим что-то такое:

Для выхода из CLI достаточно просто ввести exit

Тем не менее, в некоторых случае на данном этапе возникает ошибка. Система не может опеределить факт запуска Астериск, не пуская нас в команднудю строку. Это – большая проблема, так как FreePBX в последствие не сможет подключиться к Asterisk. Для её решения достаточно выдать права ряду диркеторий. В первую очередь, папке /var/run и её содержимому /asterisk нужны права 755 (или 777).

После данных процедур перезапускаем Asterisk и проверяем возможность перехода в CLI:

systemctl restart asterisk
asterisk -rvv

На данном этапе установку Asterisk можно считать завершённой. В дальнейших материалах мы рассмотрим процесс наладки FreePBX, а также произведем настройку Samba для создания общедоступной папки с аудиозаписями звонков.