Категории

Установка Asterisk + FreePBX на Ubuntu с NGINX

2025-08-21 10:44:06 | Linux
asterisk, freepbx, ubuntu, nginx, voip, телефония, ip-атс, linux, debian, установка, настройка, asterisk 20, freepbx 16, freepbx 17, odbc, cdr, php-fpm, mariadb, node.js

Хотя самый быстрый способ развернуть систему — использовать официальный FreePBX Distro, в этой статье мы установим Asterisk + FreePBX «с нуля» на чистую Ubuntu с использованием NGINX вместо Apache. Инструкция актуальна для Ubuntu 20.04, 22.04 и 24.04, а также протестирована на Debian 12.

Мы установим:


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

1.1. Обновление системы и установка базовых пакетов

apt update
apt install -y wget tar ca-certificates curl gnupg cron

1.2. Настройка локали (русский язык)

Для поддержки русского интерфейса в FreePBX:

# Для Ubuntu:
apt install -y language-pack-ru

# Для Debian:
dpkg-reconfigure locales
# Выберите ru_RU.UTF-8

1.3. Настройка времени

timedatectl set-timezone Europe/Moscow
apt install -y chrony
systemctl enable chrony --now

1.4. Настройка брандмауэра (iptables)

Открываем необходимые порты:

iptables -I INPUT -p tcp --match multiport --dports 5060,5061 -j ACCEPT
iptables -I INPUT -p udp --match multiport --dports 5060,5061 -j ACCEPT
iptables -I INPUT -p tcp --match multiport --dports 80,443 -j ACCEPT
iptables -I INPUT -p udp --dport 10000:20000 -j ACCEPT

Сохраняем правила:

apt install -y iptables-persistent
netfilter-persistent save

1.5. Создание пользователя asterisk

useradd -m asterisk

2. Установка и настройка веб-сервера

2.1. Установка MariaDB

apt install -y mariadb-server
mysql_secure_installation

При выполнении mysql_secure_installation задайте пароль root, удалите анонимных пользователей, запретите удалённый вход root и удалите тестовую базу.

2.2. Установка NGINX

apt install -y nginx

Редактируем основной конфиг NGINX:

vi /etc/nginx/nginx.conf

В секции http добавьте:

client_max_body_size 128M;

Перезапускаем:

systemctl restart nginx

2.3. Установка PHP и компонентов

FreePBX 16 требует PHP 7.4, FreePBX 17 — PHP 8.1+. Пример для PHP 7.4:

PHP_VER=7.4
apt install -y php${PHP_VER}-fpm php${PHP_VER}-bcmath php${PHP_VER}-gd php${PHP_VER}-json php${PHP_VER}-mbstring php${PHP_VER}-mysqlnd php${PHP_VER}-snmp php${PHP_VER}-zip php${PHP_VER}-curl php${PHP_VER}-xml php${PHP_VER}-common

Если нужной версии PHP нет в репозитории, подключите ondrej/php:

add-apt-repository ppa:ondrej/php -y
apt update

Настройка php.ini

vi /etc/php/${PHP_VER}/fpm/php.ini

Измените параметры:

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

Настройка пула PHP-FPM

vi /etc/php/${PHP_VER}/fpm/pool.d/www.conf

Замените:

user = asterisk
group = asterisk

Перезапустите PHP-FPM:

systemctl restart php${PHP_VER}-fpm

2.4. Интеграция NGINX с PHP-FPM

Редактируем конфиг сайта по умолчанию:

vi /etc/nginx/sites-enabled/default

Убедитесь, что есть:

root /var/www/html;
index index.php index.html;

location ~ \.php$ {
    fastcgi_pass unix:/run/php/php${PHP_VER}-fpm.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 SERVER_NAME $host;
}

Проверка и перезагрузка NGINX:

nginx -t && systemctl reload nginx

2.5. Установка Node.js

FreePBX использует Node.js для некоторых модулей (например, PM2):

export NODE_VER=18
curl -fsSL https://deb.nodesource.com/setup_${NODE_VER}.x | bash -
apt install -y nodejs
node --version  # Проверка

3. Установка Asterisk 20

cd /usr/src
wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20-current.tar.gz
tar -zxf asterisk-*.tar.gz
cd asterisk-*

3.1. Установка зависимостей

