FreePBX: установка и настройка на Debian с нуля — полное руководство

как установить и настроить FreePBX на Debian: транки SIP, внутренние номера, IVR, запись звонков, безопасность
Быстрый ответ
FreePBX — это веб-интерфейс поверх Asterisk. Установи Asterisk и FreePBX на Debian, настрой SIP-транк через провайдера, создай внутренние номера (Extensions), пропиши входящие и исходящие маршруты — и офисная АТС готова. Минимальное время от чистого сервера до первого звонка — 2-3 часа.

Диагноз: зачем тебе FreePBX и что тебя ждёт

Поднял офисную телефонию — она не работает. Провайдер говорит «всё с нашей стороны окей». Коллеги смотрят с немым вопросом. Знакомо?

FreePBX — это графический интерфейс для Asterisk. Asterisk сам по себе настраивается через конфиги в /etc/asterisk/, и это то ещё удовольствие — особенно когда нужно добавить 50 номеров или перенастроить IVR в пятницу вечером. FreePBX превращает это в веб-формы.

Что получишь на выходе из этой статьи:

  • рабочий FreePBX-сервер на Debian
  • SIP-транк до провайдера
  • внутренние номера с SIP-телефонами или softphone
  • входящие и исходящие маршруты
  • базовый IVR
  • запись звонков
  • переадресацию

Времени уйдёт 3-4 часа на чистой машине. Нужен сервер с Debian 11 или 12, root-доступ и статический IP. Всё.

Системные требования и совместимость версий

Перед тем как качать что попало — проверь совместимость. FreePBX 17 — текущая стабильная версия на момент публикации. Всегда проверяй актуальные релизы на wiki.freepbx.org перед установкой.

Компонент Минимум Рекомендуется Примечание
ОС Debian 11 Debian 12 Ubuntu 22.04 тоже подходит
Asterisk 20 LTS 21 18 EOL с октября 2025
FreePBX 16 17 16 поддерживается до 2025
PHP 8.1 8.2 PHP 7.x не поддерживается с FreePBX 17
MariaDB 10.6 10.11 LTS MySQL 8.x тоже работает
CPU 2 ядра 4 ядра Для <20 одновременных вызовов достаточно 2
RAM 2 GB 4 GB При записи звонков +1 GB
Диск 20 GB 100 GB Запись звонков ест место быстро

Архитектура: как это работает

Перед тем как вбивать первую команду — потрать три минуты и посмотри на схему. Потом будет меньше вопросов «а почему оно не работает».

%%{init: {
  'theme': 'base',
  'themeVariables': {
    'primaryColor': '#ffffff',
    'primaryTextColor': '#1e293b',
    'primaryBorderColor': '#94a3b8',
    'lineColor': '#64748b',
    'fontSize': '15px',
    'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
  },
  'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 50}
}}%%
flowchart TD
    A["SIP-провайдер / PSTN"] -->|"SIP-транк"| B["Asterisk + FreePBX"]
    B -->|"Internal SIP"| C["IP-телефоны / Softphone"]
    B -->|"Internal SIP"| D["SIP-шлюз / FXS адаптер"]
    D -->|"Аналоговая линия"| E["Обычный телефон"]
    F["Браузер администратора"] -->|"HTTPS :443"| G["FreePBX Web UI"]
    G -->|"PHP / AMI"| B
    style A fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
    style B fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
    style C fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#1e293b
    style D fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#1e293b
    style E fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#1e293b
    style F fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c
    style G fill:#f8fafc,stroke:#f97316,stroke-width:1px,color:#c2410c

Смотри: FreePBX — это только интерфейс. Asterisk делает всю реальную работу со звонками. FreePBX пишет конфиги Asterisk на основе того, что ты нажал в браузере. Поэтому если что-то не работает — смотри в логи Asterisk, а не в веб-интерфейс.

FreePBX Distro vs установка на Debian: что выбрать

Два пути. Sangoma предлагает FreePBX Distro — это готовый ISO на базе CentOS/AlmaLinux с уже установленным всем. Быстро, удобно, но ты привязан к их дистрибутиву.

