Asterisk должен быть собран с поддержкой mysql (модули cdr_mysql,res_config_mysql). 

Сначала обновите вашу систему

sudo apt update && sudo apt full-upgrade -y

установите все необходимые пакеты зависимостей Asterisk:

sudo apt -y install build-essential git curl wget libnewt-dev libssl-dev libncurses5-dev subversion libsqlite3-dev libjansson-dev libxml2-dev uuid-dev default-libmysqlclient-dev

Убедитесь, что GCC и CMAKE установлены и работают в нашей локальной системе

make --version
gcc --version
cd /usr/src/ && sudo wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz && 
sudo tar xvf asterisk-18-current.tar.gz && cd asterisk-18*/ && sudo contrib/scripts/get_mp3_source.sh

Устанавливаем необходимые зависимости

sudo contrib/scripts/install_prereq install

в процессе предложить выбрать код страны ставим 7

Скрипт установит все необходимые пакеты и после успешного завершения выведет следующее сообщение:

#######################################
install completed successfully
#######################################

Очистим систему от временных файлов установочного пакета

make distclean

Теперь нам нужно проверить, присутствуют ли все зависимости в вашей системе, чтобы скомпилировать исходный код. Затем выполните следующую команду:

sudo ./configure

В конце вас встретит красивый логотип ASCII Asterisk.

Затем выберите модули, которые вы хотите скомпилировать и установить. Чтобы получить доступ к меню, введите следующее:

sudo make menuselect

выбираем следующие

Add-ons (See README-addons.txt)
[] chan_ooh323
[] format_mp3
[] res_config_mysql
[] cdr_mysql
Applications - добавить
[] app_macro
Call Detail Recording 
[ ] cdr_radius убрать
Channel Event Logging   
[ ] cel_radius убрать
Core Sound Packages
[] CORE-SOUNDS-RU-WAV
[] CORE-SOUNDS-RU-ULAW
[] CORE-SOUNDS-RU-ALAW
[] CORE-SOUNDS-RU-GSM
[] CORE-SOUNDS-RU-G729
[] CORE-SOUNDS-RU-G722
[] CORE-SOUNDS-RU-SLN16
[] CORE-SOUNDS-RU-SIREN7
[] CORE-SOUNDS-RU-SIREN14
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

По завершении должны получить:

menuselect changes saved!
make[1]: Leaving directory '/home/infoit/asterisk-18'

Чтобы начать компиляцию исходного кода, выполните команду

sudo make

Если все прошло успешно, вы должны получить:

+--------- Asterisk Build Complete ---------+
Asterisk has successfully been built, and   +
can be installed by running:                +
                                            +
              make install                  +
+-------------------------------------------+

После завершения компиляции установите Asterisk и его модули, набрав:

Затем установите Asterisk

sudo make install

Пример вывода:

 +---- Asterisk Installation Complete ------+
                                            +
YOU MUST READ THE SECURITY DOCUMENT         +
                                            +
Asterisk has successfully been installed.   +
If you would like to install the sample     +
configuration files (overwriting any        +
existing config files), run:                +
                                            +
For generic reference documentation:        +
make samples                                +
                                            +
        For a sample basic PBX:             +
            make basic-pbx                  +
                                            +
+-----------------  or ---------------------+
                                            +
You can go ahead and install the asterisk   +
program documentation now or later run:     +
                                            +
          make progdocs                     +
                                            +
Note This requires that you have            +
doxygen installed on your local system      +
+-------------------------------------------+

Установите документацию, как показано, если вы хотите

sudo make progdocs

Создание документации C-API. Это займет некоторое время.

Затем, наконец, используйте приведенные ниже команды для установки конфигураций и примеров

sudo make samples && 
sudo make config && 
sudo ldconfig

включить ротацию логов можно так

make install-logrotate

Создаем пользователя Asterisk и запускаем

sudo groupadd asterisk && 
sudo useradd -r -d /var/lib/asterisk -g asterisk asterisk && 
sudo usermod -aG audio,dialout asterisk && 
sudo chown -R asterisk.asterisk /etc/asterisk && 
sudo chown -R asterisk.asterisk /var/{lib,log,run,spool}/asterisk && 
sudo chown -R asterisk.asterisk /usr/lib/asterisk

Давайте подтвердим идентификатор пользователя Asterisk:

id asterisk