./contrib/scripts/install_prereq install

Если спросит код страны — введите 7 (Россия).

3.2. Подготовка к сборке

make distclean
./contrib/scripts/get_mp3_source.sh  # Поддержка MP3

3.3. Конфигурация и сборка

./configure
make menuselect  # можно оставить по умолчанию
make -j $(nproc)
make install
make samples
make config

3.4. Настройка прав и автозапуска

vi /etc/asterisk/asterisk.conf

Раскомментируйте и установите:

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

Выставляем права:

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

3.5. Настройка модулей (важно!)

Не используйте chan_sip в Asterisk 20! Он устарел. Используйте chan_pjsip.

vi /etc/asterisk/modules.conf

Убедитесь, что:

; load = chan_sip.so  # закомментировано
load = chan_pjsip.so  # раскомментировано

3.6. Запуск Asterisk

systemctl enable asterisk
systemctl start asterisk
asterisk -rvv  # проверка

4. Установка FreePBX 16/17

cd ~
apt install -y sox mpg123
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-16.0-latest.tgz
tar -zxf freepbx-*.tgz
cd freepbx
./start_asterisk start

4.1. Запуск установки

./install -n --dbuser root --dbpass ваш_пароль --webroot=/var/www/html

Флаг -n — неинтерактивный режим. Замените ваш_пароль на пароль от MariaDB.

4.2. Дополнительные модули

fwconsole ma install pm2 cdr
fwconsole ma updateall
fwconsole reload --verbose

4.3. Первый запуск в браузере

Перейдите по адресу: http://IP_сервера

4.4. Фикс безопасности FreePBX

Редактируем:

vi /etc/asterisk/manager.conf

Замените:

; #include manager_additional.conf
; #include manager_custom.conf

На:

;include manager_additional.conf
;include manager_custom.conf

Перезапустите: systemctl restart asterisk


5. Решение проблем: CDR не работает

Если odbc show в CLI Asterisk показывает 0 активных подключений:

5.1. Установите ODBC и MariaDB-коннектор

apt install -y unixodbc odbcinst libmyodbc

5.2. Проверьте путь к драйверу

find / -name libmaodbc.so 2>/dev/null

5.3. Настройка odbcinst.ini

vi /etc/odbcinst.ini

Добавьте (если нет):

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

5.4. Настройка odbc.ini

vi /etc/odbc.ini

Убедитесь, что:

[MySQL-asteriskcdrdb]
Description = MySQL connection to 'asteriskcdrdb' database
Driver      = MariaDB
Server      = 127.0.0.1
Database    = asteriskcdrdb
UserName    = asterisk
Password    = asterisk
Port        = 3306

5.5. Перезапуск

systemctl restart asterisk
asterisk -rx "odbc show"

Теперь должно быть Number of active connections: 1.


6. Распространённые ошибки и решения

Ошибка: "The user asterisk cannot use this program (crontab)"

Решение:

rm /etc/cron.deny  # если есть и содержит asterisk

Ошибка: "don't understand ': Storage database:' from /etc/asterisk/voicemail.conf"

Решение:

vi /etc/asterisk/voicemail.conf

Замените : Storage database: на ; Storage database:

Полная переустановка (если что-то пошло не так)

rm -rf /var/www/html/*
mysql -u root -p -e "DROP DATABASE asterisk; DROP DATABASE asteriskcdrdb;"
# Затем повторите установку FreePBX

Заключение

Вы успешно установили полноценную IP-АТС на базе Asterisk и FreePBX с использованием NGINX. Система готова к настройке SIP-транков, внутренних номеров, очередей и IVR.

Рекомендуется:

Не забудьте прочитать SECURITY DOCUMENT, который появляется после установки Asterisk.

Комментарии

Пока нет комментариев. Будьте первым!

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

← Назад к списку статей

DISCLAIMER: Блог-эксперимент

Внимание: Cтатьи здесь сгенерированы нейросетью, пока не правил ошибки, только запустил его да и не до этого. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
НО!
Каждый кейс я реально делал минимум один раз. Серьёзно.
Сервера стоят, клиенты довольны, дата-центры не горят.
Это не просто копипаста — это опыт, выстраданный в бою, просто пересказанный через ИИ.
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA
Кто я | HSH | Контакты и регион