Установка на Debian даёт полный контроль. Ты сам управляешь обновлениями ОС, безопасностью, системными сервисами. В продакшне я предпочитаю именно этот путь.

Параметр FreePBX Distro Debian + FreePBX
Время установки 30-40 минут 1-2 часа
Контроль над ОС Ограничен Полный
Обновления безопасности Зависят от Sangoma Стандартный Debian
Для тестовой среды Отлично Нормально
Для продакшна Приемлемо Предпочтительно
Поддержка Sangoma Официальная Сообщество

Дальше рассматриваем установку на Debian 12. Если тебе нужен Distro — качай ISO с sangoma.com и устанавливай как обычный Linux.

Таблица портов FreePBX

Порт Протокол Сервис Направление
80 TCP FreePBX Web UI (HTTP) Входящий
443 TCP FreePBX Web UI (HTTPS) Входящий
5060 UDP/TCP SIP-сигнализация Входящий/Исходящий
5061 TCP SIP TLS Входящий/Исходящий
10000-20000 UDP RTP (медиапотоки) Входящий/Исходящий
4445 TCP Asterisk Manager Interface (AMI) Локальный
8001 TCP Asterisk REST Interface (ARI) Локальный
8088-8089 TCP Asterisk WebSocket Входящий

Вот тут важно: порты 5060 и 10000-20000 должны быть открыты для SIP-провайдера. Не для всего интернета — только для IP-адресов провайдера. Об этом подробнее в разделе про безопасность.

Установка FreePBX на Debian 12

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

Начинаем с чистого Debian 12 Minimal. Никаких десктопных окружений, никакого лишнего ПО.

Обнови систему и установи базовые зависимости:


apt update && apt upgrade -y
apt install -y wget curl git unzip lsb-release gnupg2 \
  build-essential linux-headers-$(uname -r) \
  sox libsox-fmt-all mpg123 ffmpeg \
  net-tools nload htop vim

Отключи AppArmor — он конфликтует с Asterisk:


systemctl stop apparmor
systemctl disable apparmor
apt purge -y apparmor

Установка MariaDB

FreePBX хранит всю конфигурацию в базе данных. Ставим MariaDB 10.11 LTS:


curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash -s -- --mariadb-server-version=10.11
apt update
apt install -y mariadb-server mariadb-client
systemctl enable --now mariadb

Запусти первоначальную настройку безопасности:


mysql_secure_installation

Отвечай: пароль root — установи сложный и запомни его. Анонимных пользователей — удали. Удалённый root — запрети. Тестовую БД — удали. Перезагрузи привилегии — да.

Создай базу и пользователя для FreePBX:


CREATE DATABASE asterisk;
CREATE DATABASE asteriskcdrdb;
CREATE USER 'asterisk'@'localhost' IDENTIFIED BY 'СМЕНИ_ПАРОЛЬ_ЗДЕСЬ';
GRANT ALL PRIVILEGES ON asterisk.* TO 'asterisk'@'localhost';
GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO 'asterisk'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Установка PHP 8.2

FreePBX 17 требует PHP 8.1 или 8.2. В Debian 12 по умолчанию PHP 8.2 — отлично.


apt install -y php8.2 php8.2-cli php8.2-common php8.2-curl \
  php8.2-mbstring php8.2-mysql php8.2-gd php8.2-xml \
  php8.2-zip php8.2-bcmath php8.2-intl php8.2-opcache \
  php8.2-readline libapache2-mod-php8.2

Установи Apache (FreePBX использует его как веб-сервер):


apt install -y apache2
a2enmod rewrite ssl headers expires
systemctl enable --now apache2

Установка Asterisk

Asterisk собираем из исходников. Да, это дольше, но ты получаешь актуальную версию с нужными модулями.


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

Установи зависимости для сборки:


contrib/scripts/install_prereq install

Скрипт спросит про DAHDI и DPNSS — обычно не нужны. Жми Enter на всём.

Настрой и собери:


./configure --with-jansson-bundled --with-pjproject-bundled
make menuselect

