29 сент. 2026 г.

Компиляция и установка Asterisk 22 для Debian 13

 По мотивам этой статьи

1. Ставим средства разработки

sed -i 's/main$/main contrib non-free/g' /etc/apt/sources.list

- это хорошо, это пригодится

apt update && apt upgrade -y

- обновляем систему

apt -y install nano git curl wget libnewt-dev libssl-dev libncurses5-dev \
subversion libsqlite3-dev build-essential libjansson-dev libxml2-dev \
uuid-dev libsqlite3-dev zlib1g-dev libxslt1-dev libpq-dev libcurl4-openssl-dev \
libedit-dev libtool autoconf automake pkg-config

- вот немного странно, nano с wget и так есть, а git особо и не нужен, если качаем исходники в *.gz

2. Качаем исходники

cd /usr/src/
wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-22-current.tar.gz
tar xvf asterisk-22-current.tar.gz
cd asterisk-22*/

- на 2026 год это long term, но есть особенность, в 20 еще есть старый традиционный SIP, тут уже остался только PJSIP. Так что если нужен старый модуль SIP, качаем 20-й.

3. Ставим зависимости из папки contrib. 

contrib/scripts/get_mp3_source.sh
contrib/scripts/install_prereq install

Достаточно долго собирается, но если не сделать до конфигурирования, многие опции при конфигурировании будут недоступны.

4.Конфигурируем и выбираем, что компилировать.

./configure
make menuselect

В Applications и Dialplan Functions не убираем ничего, все пригодится.
В Add-ons выбираем mp3.
В CDR убираем cdr_pgsql, cdr_radius, cdr_sqlite3, cdr_tds.
В CEL убираем cel_pgsql, cel_radius, cel_sqlite3, cel_tds.
В Channel Drivers убираем chan_console.
В Resource Modules убираем res_config_ldap, res_config_pgsql.
В Core Sound, Music On Hold и Extras Sound выбираем WAV и GSM для тех языков, которые есть и нужны.

Остальное оставляем как есть.


Убирать нужно для того, чтобы при старте Asterisk не пытался подгрузить модули, для которых нет соответствующих условий. Вряд ли мы будем работать с звуковой картой, вставленной в компьютер, писать CDR, CEL и хранить конфигурации в экзотических БД и LDAP. Но в принципе, можно и их скомпилировать, а потом отключить их подгрузку.

5. Компилируем

make -j$(nproc)
make install
make samples
make config
ldconfig

6.Создаем группу и пользователя, от которого мы будем его запускать, даем этому пользователю права на папки, в которые он будет писать

groupadd asterisk
useradd -r -d /var/lib/asterisk -g asterisk asterisk
usermod -aG audio,dialout asterisk
 
chown -R asterisk:asterisk /etc/asterisk /var/{lib,log,spool}/asterisk /usr/lib/asterisk

7. Берем файл сервиса и закидываем его в systemd


cp /usr/src/asterisk-22.11.0/contrib/systemd /usr/lib/systemd/system

8.Правим файл в systemd, иначе не будет запускаться


Стоит Type=notify, поставим Type=simple
Убираем комментарий с RuntimeDirectory=asterisk
Все остальное ок, но можно еще поставить
Restart=on-failure
RestartSec=1 

9. Разрешаем сервис и запускаем


systemctl enable asterisk
systemctl start asterisk


10.Конфигурируем в /etc/asterisk и пользуемся