Опять возвращаюсь к использованию Asterisk на Ubuntu 18.04 Server. Просто пообщался тут на днях со своих хорошим коллегой и чтобы быть в на одной волне, все же буду на постоянке использовать свой Asterisk + Zadarma дома для личных проектов и в паре со своим Умный домом на базе Home Assistant. Хочу реализовать, как заметки, многие + все же разобрать как шейпить трафик телефонии на Mikrotik. А чтобы все это дело сделать нужно обновить заметку установки консольного Asterisk + последующие наработки, так сказать подвести итог уходящего конца 2020 года.

Сперва на тестовом стенде базирующемся у меня на Debian 10 + Proxmox 6, а уже после перенесу все работающее на HP MicroServer Gen8.

Шаг №1: Установлена операционная система Ubuntu 18.04 LTS Server amd64, на VM с характеристиками:

  • CPU = 1 (4 cores)
  • HDD = 50Gb (storage: disk1 на базе LVM Thin диска 1Tb M2)
  • RAM = 2 Gb

Шаг №2: Применил к установленной ОС свой скрипт настройки на последующее использование.

ekzorchik@srv-asterisk:~$ hg clone http://srv-wiki/hg/dproject

ekzorchik@srv-asterisk:~$ sudo ./dproject/default

Шаг №3: Устанавливаю зависимости для сборки Asterisk из исходников:

ekzorchik@srv-asterisk:~$ sudo apt-get install -y build-essential wget libssl-dev libncurses5-dev libnewt-dev libxml2-dev linux-headers-$(uname -r) libsqlite3-dev uuid-dev

Шаг №4: Устанавливаю DAHDI, LibPRI, libSTRP, Jansson

от 15.02.2023

чтобы

sudo make all

make[2]: Leaving directory '/usr/src/linux-headers-4.15.0-200-generic'

make[1]: Leaving directory '/home/ekzorchik/dahdi-linux-complete-3.2.0+3.2.0/linux'

(cd tools && autoreconf -i && [ -f config.status ] || ./configure --with-dahdi=../linux)

/bin/sh: 1: autoreconf: not found

/bin/sh: 1: ./configure: not found

Makefile:9: recipe for target 'all' failed

make: *** [all] Error 127

ekzorchik@srv-bionic:~/dahdi-linux-complete-3.2.0+3.2.0$

sudo apt-get install -y dh-autoreconf

sudo make all

и ошибок нет, продолжаем…

На заметку: от 15.02.2023 есть опять нюанс

ekzorchik@srv-bionic:~$ cd libsrtp-master/
-bash: cd: libsrtp-master/: No such file or directory
ekzorchik@srv-bionic:~$ cd libsrtp-main/

wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz

tar zxf dahdi-linux-complete-current.tar.gz

cd dahdi-linux-complete-*/

sudo make all

sudo make install

cd ~/

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

tar zxf libpri-current.tar.gz

cd libpri-*/

sudo make -j$((`nproc`+1))

sudo make install

cd ~/

wget https://github.com/cisco/libsrtp/archive/master.zip

unzip master.zip

cd libsrtp-master/

./configure

sudo make -j$((`nproc`+1))

sudo make runtest

sudo make install

cd ~/

wget http://www.digip.org/jansson/releases/jansson-2.12.tar.gz

tar zxf jansson-2.12.tar.gz

cd jansson-*/

./configure

sudo make -j$((`nproc`+1))

sudo make install

cd ~/

sudo rm -Rf dahdi-linux-complete-* jansson-2.12-* libpri-* libsrtp-master/ master.zip

Шаг №5: Теперь собираю Asterisk 16 из исходников

cd /usr/src

sudo wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz

sudo tar zxf asterisk-16-current.tar.gz

sudo ./asterisk-*/contrib/scripts/install_prereq install

Do you want to continue? [Y/n] Y

ITU-T telephone code:7

cd asterisk-*/

Узнаем доступные опции ./configure --help

ekzorchik@srv-asterisk:/usr/src/asterisk-*$ sudo ./configure --help

А после переходим к своему выбору конфигурирования:

ekzorchik@srv-asterisk:/usr/src/asterisk-16.15.1$ sudo ./configure

sudo make menuselect

Отмечаю необходимые мне модули:

  • Add-ons: отмечаю клавишей ENTER: format_mp3, res_config_mysql, app_mysql,cdr_mysql
  • Call Detail Recording: снимаю отметку с cdr_radius, cdr_pgsql,cdr_sqlite3_custom
  • Channel Event Logging: снимаю отметку с cel_pgsql, cel_radius,cel_sqlite3_custom
  • Core Sound Packages: отмечаю CORE-SOUNDS-EN-ULAW,CORE-SOUND-EN-ALAW,CORE-SOUNDS-RU-ULAW,CORE-SOUNDS-RU-ALAW
  • Music On Hold File Packages: MOH-OPSOUND-ULAW,MOH-OPSOUND-ALAW
  • Extras Sound Packages: отмечаю EXTRA-SOUNDS-EN-ULAW,EXTRA-SOUNDS-EN-ALAW