В menuselect убедись что включены:

  • в Core Sound Packages: CORE-SOUNDS-RU-ULAW (русские промпты)
  • в Extra Sound Packages: EXTRA-SOUNDS-RU-ULAW
  • в Applications: app_macro (нужен для FreePBX)

make -j$(nproc)
make install
make samples
make config
ldconfig

Создай системного пользователя для Asterisk:


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

Настрой права:


chown -R asterisk:asterisk /etc/asterisk /var/lib/asterisk \
  /var/log/asterisk /var/spool/asterisk /usr/lib/asterisk

Укажи пользователя в конфиге Asterisk:


sed -i 's/#AST_USER="asterisk"/AST_USER="asterisk"/' /etc/default/asterisk
sed -i 's/#AST_GROUP="asterisk"/AST_GROUP="asterisk"/' /etc/default/asterisk

Запусти и проверь:


systemctl enable --now asterisk
systemctl status asterisk

Должен увидеть active (running). Если нет — смотри journalctl -u asterisk -n 50.

Установка FreePBX

Теперь сам FreePBX. Скачай актуальную версию — проверь на github.com/FreePBX перед скачиванием:


cd /usr/src
wget https://github.com/FreePBX/freepbx/releases/download/release/17.0/freepbx-17.0-latest.tgz
tar -xzf freepbx-17.0-latest.tgz
cd freepbx

Запусти установщик:


php ./install -n \
  --dbhost=localhost \
  --dbname=asterisk \
  --dbuser=asterisk \
  --dbpass=ТВОЙ_ПАРОЛЬ_ОТ_БД \
  --user=asterisk \
  --group=asterisk \
  --webroot=/var/www/html

Установка займёт 10-15 минут. Скрипт установит базовые модули FreePBX.

После установки запусти FreePBX:


fwconsole start
fwconsole reload

Настрой cron для FreePBX (он использует cron для задач обслуживания):


echo "*/5 * * * * asterisk /usr/sbin/fwconsole jobscheduler run > /dev/null 2>&1" > /etc/cron.d/freepbx

Настрой Apache для FreePBX:


# /etc/apache2/sites-available/freepbx.conf
<VirtualHost *:80>
    ServerName pbx.yourdomain.com
    DocumentRoot /var/www/html
    <Directory /var/www/html>
        Options -Indexes
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/freepbx_error.log
    CustomLog ${APACHE_LOG_DIR}/freepbx_access.log combined
</VirtualHost>

a2ensite freepbx
a2dissite 000-default
systemctl reload apache2

Открой браузер и перейди на IP-адрес сервера. Увидишь мастер первоначальной настройки FreePBX. Создай учётную запись администратора.

Настройка FreePBX: первые шаги в интерфейсе

Ты в веб-интерфейсе. Сверху — главное меню. Почти всё что тебе нужно живёт в разделах Connectivity и Applications.

Первым делом зайди в Admin — Module Admin и обнови все модули. Не пропускай этот шаг — базовая установка часто содержит старые версии.


fwconsole ma upgradeall
fwconsole reload

Настройка SIP-настроек Asterisk

Перед тем как создавать транки — зайди в Admin — Advanced Settings. Убедись что:

  • SIP Channel Driver: chan_pjsip (рекомендуется, не chan_sip)
  • SIP NAT: установи External IP если сервер за NAT

Если сервер за NAT — зайди в Settings — Asterisk SIP Settings. Укажи внешний IP или hostname. Добавь локальные сети в Local Networks. Это критично для правильной работы RTP-медиапотоков.

Настройка транка FreePBX (SIP Trunk)

Транк — это соединение с провайдером телефонии. Через него идут входящие и исходящие звонки на городские номера.

Добавление SIP-транка

Перейди в Connectivity — Trunks — Add Trunk — Add SIP (chan_pjsip) Trunk.

Заполни вкладку General:

  • Trunk Name: имя на английском, например «Provider_Rostelecom»
  • Outbound CallerID: твой городской номер в формате +79XXXXXXXXX

