Облачное хранилище
Установка и настройка Asterisk и FreePBX на Ubuntu — схема работы VoIP сервера
Настройка Asterisk и FreePBX на Ubuntu

Если вам нужна гибкая корпоративная телефония с максимальным контролем, лучший вариант — установить 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 — только если оборудование “капризное”.


Полезные ссылки

Документация

Звуковые пакеты

Диагностика

Безопасность


💡 Советы и рекомендации

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 или сервер

Не ставь вместе с другими сервисами, чтобы избежать конфликтов пакетов и портов.