Если вам нужна гибкая корпоративная телефония с максимальным контролем, лучший вариант — установить Asterisk и FreePBX вручную. Такой подход позволяет обновлять компоненты под себя, оптимизировать систему и понимать, как она работает изнутри.
В этом руководстве покажу, как шаг за шагом поднять современный Asterisk и FreePBX на Ubuntu или Debian, настроить NGINX, PHP, MySQL и права, а также избежать типичных ошибок.
Что вы получите после установки
- Asterisk, собранный из исходников
- Web-интерфейс FreePBX
- Аккуратно настроенный PHP, NGINX и MySQL
- Готовую систему для расширения и интеграций
- Понимание, как всё работает
1. Подготовка системы
Обновим систему, установим зависимости и настроим время — от этих мелочей сильно зависит стабильность SIP.
Обновление пакетов
apt update && apt upgrade -y
Базовые утилиты
apt install wget curl tar ca-certificates gnupg cron -y
Настройка локали
apt install language-pack-ru -y
Настройка времени
apt install chrony -y timedatectl set-timezone Europe/Moscow systemctl enable --now chrony
Открытие портов SIP + RTP
iptables -I INPUT -p udp -m multiport --dports 5060,5061 -j ACCEPT iptables -I INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT iptables -I INPUT -p udp --dport 10000:20000 -j ACCEPT apt install iptables-persistent -y netfilter-persistent save
Создание пользователя Asterisk
useradd asterisk -m
2. Установка MySQL, PHP и NGINX
FreePBX зависит от корректной работы всех трёх компонентов, особенно PHP.
Установка MySQL
apt install mysql-server -y
Создание баз:
mysql -p CREATE DATABASE asterisk DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE DATABASE asteriskcdrdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER 'asterisk'@'localhost' IDENTIFIED BY 'СложныйПароль'; GRANT ALL PRIVILEGES ON asterisk.* TO 'asterisk'@'localhost'; GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO 'asterisk'@'localhost'; FLUSH PRIVILEGES; QUIT;
Установка NGINX
apt install nginx -y
Редактирование конфига:
nano /etc/nginx/nginx.conf
Добавьте в секцию http:
client_max_body_size 128M;
Установка PHP
PHP_VER=8.2
apt install php${PHP_VER}-fpm php${PHP_VER}-bcmath php${PHP_VER}-gd php${PHP_VER}-json \
php${PHP_VER}-mbstring php${PHP_VER}-mysql php${PHP_VER}-xml php${PHP_VER}-curl \
php${PHP_VER}-zip php${PHP_VER}-snmp php${PHP_VER}-cli php${PHP_VER}-pear -y
3. Установка Asterisk из исходников
Установка зависимостей
apt install build-essential libxml2-dev libncurses5-dev uuid-dev libjansson-dev \ libssl-dev libsqlite3-dev libedit-dev libcurl4-openssl-dev -y
Скачивание Asterisk
cd /usr/src wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20-current.tar.gz tar xvf asterisk-20-current.tar.gz cd asterisk-20*/
Компиляция и установка
./configure make menuselect make -j$(nproc) make install make samples make config ldconfig
Назначение прав
chown -R asterisk:asterisk /var/run/asterisk /var/spool/asterisk /var/lib/asterisk \ /var/log/asterisk /etc/asterisk
sed -i 's|AST_USER=.*|AST_USER="asterisk"|' /etc/default/asterisk sed -i 's|AST_GROUP=.*|AST_GROUP="asterisk"|' /etc/default/asterisk
Запуск Asterisk
systemctl enable --now asterisk
4. Установка FreePBX
Подготовка
apt install nodejs npm -y npm install -g grunt
Скачивание
cd /usr/src wget https://mirror.freepbx.org/modules/packages/freepbx/freepbx-16.0-latest.tgz tar xvf freepbx-16.0-latest.tgz cd freepbx
Установка
systemctl stop asterisk sudo -u asterisk asterisk -U asterisk -G asterisk ./start_asterisk start ./install -n
5. Настройка NGINX
nano /etc/nginx/sites-available/freepbx.conf
Вставьте:
server {
listen 80;
server_name _;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
client_max_body_size 128M;
}
Активируем:
ln -s /etc/nginx/sites-available/freepbx.conf /etc/nginx/sites-enabled/ nginx -t && systemctl reload nginx
6. Настройка прав
chown -R asterisk:asterisk /var/www/html systemctl restart asterisk
7. Проверка и возможные ошибки
Откройте в браузере:
http://IP-адрес/
Если виден мастер FreePBX — всё OK.
Белая страница или ошибка 500
Обычно неправильный путь к PHP сокету.
Asterisk не стартует
Проверьте владельца каталогов:
ls -la /var/run/asterisk
Нет CDR
Убедитесь, что установлены модули CDR и используется правильная база.
FAQ по установке Asterisk + FreePBX на Ubuntu
1. Можно ли установить FreePBX без Asterisk?
Нет. FreePBX — это веб-интерфейс для управления Asterisk, поэтому он требует установленный и работающий Asterisk.
2. Какая версия Ubuntu лучше всего подходит?
Наиболее стабильные варианты: Ubuntu 20.04 LTS и 22.04 LTS.
Для продакшена LTS — обязательное условие.
3. Сколько оперативной памяти нужно?
Минимум — 1 ГБ, комфортно — 2–4 ГБ, для большого колл-центра — 8 ГБ+.
4. Можно ли установить Asterisk + FreePBX на виртуалку?
Да, это стандартный вариант: VMware, Proxmox, Hyper-V, KVM — всё подходит.
5. Нужно ли пробрасывать порты наружу?
Да:
SIP: 5060/5061
RTP: 10000–20000
AMI/HTTPS — по необходимости.
Важно: не публикуй 5060 напрямую без Fail2Ban и ACL — это открытая дверь для сканеров.
6. Что делать, если FreePBX не запускается после установки?
Проверить:
systemctl status apache2 systemctl status asterisk fwconsole restart
Чаще всего проблема в правах или зависимостях PHP.
7. Asterisk не регистрирует SIP-телефон. Почему?
Основные причины:
- NTP не синхронизирован
- неправильный пароль/логин
- SIP-алгоритмы телефона несовместимы
- NAT не настроен
- провайдер SIP блокирует порты
8. Как включить русскую локализацию?
В модуле Sound Languages или вручную установкой русских звуковых пакетов.
9. FreePBX тормозит — что делать?
Проверь:
- SSD вместо HDD
- Apache event MPM
- отключение неиспользуемых модулей FreePBX
- кэширование (php-opcache)
10. Когда лучше использовать PJSIP, а когда Chan_SIP?
PJSIP — современный и рекомендуемый.
Chan_SIP — только если оборудование “капризное”.
Полезные ссылки
Документация
- Официальный сайт Asterisk – https://www.asterisk.org/
- FreePBX Docs – https://wiki.freepbx.org/
- Asterisk Wiki – https://wiki.asterisk.org/
Звуковые пакеты
- Русские голосовые файлы для Asterisk — http://phonex.ru/asterisk-sounds/
Диагностика
- Asterisk CLI команды — https://wiki.asterisk.org/wiki/display/AST/Asterisk+CLI+Command+Reference
Безопасность
- Руководство по настройке Fail2Ban под Asterisk — https://www.fail2ban.org/
💡 Советы и рекомендации
1. Не ставь Asterisk + FreePBX на старые версии PHP
FreePBX требователен к версиям. Лучше использовать:
- PHP 7.4 для FreePBX 15
- PHP 8.x для FreePBX 17
Если поставить неподдерживаемую версию — половина модулей не загрузится.
2. DNS + NTP — обязательная проверка
VoIP без точного времени превращается в хаос: регистрация падает, звук пропадает, звонки отваливаются.
3. Используй отдельного пользователя для SSH
root + публичный IP = приглашение ботам.
Создай пользователя, отключи root SSH и включи fail2ban.
4. Обязательно ограничивай доступ к панели FreePBX
Через:
- firewall-cmd
- ufw
- iptables
- Cloudflare Tunnel
FreePBX — лакомая цель для атак.
5. Делай бэкапы FreePBX перед обновлениями
Стандартный модуль Backup & Restore — вполне надёжный.
6. Если работаешь через NAT — сразу включи NAT Settings
Иначе звук может пропадать в одну сторону.
7. Для продакшена — выделенный VPS или сервер
Не ставь вместе с другими сервисами, чтобы избежать конфликтов пакетов и портов.