Вкладка pjsip Settings — General:

  • Username: логин от провайдера
  • Secret: пароль от провайдера
  • SIP Server: адрес SIP-сервера провайдера
  • SIP Server Port: обычно 5060
  • Context: from-trunk

Вкладка pjsip Settings — Advanced:

  • Registration: Send, если нужна регистрация (большинство провайдеров требует)
  • Auth_rejection_permanent: No

Нажми Submit, затем Apply Config.

Проверь регистрацию транка:


asterisk -rx "pjsip show registrations"

Должен увидеть статус Registered. Если нет — смотри раздел Troubleshooting.

Создание внутренних номеров FreePBX (Extensions)

Внутренние номера — это SIP-аккаунты для телефонов и softphone в офисе.

Перейди в Applications — Extensions — Add Extension — Add New SIP [chan_pjsip] Extension.

Вкладка General:

  • User Extension: номер, например 101
  • Display Name: Имя сотрудника
  • Secret: автоматически сгенерируется — скопируй или задай свой

Вкладка Advanced — вот тут важно для работы за NAT:

  • Transport: 0.0.0.0-udp
  • Force rport: Yes
  • Ice Support: Yes (для WebRTC-телефонов)

Submit — Apply Config.

Данные для SIP-телефона: сервер — IP твоего FreePBX, логин — 101, пароль — из поля Secret. Сделай так для каждого сотрудника. Номера обычно начинают с 100 или 200 — не принципиально.

Настройка входящих маршрутов FreePBX

Входящий маршрут определяет что делать со звонком который пришёл от провайдера. Куда его отправить — на конкретный номер, очередь, IVR.

Перейди в Connectivity — Inbound Routes — Add Incoming Route.

Заполни:

  • Description: внятное описание, например «Основной городской номер»
  • DID Number: твой городской номер. Если провайдер шлёт его в формате 9XXXXXXXXX — укажи именно так. Если +79 — укажи с плюсом. Узнай у провайдера или смотри в логах Asterisk
  • Set Destination: куда отправить звонок

Если у тебя один номер и нужно просто направить звонки на конкретного сотрудника — в Set Destination выбери Extensions и номер 101. Нажми Submit — Apply Config.

Позвони сам себе с мобильного — телефон 101 должен зазвонить.

Настройка исходящих маршрутов FreePBX

Исходящий маршрут говорит Asterisk через какой транк звонить и на какие номера.

Перейди в Connectivity — Outbound Routes — Add Outbound Route.

Вкладка Route Settings:

  • Route Name: например «Outbound_All»
  • Trunk Sequence: выбери свой транк

Вкладка Dial Patterns — это самое интересное. Здесь ты описываешь какие номера идут через этот маршрут:

Паттерн Что значит Пример
NXXXXXX 7-значный номер (городской) 5551234
8XXXXXXXXXX Мобильный через 8 89161234567
+7XXXXXXXXXX Мобильный через +7 +79161234567
00X. Международный 00491234567

Submit — Apply Config. Попробуй позвонить с внутреннего номера наружу.

Настройка IVR FreePBX (голосовое меню)

IVR — это «Нажмите 1 для отдела продаж, нажмите 2 для технической поддержки». Делается в два шага: сначала запись или загрузка аудио, потом создание IVR.

Загрузка аудиозаписи

Перейди в Admin — System Recordings — Add Recording.

Можно записать через телефон — набери *77 с внутреннего номера. Или загрузи готовый MP3/WAV файл. Формат для Asterisk: WAV, 8kHz, моно, PCM.

Конвертируй файл если нужно:


sox input.mp3 -r 8000 -c 1 -e signed-integer -b 16 output.wav

Создание IVR

Перейди в Applications — IVR — Add IVR.

Заполни:

  • IVR Name: например «Main_IVR»
  • Announcement: выбери загруженную запись
  • Timeout: 10 секунд
  • Invalid Retries: 3

В разделе IVR Entries добавь опции:

  • Digits: 1, Destination: Extensions — 101 (отдел продаж)
  • Digits: 2, Destination: Extensions — 102 (техподдержка)
  • Digits: 0, Destination: Extensions — 100 (секретарь)