После нажимаю Save & Exit

sudo make -j$((`nproc`+1))

sudo make install

sudo make samples

sudo make config

sudo ldconfig

cd ~/

Шаг №6: Теперь делаем чтобы сервис работал не из под root, а из под своей учетной записи:

sudo groupadd asterisk

sudo useradd -d /var/lib/asterisk -g asterisk asterisk

sudo sed -i 's/#AST_USER="asterisk"/AST_USER="asterisk"/g' /etc/default/asterisk

sudo sed -i 's/#AST_GROUP="asterisk"/AST_GROUP="asterisk"/g' /etc/default/asterisk

sudo sed -i 's/;runuser = asterisk/runuser = asterisk/g' /etc/asterisk/asterisk.conf

sudo sed -i 's/;rungroup = asterisk/rungroup = asterisk/g' /etc/asterisk/asterisk.conf

sudo chown -R asterisk:asterisk /var/spool/asterisk /var/run/asterisk /etc/asterisk /var/{lib,log,spool}/asterisk /usr/lib/asterisk

sudo systemctl restart asterisk

ekzorchik@srv-asterisk:~$ sudo asterisk -rv

Asterisk 16.15.1, Copyright (C) 1999 - 2018, Digium, Inc. 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 16.15.1 currently running on srv-asterisk (pid = 11018)

srv-asterisk*CLI> quit

Asterisk cleanly ending (0).

Executing last minute cleanups

ekzorchik@srv-asterisk:~$

Шаг №7: Проверяю логи Asterisk на предмет ошибок и исправляю их:

ekzorchik@srv-asterisk:~$ sudo reboot

ekzorchik@srv-asterisk:~$ sudo netstat -tulpn | grep :5060

udp 0 0 0.0.0.0:5060 0.0.0.0:* 11018/asterisk

ekzorchik@srv-asterisk:~$ sudo tail -f /var/log/asterisk/messages | grep "ERROR\|WARNING"

[Dec 23 19:29:15] WARNING[545] cel_tds.c: cel_tds module had config problems; declining load

[Dec 23 19:29:15] ERROR[545] codec_dahdi.c: Failed to open /dev/dahdi/transcode: No such file or directory

[Dec 23 19:29:15] WARNING[545] loader.c: Some non-required modules failed to load.

[Dec 23 19:29:15] ERROR[545] loader.c: res_timing_dahdi declined to load.

[Dec 23 19:29:15] ERROR[545] loader.c: res_pjsip_transport_websocket declined to load.

[Dec 23 19:29:15] ERROR[545] loader.c: cdr_pgsql declined to load.

[Dec 23 19:29:15] ERROR[545] loader.c: cel_tds declined to load.

[Dec 23 19:29:15] ERROR[545] loader.c: cdr_tds declined to load.

^C

ekzorchik@srv-asterisk:~$

Отключаю модули с ошибками:

ekzorchik@srv-asterisk:~$ cat /etc/asterisk/modules.conf | grep -v ";\|^$"

ekzorchik@srv-asterisk:~$ sudo nano /etc/asterisk/modules.conf

[modules]

autoload=yes

noload => chan_alsa.so

noload => chan_console.so

noload => res_hep.so

noload => res_hep_pjsip.so

noload => res_hep_rtcp.so

noload => cel_tds.so

noload => cdr_pgsql.so

noload => cdr_tds.so

noload => res_pjsip_transport_websocket.so

noload => res_timing_dahdi.so

noload => chan_dahdi.so

noload => res_config_mysql.so

noload => res_config_ldap.so

noload => res_config_pgsql.so

ekzorchik@srv-asterisk:~$ sudo systemctl restart asterisk.service

ekzorchik@srv-asterisk:~$ sudo netstat -tulpn | grep asterisk

tcp 0 0 0.0.0.0:2000 0.0.0.0:* LISTEN 1200/asterisk

udp 0 0 0.0.0.0:50408 0.0.0.0:* 1200/asterisk

udp 0 0 0.0.0.0:4520 0.0.0.0:* 1200/asterisk

udp 0 0 0.0.0.0:4569 0.0.0.0:* 1200/asterisk

udp 0 0 0.0.0.0:2727 0.0.0.0:* 1200/asterisk

udp 0 0 0.0.0.0:5000 0.0.0.0:* 1200/asterisk

udp 0 0 0.0.0.0:5060 0.0.0.0:* 1200/asterisk

udp6 0 0 :::45064 :::* 1200/asterisk

ekzorchik@srv-asterisk:~$

На заметку: В дальнейшем если что нужно будет для используемого функционала я активирую самостоятельно в ручную.

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

Итого я получил обновленную заготовку развернутого сервиса по организации телефонии базирующейся на Asterisk 16 + Ubuntu 18.04.5 Server amd64

На этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.