Установка Asterisk в Debian 12 Bookworm
Asterisk - это мощная и гибкая открытая система коммутации голосовых и видео-вызовов, которая предоставляет возможность создания автоматизированных телефонных систем или даже провайдеров сотовой связи. В этой статье мы рассмотрим процесс установки Asterisk в операционной системе Debian 12.
Подготовка системы
В противном случае используйте
sudo
Для начала необходимо убедиться, что ваша система Debian 12 полностью обновлена и имеет все необходимые зависимости для успешной установки Asterisk, для чего выполним следующую команду:
apt update && apt upgrade
Установка зависимостей
Asterisk требует несколько пакетов и библиотек для своей работы.
- Установим необходимые зависимости с помощью apt:
apt -y install git vim curl wget libnewt-dev libssl-dev libncurses5-dev subversion\
libsqlite3-dev build-essential libjansson-dev libxml2-dev uuid-dev
- Перейдём в каталог, в котором будем работать с исходными кодами Asterisk и загрузим исходники:
cd /usr/src/
wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-21-current.tar.gz
- Извлечём исходные коды Asterisk из архива:
tar xvf asterisk-21-current.tar.gz
- Для использования mp3 кодека нам необходимо загрузить и добавить его в исходный код, до того как мы начнём сборку Asterisk. Сделаем это:
cd asterisk-21*/
contrib/scripts/get\_mp3\_source.sh
В результате выполнения скрипта, который мы запустили командой приведённой выше, мы должны получить вывод в терминале, представленный ниже:
root@aster:/usr/src/asterisk-21.1.0# contrib/scripts/get\_mp3\_source.sh
A addons/mp3
A addons/mp3/MPGLIB_README
A addons/mp3/common.c
A addons/mp3/huffman.h
A addons/mp3/tabinit.c
A addons/mp3/Makefile
A addons/mp3/README
A addons/mp3/decode_i386.c
A addons/mp3/dct64_i386.c
A addons/mp3/MPGLIB_TODO
A addons/mp3/mpg123.h
A addons/mp3/layer3.c
A addons/mp3/mpglib.h
A addons/mp3/decode_ntom.c
A addons/mp3/interface.c
Exported revision 204.
- В завершении процедуры установки зависимостей, выполним их проверку запустив проверочный скрипт следующей командой:
contrib/scripts/install_prereq install
Данный скрипт проверит все зависимости, установит недостающие компоненты и библиотеки. В результате его выполнения, в самом конце, мы должны получить следующее сообщение:
#############################################
## install completed successfully
#############################################
Все зависимости установлены, можно переходить к следующему шагу.
Конфигурирование, сборка и установка Asterisk
Выполним конфигурирование кода с целью удовлетворения всех зависимостей на нашей системе:
./configure
В результате, в самом конце, получим такой вывод в консоли терминала:
configure: Menuselect build configuration successfully completed
.$$$$$$$$$$$$$$$=..
.$7$7.. .7$$7:.
.$$:. ,$7.7
.$7. 7$$$$ .$$77
..$$. $$$$$ .$$$7
..7$ .?. $$$$$ .?. 7$$$.
$.$. .$$$7. $$$$7 .7$$$. .$$$.
.777. .$$$$$$77$$$77$$$$$7. $$$,
$$$~ .7$$$$$$$$$$$$$7. .$$$.
.$$7 .7$$$$$$$7: ?$$$.
$$$ ?7$$$$$$$$$$I .$$$7
$$$ .7$$$$$$$$$$$$$$$$ :$$$.
$$$ $$$$$$7$$$$$$$$$$$$ .$$$.
$$$ $$$ 7$$$7 .$$$ .$$$.
$$$$ $$$$7 .$$$.
7$$$7 7$$$$ 7$$$
$$$$$ $$$
$$$$7. $$ (TM)
$$$$$$$. .7$$$$$$ $$
$$$$$$$$$$$$7$$$$$$$$$.$$$$$$
$$$$$$$$$$$$$$$$.
configure: Package configured for:
configure: OS type : linux-gnu
configure: Host CPU : x86_64
configure: build-cpu:vendor:os: x86_64 : pc : linux-gnu :
configure: host-cpu:vendor:os: x86_64 : pc : linux-gnu :
Теперь вызовем псевдографический интерфейс выбора необходимых компонентов:
make menuselect
Здесь я стараюсь не вмешиваться в стандартный набор предлагаемый Астериском “из коробки”, лишь добавляю звуковые файлы.
То, что я изменяю показано на скриншотах ниже:
По окончании выбора компонентов нажимаем клавишу Save&Exit и переходим к следующему шагу.
Пришло время выполнить сборку нашего Asterisk. Сделаем это выполнив команду:
make
Результат успешной сборки выглядит так:
Building Documentation For: channels pbx apps codecs formats cdr cel bridges funcs tests main res addons
+--------- Asterisk Build Complete ---------+
+ Asterisk has successfully been built, and +
+ can be installed by running: +
+ +
+ make install +
+-------------------------------------------+
И наконец пришло время установить Asterisk:
make install
По завершению установки получим:
done
+---- Asterisk Installation Complete -------+
+ +
+ YOU MUST READ THE SECURITY DOCUMENT +
+ +
+ Asterisk has successfully been installed. +
+ If you would like to install the sample +
+ configuration files (overwriting any +
+ existing config files), run: +
+ +
+ For generic reference documentation: +
+ make samples +
+ +
+ For a sample basic PBX: +
+ make basic-pbx +
+ +
+ +
+----------------- or ---------------------+
+ +
+ You can go ahead and install the asterisk +
+ program documentation now or later run: +
+ +
+ make progdocs +
+ +
+ **Note** This requires that you have +
+ doxygen installed on your local system +
+-------------------------------------------+
Теперь сгенерируем образцы файлов настроек и конфигураций выполнив следующие команды:
make samples && make config
ldconfig
Создаём пользователя и запускаем Asterisk
Создадим группу и пользователя 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 назначим пользователем и группой по умолчанию в самом 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 start asterisk
и проверяем его статус командой:
systemctl status asterisk
Asterisk запустился, однако в статусе есть ошибки:
Данной ошибке уже много лет и она перемещается из дистрибутива в дистрибутив с завидным постоянством. А так как ошибка стара как Мир, то и её лечение тоже давно известно. Выполним следующие команды:
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
Перезапустим сервис командой:
systemctl restart asterisk
И снова проверим статус:
systemctl status asterisk
Всё, сервис запущен - никаких ошибок нет!
Движемся дальше…
Включим автоматическую загрузку командой:
systemctl enable asterisk
Проверим правильно ли работает Asterisk подключившись к его консоли:
asterisk -rvv
видим:
root@aster:~# asterisk -rvv
Asterisk 21.1.0, Copyright (C) 1999 - 2022, Sangoma Technologies Corporation and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Running as user 'asterisk'
Running under group 'asterisk'
Connected to Asterisk 21.1.0 currently running on aster (pid = 484)
aster*CLI>
Всё в порядке.
Настройка файервола
Настройка файервола для Asterisk - это довольно творческий вопрос, однозначного подхода к которому нет.
Так возможны разные конфигурации сети, оборудования и наконец самих файерволов.
Подробно рассмотреть данный вопрос в этой статье не представляется возможным, однако рассмотрим два общих случая открытия портов в наиболее популярных фаерволах применяющихся в Debian - это iptables и ufw:
-
ufw
Для того, чтобы открыть порты минимально необходимые для работы Asterisk, выполним следующую команду:
ufw allow proto tcp from any to any port 5060,5061
-
iptables
Правила для iptables будут выглядеть следующим образом:
# iptables -A INPUT -p tcp --dport 5060 -j ACCEPT
# iptables -A INPUT -p tcp --dport 5061 -j ACCEPT
Заключение
В этой статье мы рассмотрели процесс установки Asterisk в Debian 12. Вы можете продолжить настройку и дальнейшую работу с Asterisk с помощью его конфигурационных файлов и функциональных модулей.
Так же я планирую в последующих статьях более детально развивать тему настройки и конфигурации Asterisk.
Следите за обновлениями на сайте….