Submit. Теперь в настройках входящего маршрута смени Set Destination на IVR — Main_IVR. Apply Config.

Запись звонков в FreePBX

Запись включается на уровне Extensions или Queues. Чини сейчас, пока не понадобилось.

Для конкретного внутреннего номера: Applications — Extensions — нужный номер — вкладка Advanced:

  • Call Recording: Always, Incoming, Outgoing или On Demand
  • Call Recording Format: wav49 (сжатый) или wav (несжатый)

Записи хранятся в /var/spool/asterisk/monitor/. Слушать можно через Admin — Call Event Log.

Внимание: место на диске
Запись звонков ест диск очень быстро. Один час разговора в wav — около 60 MB. При 10 активных операторах за рабочий день накапливается несколько гигабайт. Настрой автоматическую очистку старых записей.

Настрой автоматическую очистку через cron:


# Удалять записи старше 90 дней
echo "0 2 * * * asterisk find /var/spool/asterisk/monitor/ -name '*.wav' -mtime +90 -delete" >> /etc/cron.d/freepbx

Переадресация звонков в FreePBX

Три вида переадресации — разберись в них раз и навсегда.

Первый — безусловная переадресация (Call Forward Unconditional). Все звонки уходят на другой номер. Включается пользователем с телефона набором *72 + номер. Отключить: *73.

Второй — переадресация при недоступности (Call Forward No Answer). Если не ответил за N секунд — переадресация. *90 + номер / отключить *91.

Третий — переадресация при занятости. *52 + номер / *53.

Административно настроить переадресацию для номера: Applications — Extensions — нужный номер — вкладка Advanced — Call Forwarding. Укажи номер назначения.

Для более сложных сценариев используй Follow Me: Applications — Follow Me. Там можно указать несколько номеров, которые будут звонить одновременно или последовательно.

Настройка модулей FreePBX

FreePBX расширяется через модули. Бесплатные модули покрывают 90% задач среднего офиса. Платные модули от Sangoma нужны для конкретных сценариев: CRM-интеграции, продвинутой отчётности, видеозвонков.

Управление модулями: Admin — Module Admin.

Полезные бесплатные модули которые стоит установить сразу:

  • Call Recording — запись звонков
  • Conference Pro — конференц-звонки
  • Queues — очереди звонков для call-центра
  • Ring Groups — группы обзвона
  • Time Conditions — маршрутизация по времени (рабочие/нерабочие часы)
  • Announcements — воспроизведение объявлений
  • DISA — Direct Inward System Access

Через командную строку:


fwconsole ma install callrecording
fwconsole ma install conferences
fwconsole ma install queues
fwconsole ma install ringgroups
fwconsole ma install timeconditions
fwconsole reload

Маршрутизация по времени (нерабочие часы)

Это то что отличает взрослую АТС от наколеночной. В нерабочее время — проигрываем сообщение и/или переводим на голосовую почту.

Создай расписание: Applications — Time Conditions — Add Time Condition:

  • Time Group: создай через Applications — Time Groups (Пн-Пт, 9:00-18:00)
  • Matched Destination: IVR (рабочее время)
  • Unmatched Destination: Announcement — «Мы работаем с 9 до 18»

В входящем маршруте замени Set Destination на Time Condition.

Безопасность FreePBX-сервера

Критически важно: безопасность
Незащищённый FreePBX-сервер с открытым 5060 портом в интернете взламывают за несколько часов. Атакующие используют его для дорогих международных звонков. Счёт провайдера может прийти на десятки тысяч рублей за одну ночь. Этот раздел обязателен к выполнению.

Fail2ban для Asterisk


apt install -y fail2ban

Создай конфиг для Asterisk:


# /etc/fail2ban/jail.d/asterisk.conf
[asterisk]
enabled = true
port = 5060,5061
protocol = udp
filter = asterisk
logpath = /var/log/asterisk/fail2ban
maxretry = 5
bantime = 86400
findtime = 600

systemctl enable --now fail2ban

UFW Firewall


