Опять возвращаюсь к использованию 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.