Чтобы настроить Asterisk для запуска от имени вновь созданного пользователя, откройте файл и раскомментируйте следующие две строки в начале (удалите # перед строками):

sudo sed -i 's/#AST_USER="asterisk"/AST_USER="asterisk"/' /etc/default/asterisk && 
sudo sed -i 's/#AST_GROUP="asterisk"/AST_GROUP="asterisk"/' /etc/default/asterisk && 
sudo sed -i 's/;runuser = asterisk/runuser = asterisk/' /etc/asterisk/asterisk.conf && 
sudo sed -i 's/;rungroup = asterisk/rungroup = asterisk/' /etc/asterisk/asterisk.conf

переместим и архивируем в домашнюю категорию

mv /etc/init.d/asterisk ~/asterisk.init.d.bak

Создайте свой новый сервис файл в/etc/systemd/system/asterisk.service

sudo tee /etc/systemd/system/asterisk.service<<EOF
[Unit]
Description=Asterisk PBX and telephony daemon.
Documentation=man:asterisk(8)
Wants=network.target
After=network.target
[Service]
Type=simple
User=asterisk
Group=asterisk
ExecStart=/usr/sbin/asterisk -f -C /etc/asterisk/asterisk.conf
ExecStop=/usr/sbin/asterisk -rx 'core stop now'
ExecReload=/usr/sbin/asterisk -rx 'core reload'
safe_asterisk emulation
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF

проверить свой сервис файл

nano /etc/systemd/system/asterisk.service

После изменения

systemctl daemon-reload

После внесения изменений перезапустите службу asterisk

sudo systemctl restart asterisk && sudo systemctl enable asterisk && sudo systemctl status asterisk

Проверьте подключение к Asterisk CLI

sudo asterisk -rvvvv

Вы должны увидеть результат, подобный этому:

Connected to Asterisk GIT-18-804b1987fb currently running on infoit (pid = 31426)
infoit*CLI>

выйти

Попробуем ввести парочку команд для проверки работы.

core show channels
core show  uptime
core show  sysinfo

Настройка межсетевого экрана

sudo apt update
sudo apt install ufw -y

Разрешите доступ к портам на брандмауэре, выполнив следующую команду:

sudo ufw allow 80
sudo ufw allow 22
sudo ufw allow 10000:20000/udp
sudo ufw allow  5060:5061/udp

проверить статус

sudo ufw status verbose

Status: inactive

включить

sudo ufw enable

прописать порты в конфиге

sudo tee /etc/asterisk/rtp.conf<<EOF
[general]
rtpstart=10000
rtpend=20000
EOF

проверить

nano /etc/asterisk/rtp.conf

просмотреть статус можно

sudo ufw status verbose

Комментарии (7)


  1. roswell
    08.10.2022 21:19
    +7

    1. MikeDeblin
      09.10.2022 22:51

      Это потому что вам не доводилось сталкиваться с российской продукцией.
      Вот как например мне использовать драйвер для этой железки?
      parabel.ru/download


      1. roswell
        09.10.2022 23:42

        А в чём именно проблема?


        1. MikeDeblin
          10.10.2022 00:57

          Собранные пакеты производитель не предоставляет. Собирается драйвер из исходников со всеми вытекающими из этого процесса последствиями.
          Вот процесс сборки рекомендованный производителем parabel.ru/products/quasar/quickstart


  1. arheops
    08.10.2022 23:17
    +2

    Прошу заметить, что в дебиан стандартный пакет астериск ставится в /usr/ и astdatadir = /usr/share/asterisk

    Потому ваш пакет будет с ним пересекаться и работать очень странно(пришел апдейт — работает стандартный, звуковые файлы в другом месте).
    Стандартая установка в дебиан делается через

    ./configure --prefix=/usr/

    А лучше вообще использовать пакет. Он в дебиан 11 стоит 16й версии. Преимуществ ставить версию 18 фиксированную, без апдейтов — никаких в большинстве случаев.


  1. Falseclock
    09.10.2022 14:55

    Ansible уже не в моде?


  1. Das_original
    10.10.2022 07:29
    +1

    А в чем смысл сборки из исходников, если это всё доступно из пакетов? И набор стандартный, ладно бы там были заморочки с оптимизацией, с LOW_MEMORY режимом для обслуживания более 5000 одновременных разговоров. Ну и куда аккуратнее можно было завернуть всё deb пакет. Тем более таких инструкций много, от версии к версии в них ничего не изменилось.