apt install -y ufw
ufw default deny incoming
ufw default allow outgoing

# SSH - только с доверенных IP
ufw allow from 192.168.1.0/24 to any port 22

# Веб-интерфейс FreePBX - только из локальной сети
ufw allow from 192.168.1.0/24 to any port 80
ufw allow from 192.168.1.0/24 to any port 443

# SIP - только от провайдера (замени на IP провайдера)
ufw allow from 1.2.3.4 to any port 5060 proto udp
ufw allow from 1.2.3.4 to any port 5061 proto tcp

# SIP от локальных телефонов
ufw allow from 192.168.1.0/24 to any port 5060 proto udp

# RTP - от провайдера и локальной сети
ufw allow from 1.2.3.4 to any port 10000:20000 proto udp
ufw allow from 192.168.1.0/24 to any port 10000:20000 proto udp

ufw enable

Отключи SIP-сканирование в Asterisk

В /etc/asterisk/pjsip.conf добавь в секцию [global]:


[global]
endpoint_identifier_order = auth_username,username,ip

Это значит: Asterisk не будет отвечать неизвестным источникам, что сильно затрудняет enumeration-атаки.

Смени SIP-порт

Опционально, но эффективно — поменяй стандартный порт 5060 на нестандартный. 90% сканеров проходят мимо.

В FreePBX: Settings — Asterisk SIP Settings — поменяй Bind Port с 5060 на, например, 15060. Не забудь обновить firewall-правила.

Права доступа к веб-интерфейсу

Включи Intrusion Detection в FreePBX: Admin — System Admin — Intrusion Detection. Это встроенный fail2ban для веб-интерфейса.

Смени пароль администратора: Admin — User Management. Используй длинный пароль — не менее 16 символов.

Резервное копирование FreePBX

Бэкап настраивается через Admin — Backup & Restore. Что бэкапить обязательно:

  • база данных asterisk и asteriskcdrdb
  • /etc/asterisk/ (конфиги)
  • /var/lib/asterisk/ (звуковые файлы, prompts)
  • /var/spool/asterisk/monitor/ (записи звонков — если нужны)

Создай автоматический бэкап через Admin — Backup & Restore — Add Backup:

  • Schedule: Daily, время 03:00
  • Storage Location: локальный или удалённый (SFTP/S3)
  • Retention: 7 дней локально

Или вручную через CLI:


fwconsole backup --backup-name="manual_$(date +%Y%m%d)"

Бэкап проверяй. Бэкап который ты не проверял — это просто файл на диске с неизвестным содержимым.

Обновление FreePBX

Перед обновлением — всегда бэкап. После бэкапа — бэкап ещё раз, потому что первый раз всегда почему-то не туда.

Обновление модулей:


fwconsole ma upgradeall
fwconsole reload

Обновление самого FreePBX:


fwconsole selfupgrade
fwconsole reload

Что проверить после обновления:

  • статус сервисов: systemctl status asterisk apache2 mariadb
  • регистрацию транков: asterisk -rx «pjsip show registrations»
  • тестовый звонок внутри и наружу

Если что-то сломалось — откат через Backup & Restore — выбери последний рабочий бэкап — Restore.

Проверка работоспособности

Прошёл все шаги — проверяй систематически, не по-ощущению.

Статус всех сервисов:


systemctl status asterisk apache2 mariadb fail2ban

Проверь регистрацию транков:


asterisk -rx "pjsip show registrations"
asterisk -rx "pjsip show endpoints"

Проверь активные каналы:


asterisk -rx "core show channels"

Посмотри статус внутренних номеров:


asterisk -rx "pjsip show contacts"

Зарегистрированные контакты покажут состояние: Avail (доступен), Unavail (недоступен), Unknown.

Тест звонка из консоли Asterisk:


asterisk -rx "channel originate Local/101@from-internal application Playback tt-monkeys"

Если телефон 101 зазвонил и ты услышал «обезьян» — всё работает.

Troubleshooting: типичные проблемы FreePBX

Транк не регистрируется

