Моя цель: Поднять/Установить Asterisk 16
не из репозитариев, а из исходников на Ubuntu 20.04
внутри гипервизора Debian 10 + Proxmox 6
. Где гипервизор базируется на моем собственном железе Gigabyte C246 WU4
. Это мой домашний сервер в дополнении к HP MicroServer Gen8.
Ну поднял и что с того, а что дальше? А дальше хочу сделать и практически использовать персональную телефонию с внешним номером и внутренними номерами дабы не свой мобильный оставлять для связи поставщикам, клиентам. Также в планах сделать, чтобы через звонок на внешний номер от определенных номеров открывались ворота. Ладно пока остановлюсь на своих хотелках, разберу с самого начала от и до:
Виртуальная машина под осью Ubuntu 20.04 Server
на гипервизоре Debian 10 + Proxmox 6
, выделяю под VM
следующие характеристики:
CPU = 1 sockets (4 cores)
RAM = 4096Mb
HDD = 50Gb (M.2 Storage or SSD Storage)
Шаг №1:
Устанавливаю ОС Ubuntu 20.04 LTS Server
, система была установлен по сети через сетевую загрузку + применен скрипт базовой настройки, сделан снапшот виртуальной машины, когда я к нему возвращаюсь, то после в консоли виртуальной машины выполняю:
ekzorchik@srv-us2004a:~$ sudo rm -Rf /var/lib/apt/lists ekzorchik@srv-us2004a:~$ sudo apt-get update && sudo apt-get -y upgrade ekzorchik@srv-us2004a:~$ sudo reboot
Шаг №2:
В дефолтных репозитариях имеется пакет Asterisk
, но он не той версии которая мне нужна, я буду собирать из исходников. К сожалению Asterisk 18
мне не удалось собрать под Ubuntu 20.04 Server.
ekzorchik@srv-us2004a:~$ apt-cache show asterisk | grep Version Version: 1:16.2.1~dfsg-2ubuntu1 ekzorchik@srv-us2004a:~$
Шаг №3:
Устанавливаю зависимости для сборки Asterisk
из исходников:
ekzorchik@srv-us2004a:~$ sudo apt-get install -y build-essential wget libssl-dev libncurses5-dev libnewt-dev libxml2-dev linux-headers-$(uname -r) libsqlite3-dev uuid-dev git curl autoconf automake libtool cmake autoconf-archive unzip subversion net-tools
Шаг №4:
Собираю Asterisk 16
из исходников:
ekzorchik@srv-us2004a:~$ cd /usr/src ekzorchik@srv-us2004a:/usr/src$ sudo curl -O http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz ekzorchik@srv-us2004a:/usr/src$ sudo tar zxf asterisk-16-current.tar.gz ekzorchik@srv-us2004a:/usr/src$ cd asterisk-*/ ekzorchik@srv-us2004a:/usr/src/asterisk-*$ ekzorchik@srv-us2004a:/usr/src/asterisk-16.23.0$ sudo contrib/scripts/get_mp3_source.sh A addons/mp3 A addons/mp3/huffman.h A addons/mp3/tabinit.c A addons/mp3/Makefile A addons/mp3/README A addons/mp3/decode_i386.c A addons/mp3/dct64_i386.c A addons/mp3/MPGLIB_TODO A addons/mp3/mpg123.h A addons/mp3/layer3.c A addons/mp3/mpglib.h A addons/mp3/decode_ntom.c A addons/mp3/interface.c A addons/mp3/MPGLIB_README A addons/mp3/common.c Exported revision 202. ekzorchik@srv-us2004a:/usr/src/asterisk-16.23.0$ ekzorchik@srv-us2004a:/usr/src/asterisk-16.23.0$ sudo contrib/scripts/install_prereq install ITU-T telephone code: 7 ############################################# ## install completed successfully ############################################# ekzorchik@srv-us2004a:/usr/src/asterisk-16.23.0$ ekzorchik@srv-us2004a:/usr/src/asterisk-16.23.0$ sudo ./configure
На заметку: Важно чтобы терминал был разрешением не менее 80
на 21
иначе sudo make menuselect
не запустится.
ekzorchik@srv-us2004a:/usr/src/asterisk-16.23.0$ sudo make menuselect
Add-ons: отмечаю клавишей Enter format_mp3
Applications: отмечаю клавишей Enter app_macro
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
ekzorchik@srv-us2004a:/usr/src/asterisk-16.23.0$ sudo make -j$((`nproc`+1)) ekzorchik@srv-us2004a:/usr/src/asterisk-16.23.0$ sudo make install ekzorchik@srv-us2004a:/usr/src/asterisk-16.23.0$ sudo make progdocs ekzorchik@srv-us2004a:/usr/src/asterisk-16.23.0$ sudo make samples ekzorchik@srv-us2004a:/usr/src/asterisk-16.23.0$ sudo make config ekzorchik@srv-us2004a:/usr/src/asterisk-16.23.0$ sudo ldconfig ekzorchik@srv-us2004a:/usr/src/asterisk-16.23.0$ cd ~ ekzorchik@srv-us2004a:~$
Шаг №5:
Как и всегда мой сервис Asterisk
не будет использовать дефолтную работу от имени пользователя root
. Значит создадим специального пользователя и укажем, что от имени него запускать и работать Asterisk'у
:
ekzorchik@srv-us2004a:~$ sudo groupadd asterisk ekzorchik@srv-us2004a:~$ sudo useradd -r -d /var/lib/asterisk -g asterisk asterisk ekzorchik@srv-us2004a:~$ sudo usermod -aG audio,dialout asterisk ekzorchik@srv-us2004a:~$ sudo chown -R asterisk.asterisk /etc/asterisk ekzorchik@srv-us2004a:~$ sudo chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk ekzorchik@srv-us2004a:~$ sudo chown -R asterisk.asterisk /usr/lib/asterisk ekzorchik@srv-us2004a:~$ ekzorchik@srv-us2004a:~$ sudo nano /etc/default/asterisk AST_USER="asterisk" AST_GROUP="asterisk" ekzorchik@srv-us2004a:~$ sudo nano /etc/asterisk/asterisk.conf runuser = asterisk ; The user to run as. rungroup = asterisk ; The group to run as.
Шаг №6:
Запускаю сервис Asterisk:
ekzorchik@srv-us2004a:~$ sudo systemctl enable asterisk asterisk.service is not a native service, redirecting to systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable asterisk ekzorchik@srv-us2004a:~$ sudo systemctl restart asterisk.service ekzorchik@srv-us2004a:~$ sudo systemctl status asterisk.service | head -n5 ● asterisk.service - LSB: Asterisk PBX Loaded: loaded (/etc/init.d/asterisk; generated) Active: active (running) since Tue 2022-01-11 18:32:46 UTC; 50s ago Docs: man:systemd-sysv-generator(8) Process: 57302 ExecStart=/etc/init.d/asterisk start (code=exited, status=0/SUCCESS) ekzorchik@srv-us2004a:~$ ekzorchik@srv-us2004a:~$ sudo asterisk -rvv Asterisk 16.23.0, Copyright (C) 1999 - 2021, Sangoma Technologies Corporation 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.23.0 currently running on srv-us2004a (pid = 57324) srv-us2004a*CLI> srv-us2004a*CLI> quit Asterisk cleanly ending (0). Executing last minute cleanups ekzorchik@srv-us2004a:~$
Итого, сборка Asterisk
успешно завершена самой последней 16
версии, а не той что предлагается если бы я устанавливал из дефолтных репозитариев:
ekzorchik@srv-us2004a:~$ apt-cache show asterisk | grep Version Version: 1:16.2.1~dfsg-2ubuntu1 ekzorchik@srv-us2004a:~$ asterisk -V Asterisk 16.23.0 ekzorchik@srv-us2004a:~$
Если мне понадобится какой-либо модуль, то я вернуть в каталог куда устанавливал и через команду sudo make menuselect
отмечу его и заново произведу установку.
Шаг №7:
Проверяю, что если система Ubuntu 20.04 Server
будет перезагружена, сервис Asterisk
самостоятельно запустится:
ekzorchik@srv-us2004a:~$ sudo reboot ekzorchik@srv-us2004a:~$ sudo systemctl status asterisk | head -n5 ● asterisk.service - LSB: Asterisk PBX Loaded: loaded (/etc/init.d/asterisk; generated) Active: active (running) since Tue 2022-01-11 18:44:02 UTC; 14s ago Docs: man:systemd-sysv-generator(8) Process: 632 ExecStart=/etc/init.d/asterisk start (code=exited, status=0/SUCCESS) ekzorchik@srv-us2004a:~$ sudo netstat -tulpn | grep asterisk tcp 0 0 0.0.0.0:2000 0.0.0.0:* LISTEN 709/asterisk udp 0 0 0.0.0.0:51364 0.0.0.0:* 709/asterisk udp 0 0 0.0.0.0:4520 0.0.0.0:* 709/asterisk udp 0 0 0.0.0.0:4569 0.0.0.0:* 709/asterisk udp 0 0 0.0.0.0:2727 0.0.0.0:* 709/asterisk udp 0 0 0.0.0.0:5000 0.0.0.0:* 709/asterisk udp 0 0 0.0.0.0:5060 0.0.0.0:* 709/asterisk udp6 0 0 :::39678 :::* 709/asterisk ekzorchik@srv-us2004a:~$
Ответ, да! сервис стартует и порты ожидают слушаются.
На этом заметка завершена, с уважением автор блога Олло Александр aka ekzorchik
, продолжение следует.