По мотивам этой статьи
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
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*/
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
В 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