Транк не регистрируется - что смотреть
Самая частая причина — неправильные данные от провайдера или NAT-проблема. Смотри логи Asterisk в реальном времени.

asterisk -rvvv
# В консоли Asterisk:
pjsip set logger on
# Попробуй перерегистрироваться:
pjsip send register TrunkName

Что искать в логах: 403 Forbidden (неверный пароль), 404 Not Found (неверный сервер), 408 Timeout (недоступен сервер или firewall блокирует).

Звонок проходит, но нет звука

Классика. Причина — NAT. RTP-пакеты не доходят.

  • Проверь External IP в Settings — Asterisk SIP Settings
  • Проверь что порты 10000-20000 UDP открыты в firewall
  • Включи RTP debugging: asterisk -rx «rtp set debug on»

WebRTC-телефон не подключается

WebRTC требует WSS (WebSocket Secure) и HTTPS. Нужен SSL-сертификат.


apt install -y certbot python3-certbot-apache
certbot --apache -d pbx.yourdomain.com

После получения сертификата перейди в Settings — Asterisk SIP Settings — TLS/SSL — включи TLS и укажи пути к сертификату.

Неверный DID — звонки не попадают в маршрут

Посмотри в каком формате провайдер шлёт DID:


asterisk -rvvv
# Позвони с мобильного и смотри в консоли:
# "Accepting call" - будет написан DID

В входящем маршруте поставь именно тот формат который видишь в логах.

FreePBX веб-интерфейс не открывается


# Проверь Apache
systemctl status apache2
journalctl -u apache2 -n 30

# Проверь FreePBX
fwconsole status

# Перезапусти FreePBX
fwconsole restart

Ошибка «Could not execute PJSIP reload»


systemctl restart asterisk
fwconsole reload

Если не помогло — смотри /var/log/asterisk/full на синтаксические ошибки в конфигах.

Сбросить пароль администратора FreePBX


fwconsole userman --list
fwconsole userman --setpassword admin НОВЫЙ_ПАРОЛЬ

Нет звука в записях звонков

Проверь что sox установлен:


which sox
sox --version

Если не установлен — установи. FreePBX использует sox для конвертации форматов записи.

Альтернативные решения

FreePBX — не единственный вариант для офисной АТС на базе Asterisk.

3CX — коммерческое решение с бесплатным базовым тарифом. Проще в настройке, лучше документация, но платная лицензия при росте. Хороший вариант если нет своего линуксоида и нужна поддержка.

Issabel — форк FreePBX, развивается самостоятельно после того как Elastix закрылся. Совместим с FreePBX модулями. Можно рассмотреть если нужен CentOS-based дистрибутив.

Голое Asterisk без FreePBX — для тех кто хочет полный контроль и не боится конфигов. Меньше зависимостей, выше производительность, но конфигурирование вручную.

MikroTik RouterOS с встроенным SIP сервером — для очень маленьких офисов до 10 человек. Не FreePBX, но иногда достаточно.

Профилактика: как не сломать снова

Раз в неделю: asterisk -rx «pjsip show registrations» — убедись что транки живые.

Раз в месяц: fwconsole ma upgradeall — обновляй модули. Не обновлять тоже плохо, но и обновлять в пятницу вечером тоже не надо. Делай в среду утром.

Настрой мониторинг. Минимум — проверка доступности порта 5060 и веб-интерфейса через Zabbix или простой скрипт:


#!/bin/bash
# /usr/local/bin/check-freepbx.sh
RESULT=$(asterisk -rx "pjsip show registrations" 2>/dev/null | grep -c "Registered")
if [ "$RESULT" -lt 1 ]; then
  echo "ALERT: FreePBX trunk not registered" | mail -s "PBX Alert" admin@company.ru
fi

echo "*/5 * * * * root /usr/local/bin/check-freepbx.sh" >> /etc/cron.d/pbx-monitor

Документируй. Запиши в конфлюенс или хотя бы в текстовый файл: IP-адреса телефонов, логины транков, структуру IVR. Через год ты скажешь себе спасибо. Потому что капля никотина убивает лошадь, а один конфиг без документации убивает весь отдел в 23:00 в пятницу.

