Я тут решил оформить задуманное как серия заметок посвященных связке Ubuntu 18.04 Server + Asterisk
+ поддержка pjsip
. Которая будет работать дома под Proxmox на HP MicroServer Gen8
и осуществлять внутреннюю работу между мои домом и сервисами в нем. Короче я хочу чтобы при звонке на определенных номер через IVR
меню с авторизацией по PIN
-коду будет включаться мои стенды, видеонаблюдения, голосовое упреждение, работать служба точного времени и все производное. Свою задумку я пока оформить в серию нескольких шагов.
- Шаг №1: Разобрать как установить
Asterisk 16
+ модуль pjsip - Шаг №2: Разобрать как подключать/настраивать Phone к
Asterisk
- Шаг №3: Подключиться к номеру купленному от
Zadarma
- Шаг №4: Сделать план обработки звонков на международное направление, городское и мобильное
- Шаг №5: Сделать план обработки звонков на получение точного времени
- Шаг №6: Сделать план обработки звонков на
IVR
меню - Шаг №7: Сделать план обработки звонков, если набираю
1
послеpin
код то выполняется моя команда (все затевается ради этого, мне нужно чтобы я мог через свою телефонию взаимодействовать с окружением дома) Плюс – это хороший практический опыт, т.к. делаю свой проект. - Шаг №8: Настроить
Fail2ban
+ безопасность - Шаг №9: Настроить логирование входящих и исходящих звонков
Собирать установку Asterisk 16
буду из исходников не репозитарии, хотя думается можно поставить из PPA
-репозитария.
Все установки сводятся к единой инсталляции в порядке:
DAHDI, LibPRI, libSTRP, Jansson
На заметку: Последовательность установки:
DAHDI
LibPRI
Asterisk
Этап №1: Обновляю систему до самого последнего состояния в рамках текущего релиза: Ubuntu 18.04 Server amd64:
ekzorchik@srv-bionic:~$ hg clone --insecure https://ekzorchik@172.40.40.8/hg/dproject ekzorchik@srv-bionic:~$ sudo ./dproject/default
Этап №2: Устанавливаю зависимости для сборки Asterisk
из исходников:
ekzorchik@srv-bionic:~$ sudo apt-get install -y build-essential wget libssl-dev libncurses5-dev libnewt-dev libxml2-dev linux-headers-$(uname -r) libsqlite3-dev uuid-dev
Этап №3: Устанавливаю DAHDI, LibPRI, libSTRP, Jansson
ekzorchik@srv-bionic:~$ wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz ekzorchik@srv-bionic:~$ tar zxf dahdi-linux-complete-current.tar.gz ekzorchik@srv-bionic:~$ cd dahdi-linux-complete-*/ ekzorchik@srv-bionic:~/dahdi-linux-complete-3.0.0+3.0.0$ sudo make all ekzorchik@srv-bionic:~/dahdi-linux-complete-3.0.0+3.0.0$ sudo make install ekzorchik@srv-bionic:~/dahdi-linux-complete-3.0.0+3.0.0$ cd ~/ ekzorchik@srv-bionic:~$ wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz ekzorchik@srv-bionic:~$ tar zxf libpri-current.tar.gz ekzorchik@srv-bionic:~$ cd libpri-*/ ekzorchik@srv-bionic:~/libpri-1.6.0$ sudo make -j$((`nproc`+1)) ekzorchik@srv-bionic:~/libpri-1.6.0$ sudo make install ekzorchik@srv-bionic:~/libpri-1.6.0$ cd ~/ ekzorchik@srv-bionic:~$ wget https://github.com/cisco/libsrtp/archive/master.zip ekzorchik@srv-bionic:~$ unzip master.zip ekzorchik@srv-bionic:~$ cd libsrtp-master/ ekzorchik@srv-bionic:~/libsrtp-master$ ./configure ekzorchik@srv-bionic:~/libsrtp-master$ sudo make -j$((`nproc`+1)) ekzorchik@srv-bionic:~/libsrtp-master$ sudo make runtest ekzorchik@srv-bionic:~/libsrtp-master$ sudo make install ekzorchik@srv-bionic:~/libsrtp-master$ cd ~/ ekzorchik@srv-bionic:~$ wget http://www.digip.org/jansson/releases/jansson-2.12.tar.gz ekzorchik@srv-bionic:~$ tar zxf jansson-2.12.tar.gz ekzorchik@srv-bionic:~$ cd jansson-*/ ekzorchik@srv-bionic:~/jansson-2.12$ ./configure ekzorchik@srv-bionic:~/jansson-2.12$ sudo make -j$((`nproc`+1)) ekzorchik@srv-bionic:~/jansson-2.12$ sudo make install ekzorchik@srv-bionic:~/jansson-2.12$ cd ~/
Этап №4: Теперь собираю Asterisk 16
из исходников
ekzorchik@srv-bionic:~$ cd /usr/src ekzorchik@srv-bionic:/usr/src$ sudo wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz ekzorchik@srv-bionic:/usr/src$ sudo tar zxf asterisk-16-current.tar.gz ekzorchik@srv-bionic:/usr/src$ sudo ./asterisk-*/contrib/scripts/install_prereq install Do you want to continue? [Y/n] Y ITU-T telephone code:7
Установку продолжать с поддержкой pjproject + mysqlclient + mp3
: (Если нужно будет что-то еще то можно перекомпилировать и установить все по новой, только забекапить настройки)
ekzorchik@srv-bionic:/usr/src$ cd asterisk-*/
Узнаем доступные опции ./configure --help
ekzorchik@srv-bionic:/usr/src/asterisk-16.5.1$ sudo ./configure --help
А после переходим к своему выбору конфигурирования:
ekzorchik@srv-bionic:/usr/src/asterisk-16.5.1$ sudo ./configure --with-pjproject --with-mysqlclient ekzorchik@srv-bionic:/usr/src/asterisk-16.5.1$ sudo make menuselect
Отмечаю необходимые мне модули:
Add-ons: отмечаю клавишей ENTER: format_mp3, res_config_mysql, app_mysql,cdr_mysql
Call Detail Recording: снимаю отметку с cdr_radius, cdr_pgsql
Channel Event Logging: снимаю отметку с cel_pgsql, cel_radius
Core Sound Packages: отмечаю CORE-SOUNDS-EN-WAV,CORE-SOUNDS-EN-ULAW,CORE-SOUND-EN-ALAW,CORE-SOUNDS-RU-WAV,CORE-SOUNDS-RU-ULAW,CORE-SOUNDS-RU-ALAW,CORE-SOUNDS-RU-GSM
Music On Hold File Packages: MOH-OPSOUND-WAV,MOH-OPSOUND-ULAW,MOH-OPSOUND-ALAW,MOH-OPSOUND-GSM
Extras Sound Packages: отмечаю EXTRA-SOUNDS-EN-WAV, EXTRA-SOUNDS-EN-ULAW,EXTRA-SOUNDS-EN-ALAW, EXTRA-SOUNDS-EN-GSM
После нажимаю Save & Exit
ekzorchik@srv-bionic:/usr/src/asterisk-16.5.1$ sudo make -j$((`nproc`+1)) ekzorchik@srv-bionic:/usr/src/asterisk-16.5.1$ sudo make install ekzorchik@srv-bionic:/usr/src/asterisk-16.5.1$ sudo make samples ekzorchik@srv-bionic:/usr/src/asterisk-16.5.1$ sudo make config ekzorchik@srv-bionic:/usr/src/asterisk-16.5.1$ sudo ldconfig ekzorchik@srv-bionic:/usr/src/asterisk-16.5.1$ cd ~/
Теперь делаем чтобы сервис работал не из под root
, а из под своей учетной записи:
ekzorchik@srv-bionic:~$ sudo groupadd asterisk ekzorchik@srv-bionic:~$ sudo useradd -d /var/lib/asterisk -g asterisk asterisk ekzorchik@srv-bionic:~$ sudo sed -i 's/#AST_USER="asterisk"/AST_USER="asterisk"/g' /etc/default/asterisk ekzorchik@srv-bionic:~$ sudo sed -i 's/#AST_GROUP="asterisk"/AST_GROUP="asterisk"/g' /etc/default/asterisk ekzorchik@srv-bionic:~$ sudo sed -i 's/;runuser = asterisk/runuser = asterisk/g' /etc/asterisk/asterisk.conf ekzorchik@srv-bionic:~$ sudo sed -i 's/;rungroup = asterisk/rungroup = asterisk/g' /etc/asterisk/asterisk.conf ekzorchik@srv-bionic:~$ sudo chown -R asterisk:asterisk /var/spool/asterisk /var/run/asterisk /etc/asterisk /var/{lib,log,spool}/asterisk /usr/lib/asterisk ekzorchik@srv-bionic:~$ sudo systemctl restart asterisk ekzorchik@srv-bionic:~$ sudo asterisk -rv Asterisk 16.5.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.5.1 currently running on srv-bionic (pid = 3172) srv-bionic*CLI> quit Asterisk cleanly ending (0). Executing last minute cleanups ekzorchik@srv-bionic:~$
Теперь нужно проверить, а работает ли Asterisk
с поддержкой pjsip
:
ekzorchik@srv-bionic:~$ sudo find / -name *pjsip.so /usr/src/asterisk-16.5.1/channels/chan_pjsip.so /usr/src/asterisk-16.5.1/res/res_hep_pjsip.so /usr/src/asterisk-16.5.1/res/res_pjsip.so /usr/lib/asterisk/modules/chan_pjsip.so /usr/lib/asterisk/modules/res_hep_pjsip.so /usr/lib/asterisk/modules/res_pjsip.so ekzorchik@srv-bionic:~$ sudo find /usr/src/asterisk-16*/* -name *.so | grep pjsip
из многообразия вывода модуль именуется, как chan_pjsip.so
ekzorchik@srv-bionic:~$ sudo nano /etc/asterisk/modules.conf [modules] autoload=yes
и т.д.
ekzorchik@srv-bionic:~$ sudo asterisk -rx "module show like chan_pjsip" Module Description Use Count Status Support Level chan_pjsip.so PJSIP Channel Driver 0 Running core 1 modules loaded ekzorchik@srv-bionic:~$ ekzorchik@srv-bionic:~$ sudo asterisk -rx "module show like res_pjsip.so" Module Description Use Count Status Support Level res_pjsip.so Basic SIP resource 45 Running core 1 modules loaded
из вывода видно, что модуль подгружен.
Итого я для себя составил пошаговую инструкцию как установить Asterisk 16
на Ubuntu 18.04 Server amd64
+ добавил поддержку pjsip
. На этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.