Menu
Asterisk FreePBX на Debian 12

Asterisk FreePBX на Debian 12

Asterisk с интерфейсом FreePBX дает множество преймуществ для простоты настройки и обслуживании АТС. Данный обзор сделан при разработке перехода организации с тяжелого дорогого устаревшего CISCO CUCM с парком аппаратов CISCO, на бесплатное решение Asterisk+FreePBX.

Подготовка системы

Установка пакетов

apt update
apt -y upgrade
apt install wget tar ca-certificates curl gnupg cron mariadb-server mariadb-client unixodbc odbcinst odbc-mariadb nginx lsb-release apt-transport-https ca-certificates software-properties-common sox mpg123 -y

языковые настрйоки 

dpkg-reconfigure locales

Выбрать ru_RU.UTF-8

создать пользователя

groupadd asterisk
useradd -r -d /var/lib/asterisk -g asterisk asterisk
usermod -aG audio,dialout asterisk

Настроить БД

mysql_secure_installation
Switch to unix_socket authentication [Y/n] n
Change the root password? [Y/n] n
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

#mysql
> CREATE DATABASE asterisk DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
> CREATE DATABASE asteriskcdrdb DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
> CREATE USER 'asterisk'@'localhost' IDENTIFIED BY 'asterisk321';
> GRANT ALL PRIVILEGES ON asterisk.* TO 'asterisk'@'localhost';
> GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO 'asterisk'@'localhost';
> QUIT

Настроить ODBC

/etc/odbcinst.ini:

[MySQL]
Description = ODBC for MySQL (MariaDB)
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmaodbc.so
FileUsage = 1

/etc/odbc.ini

[MySQL-asteriskcdrdb]
Description = MySQL connection to 'asteriskcdrdb' database
Driver = MySQL
Server = localhost
Database = asteriskcdrdb
Port = 3306
Socket = /var/run/mysqld/mysqld.sock
Option = 3

установка WEB окружения

Настрйока Nginx и PHP

Установка альтернатиивного источника PHP для 8.2

sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://ftp.mpi-inf.mpg.de/mirrors/linux/mirror/deb.sury.org/repositories/php/apt.gpg
sudo sh -c 'echo "deb https://ftp.mpi-inf.mpg.de/mirrors/linux/mirror/deb.sury.org/repositories/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt update

PHP_VER=8.2
apt install php${PHP_VER}-fpm php${PHP_VER}-bcmath php${PHP_VER}-gd php${PHP_VER}-mbstring php${PHP_VER}-mysqlnd php${PHP_VER}-snmp php${PHP_VER}-zip php${PHP_VER}-curl php${PHP_VER}-xml --no-install-recommends

Изменить параметры /etc/php/=8.2/fpm/php.ini:

...
upload_max_filesize = 128M
...
post_max_size = 128M
...
date.timezone = "Europe/Moscow"
...
memory_limit = 512M

Создать pool PHP /etc/php/8.2/fpm/pool.d/asterisk.conf

[asterisk]

user = asterisk
group = asterisk

listen = /run/php/php-fpm-asterisk.sock
listen.owner = www-data
listen.group = www-data

pm = dynamic
pm.max_children = 10
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 6

Настроить ngix

Изменить /etc/nginx/sites-enabled/default:

http {

   client_max_body_size 128M;
  ...
  server {
      ...
      root /var/www/html;
      ...
      index index.php ...
      ...
      location ~ \.php$ {
          set $root_path /var/www/html;
          fastcgi_pass unix:/run/php/php-fpm-asterisk.sock;
          fastcgi_index index.php;
          include fastcgi_params;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          fastcgi_param PATH_INFO $fastcgi_path_info;
          fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
          fastcgi_param SERVER_NAME $host;
      }
      ...

systemctl restart php8.2-fpm
systemctl restart nginx

NodeJS

export NODE_VER=18
curl -sL https://deb.nodesource.com/setup_${NODE_VER}.x | bash -
apt install nodejs
node --version

установка Asterisk и FreePBX

Asterisk 20

wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20-current.tar.gz
tar -zxf asterisk-*.tar.gz
cd asterisk-*/
./contrib/scripts/install_prereq install

Если

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

,то всё ОК

make distclean
./contrib/scripts/get_mp3_source.sh
./configure

Если 

configure: Menuselect build configuration successfully completed
[...картинка...]

, то все ОК

Выбор параметров

make menuselect

Параметры

Add-ons (See README-addons.txt)
+--> Select format_mp3
Applications
+--> Select app_macro
Bridging Modules
Channel Event Logging
Channel Drivers
+---> chan_sip (Если требуется подключение странных устройств)
Codec Translators
+---> Select all External Codecs
Format Interpreters
Dialplan Functions
PBX Modules
Resource Modules
Test Modules
Compiler Flags
Utilities
AGI Samples
Core Sound Packages
+--> Select WAV, ULAW, ALAW, GSM, G729, G722
Music On Hold File Packages
+--> Select WAV, ULAW, ALAW, GSM, G729, G722
MENUSELECT_EXTRA_SOUNDS
+--> Select WAV, ULAW, ALAW, GSM, G729, G722

СБорка 

make -j `nproc`

Если 

 +                make install               +
+-------------------------------------------+

 , то выполнить установку

 make install

 Если 

 +---- Asterisk Installation Complete -------+

 , то 

make config
make samples

Исправить /etc/asterisk/asterisk.conf

Раскомментировать

runuser = asterisk
rungroup = asterisk
defaultlanguage = ru
documentation_language = ru_RU

Применить владельца:

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

Если нужно, добавить chan_sip (chan_sip является устаревшим )

/etc/asterisk/modules.conf

load = chan_sip.so

Проверка настроек 

asterisk -c
systemctl enable asterisk
systemctl start asterisk

Установка FreePBX

cd ~
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-17.0-latest.tgz
tar -zxf freepbx-*.tgz
cd freepbx
./start_asterisk start

Если 

STARTING ASTERISK
Asterisk is already running

, то устанавливаем

./install -n --dbuser=asterisk --dbpass=asterisk321 --webroot=/var/www/html

Если

You have successfully installed FreePBX

, то установить модели

fwconsole ma install pm2 cdr
fwconsole ma updateall
; модуль временнЫх групп
fwconsole ma downloadinstall timeconditions
fwconsole ma install timeconditions
fwconsole reload --verbose

Зайти на http://<IP_адрес_сервера>.

Установить язык и временную зону

Настройка

Отладка

Показать модули

  module show 

Включить/отдключить отладку по протоколу

  pjsip set logger on/off

Настройка аппаратов CISCO СЗ-6921

(аппараты "любят" TCP и короткие пароли)

Для теста можно запустить Tftpd32 

- выложить файлы настроек и прошивку

 BOOT69xx.0-0-0-14.zz.sgn
CTLSEP000000000000.tlv
dialplan.xml
DSP69xx.12-4-123-2.160119.zz.sgn
ITLSEP000000000000.tlv
SEP000000000000.cnf.xml
SIP69xx.9-4-1-3SR3.loads
SIP69xx.9-4-1-3SR3.zz.sgn
XMLDefault.cnf.xml

 , где 000000000000 -mac адрес телефона

 Пример директории с конфигурацией и прошивкой 69xx-SIP-9-4-1-3SR3

 В конфигурации  SEP000000000000.cnf.xml нужно исрпавить параметры адреса сервера, портов и пароля.

  Для постоянного использования

- создать TFTP сервер в подсети для телефонии

- в параметрах DHCP указать TFTP Option 66 на этот сервер

- TODO написать формирователь конфигурации на основе BD.

Настроить аппарат.

Сбросить настройки аппарата:

- Включить питание с зажатым #.
- При позеленении линий ввести последовательно 123456789*0#, после чего загорится красным MUTE микрофона.
(при вводе и нажатии 1 линии 1 и 2 покраснеют и далее по мере ввода последовательности не должны позеленеть, иначе нужно вводить заново)

Настройка сети

- Установить в Настройки - Админ настр.- Натсройки сети - ipv4 - Альтернтивный tftp - ДА
- Установить в Настройки - Админ настр.- Натсройки сети - ipv4 - Альтернтивный tftp1 - адрес своего tftp
- он сразу начнет качать конфигурацию и прошивку, либо сделать принудительно - (шестерня - ***#***)

Настройка FreePBX под аппарат

  Включить модуль chan_sip.so в asterisk в "Администратор -> Модули Asterisk"

 Включить канал старого SIP в "Общие настройки - Дополнительные настройки" -> SIP Channel Driver -> Both

 Настроить прослушивание на портах для SIP и PJSIP в "Общие настройки - Asterisk SIP settings":

 Включить на обоих TCP и настроить порты
5060 - для PJSIP, 5160 - для SIP legacy
SIP Legacy параметры:
-Notify Ringing - yes
-Notify Ringing - yes
-Enable TCP - yes

 Применить изменения.

Создать внутренний номер типа SIP Legacy с параметрами (где 500 - номер):

Общие:
-Отображаемое имя  - имя
-Исходящий Caller ID - 500
-секрет - Пароль не более 8 символов

Расширенные
-Порт - 5160

(в конфигурации телефона должен быть прописан этот порт)

Asterisk-CISCO CUCM

astersk trunk <-> CUCM client

* 4321 - номер телефона на CUCM

На стороне CUCM 

Создать пользователя CUCM: User Management - End User 

User ID - 4321
Self-Service User ID - 4321
Last nameRequired Field - 4321
Digest Credentials - password

Создать устройство CUCM:

Device - Phone - Add new - Third Party SIP device Basic:
MAC AddressRequired Field - 123412341234 (любой мак)
Description - Asterisk
Owner User IDRequired Field - 4321 (выбрать)
SIP Profile - Standart SIP Porfile
Digest User - 4321
Association - Добавить линию 4321

У пользователя 4321 в User Management - End User  добавить созданное устройство

3 На стороне Asterisk Создать транк SIP pjsip

>Общие
Название транка - trunk-Asterisk-CUCM
Исходящий CallerID - 4321

>pjsip Общие настройки
Имя пользователя - 4321
Auth username - 4321
Секрет - password
Аутентификация - Исходящий
SIP сервер - CUCM-ip
Транспорт  - х.х.х.х tcp
>Расширенные
Send Line in Registration - Да
Контактная персона  - 4321
От Домена - CUCM-ip
От Пользователя - 4321

Возможные проблемы

При создании группы вызова, происходит завершение из-за ошибки доступа к серверу FastAGI.

Решение: Выключить сервер FastAGI - Общие настройки - Дополнительные - серверу Launch local AGIs through FastAGI Server - Нет

Источники 

 https://sangomakb.atlassian.net/wiki/spaces/FP/pages/10682545/How+to+Install+FreePBX+17+on+Debian+12+with+Asterisk+21

! https://unitum.ru/articles/freepbx16-asterisk18-debian12

https://www.dmosk.ru/instruktions.php?object=asterisk-freepbx-ubuntu

Настрйка

https://novofon.com/instructions/calls/freepbx1415-voip/

Включение chan_sip 

https://sangomakb.atlassian.net/wiki/spaces/FP/pages/242581508/Using+FreePBX+17+with+chan_sip

https://backnet.ru/2017/07/17/asterisk-freepbx-i-cisco-cp-6921/

Транки

https://help.ringostat.com/ru/articles/6485623-freepbx-13-14-%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B2-%D1%80%D0%BE%D0%BB%D0%B8-sip-%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D0%B0

Транк на КУКМ

https://www.youtube.com/watch?v=k1N-6R-XRIw

Прошивка телефонов в SIP

https://documentation.emetrotel.com/cisco-convert-6921-6941-6961-from-sccp-to-sip-protocol/

https://voxlink.ru/kb/ip-phones-configuration/cisco/nastrojka-telefonnogo-apparata-cisco-6921/

https://habr.com/ru/articles/585822/

https://habr.com/ru/articles/177947/

https://backnet.ru/2017/07/17/asterisk-freepbx-i-cisco-cp-6921/