FAQ по FreePBX

Почему Asterisk запускается, но телефоны не регистрируются?

Чаще всего — firewall блокирует UDP 5060. Второй вариант — телефоны пытаются подключиться по SIP, а FreePBX настроен на PJSIP (разные порты и протоколы). Проверь через asterisk -rx «pjsip show endpoints» — есть ли твои номера в списке. Если есть, но статус Unavail — смотри сеть и firewall.

Как проверить качество звука и найти причину помех?


asterisk -rx "rtp set debug on"
asterisk -rx "pjsip set logger on"

Смотри на потерю пакетов в RTP-статистике. Плохое качество почти всегда это либо потери пакетов на сети, либо неправильный кодек. В транке и Extensions должен быть один кодек — ulaw или alaw для России. G.729 экономит трафик, но требует лицензию.

Что делать если FreePBX завис и не отвечает через веб?


systemctl restart apache2
fwconsole restart
# Если не помогло:
systemctl restart asterisk

Если вис повторяется — смотри /var/log/apache2/error.log и /var/log/asterisk/full. Скорее всего или не хватает памяти, или MySQL завис.

Можно ли использовать FreePBX с несколькими SIP-провайдерами одновременно?

Да. Создай несколько транков — по одному для каждого провайдера. В исходящих маршрутах настрой приоритет: основной транк первый, резервный второй. FreePBX будет пробовать первый, и если он недоступен — переключится на второй. Это делается через Trunk Sequence в настройках исходящего маршрута.

Где хранятся конфиги FreePBX и можно ли их редактировать вручную?

Конфиги Asterisk лежат в /etc/asterisk/. FreePBX генерирует их из базы данных. Если ты отредактируешь конфиг вручную — FreePBX перезапишет его при следующем apply config. Для кастомных настроек используй файлы с суффиксом _custom: например extensions_custom.conf. FreePBX включает эти файлы через include, но не перезаписывает.

Как настроить FreePBX за NAT роутером?

На роутере настрой port forwarding: UDP 5060 и UDP 10000-20000 на IP FreePBX-сервера. В FreePBX перейди Settings — Asterisk SIP Settings — укажи External IP Address (внешний IP роутера) и Local Network (например 192.168.1.0/24). Сохрани и примени.

Итог

Ты поднял FreePBX с нуля: Asterisk установлен, транк зарегистрирован, внутренние номера работают, IVR крутится, запись ведётся. Это рабочая офисная АТС, которую можно масштабировать до сотен номеров.

Дальше — по потребностям. Нужен call-центр — добавляй модуль Queues и настраивай очереди. Нужна интеграция с CRM — смотри в сторону AGI-скриптов или модуля Superfecta для caller ID lookup. Нужен мобильный доступ — настраивай WebRTC или VPN + SIP-клиент на смартфоне.

Если что-то не заработало - разберёмся
Телефония любит нюансы: у каждого провайдера свои форматы номеров, у каждой сети свои NAT-особенности. Если по этому руководству что-то не завелось — пиши в комментарии с выводом asterisk -rvvv в момент проблемы. Разберём.
Андрей Анатольевич
Author: Андрей Анатольевич

Руководитель ИТ / Кризис-менеджер 25 лет в IT: от инженера в МегаФоне до руководителя отдела. Знаю, как выглядит бардак: нестабильные сети, устаревшая инфраструктура, конфликты в команде, раздутые сроки. Помогаю бизнесу выходить из кризиса: навожу порядок в легаси, стабилизирую то, что разваливается, выстраиваю прогнозируемые процессы. Не раз возвращал к жизни ИТ-структуры — знаю цену хаосу. 📍 Ищу проект для полной реорганизации / стабилизации. 📬 Telegram: @over_dude ✉️ mail@it-apteka.com

Оставайтесь на связи

Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.

Подписаться на IT-Аптеку →

Мы ВКонтакте

IT-Аптека — советы, новости и помощь рядом.

Вступить в группу ВКонтакте →
Поделитесь:

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх