
Asterisk FreePBX на Debian 12
Asterisk с интерфейсом FreePBX дает множество преймуществ для простоты настройки и обслуживании АТС. Данный обзор сделан при разработке перехода организации с тяжелого дорогого устаревшего CISCO CUCM с парком аппаратов CISCO, на бесплатное решение Asterisk+FreePBX.
- подготовка системы
- установка WEB окружения
- установка Asterisk и FreePBX
- Настройка
- CISCO CP-6921
- Asterisk<>CISCO CUCM
Подготовка системы
Установка пакетов
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/