Обзор развертывания FreePBX на сервере¶
Предварительные требования и базовые условия¶
Перед развертыванием FreePBX на сервере убедитесь в выполнении следующих требований:
-
Операционная система: Debian 12.
-
Привилегии: Требуется доступ root или права
sudo. -
Сеть: Сервер должен иметь исходящий доступ в интернет для загрузки скрипта установки, пакетов и SSL-сертификатов.
-
Порты:
-
Порт
443(HTTPS) требуется для внешнего доступа к веб-интерфейсу. -
Порт
3000используется внутренне приложением.
-
FQDN конечной панели управления¶
Полное доменное имя (FQDN) для доступа к панели FreePBX формируется по следующему шаблону:
freepbx<Server ID>.hostkey.in
Порт доступа по умолчанию — 443 (HTTPS). Имя хоста автоматически устанавливается в соответствие с этим FQDN в процессе развертывания.
Структура файлов и каталогов¶
Приложение и его конфигурации хранятся в следующих местах:
-
Конфигурация Asterisk:
/etc/asterisk/ -
SSL-сертификаты:
/etc/asterisk/keys/(сертификаты Let's Encrypt хранятся здесь с именами<fqdn>.crtи<fqdn>.key). -
Конфигурация Apache:
/etc/apache2/sites-available/default-ssl.conf -
Конфигурация Nginx:
/data/nginx/user_conf.d/freepbx<Server ID>.hostkey.in.conf -
Файл Docker Compose:
/root/nginx/compose.yml -
Переменные окружения Nginx:
/data/nginx/nginx-certbot.env -
Логи установки:
/root/freepbx-install.log
Процесс установки приложения¶
FreePBX устанавливается с помощью специального скрипта-установщика для Debian 12. Процесс развертывания включает следующие шаги:
-
Система обновляет зеркало APT до
deb.debian.orgи обновляет кэш пакетов. -
Устанавливаются необходимые утилиты (
wgetиcurl). -
Имя хоста системы обновляется до целевого FQDN (
freepbx<Server ID>.hostkey.in). -
FQDN добавляется в файл
/etc/hosts. -
Скрипт установки FreePBX 17 для Debian 12 загружается с адреса
https://github.com/FreePBX/sng_freepbx_debian_install/raw/master/sng_freepbx_debian_install.sh. -
Скрипт выполняется. После успешного завершения сервер автоматически перезагружается.
-
После перезагрузки права владения файлами корректируются с помощью команды
fwconsole chown.
Права доступа и безопасность¶
Конфигурации безопасности включают следующие компоненты:
-
SSL/TLS: Включен Let's Encrypt для обеспечения шифрования HTTPS. Сертификаты генерируются для конкретного FQDN со следующими данными:
-
Страна:
NL -
Область/Штат:
NH -
Электронная почта:
ddevops@hostkey.com
-
-
Межсетевой экран (Firewall): Скрипт установки настраивает необходимые правила брандмауэра для трафика Asterisk и веб-трафика.
-
Управление сертификатами: Сертификат Let's Encrypt устанавливается по умолчанию для системы, и все интеграции обновляются для использования нового сертификата через команду
fwconsole cert.
Контейнеры Docker и их развертывание¶
Обратный прокси-сервер с завершением SSL развертывается с использованием контейнеров Docker, управляемых через docker compose.
-
Образ:
jonasal/nginx-certbot:latest -
Каталог: Контейнер управляется из каталога
/root/nginx. -
Режим сети:
host -
Томы (Volumes):
-
nginx_secrets: Присоединен к/etc/letsencryptдля хранения сертификатов. -
/data/nginx/user_conf.d: Присоединен к/etc/nginx/user_conf.dдля пользовательских конфигураций.
-
-
Окружение: Контейнер использует файл окружения, расположенный по пути
/data/nginx/nginx-certbot.env. -
Политика перезапуска:
unless-stopped
Файл docker compose сгенерирован и расположен по адресу /root/nginx/compose.yml.
Прокси-серверы¶
Nginx настроен как обратный прокси-сервер для обработки входящего HTTPS-трафика и его перенаправления на приложение FreePBX.
-
Конфигурация прокси: Файл конфигурации Nginx расположен по адресу
/data/nginx/user_conf.d/freepbx<Server ID>.hostkey.in.conf. -
Маршрутизация: Трафик на корневой путь
/перенаправляется наhttp://127.0.0.1:3000. -
Завершение SSL: Прокси-сервер обрабатывает завершение SSL-сессий, используя сертификаты, сгенерированные контейнером Nginx-Certbot.
-
Certbot: Контейнер
jonasal/nginx-certbotотвечает за генерацию и обновление сертификатов Let's Encrypt.
Настройки прав доступа¶
Права доступа к файлам и каталогам управляются следующим образом:
-
Каталог Asterisk: Каталог
/var/run/asteriskсоздается с правами владенияasterisk:asteriskи режимом0755. -
Права владения файлами: После установки выполняется команда
fwconsole chownдля обеспечения правильного владения файлами FreePBX. -
Каталоги Nginx:
-
/root/nginx: Владелецroot, группаroot, режим0755. -
/data/nginx: Используется для хранения файлов конфигурации и переменных окружения.
-
Расположение файлов конфигурации и данных¶
Ключевые пути к файлам конфигурации и данным:
| Компонент | Путь |
|---|---|
| Веб-интерфейс FreePBX | freepbx<Server ID>.hostkey.in |
| Конфигурация прокси Nginx | /data/nginx/user_conf.d/freepbx<Server ID>.hostkey.in.conf |
| Docker Compose | /root/nginx/compose.yml |
| SSL-сертификаты (Nginx) | Управляется томом nginx_secrets, отображающимся на /etc/letsencrypt |
| SSL-сертификаты (FreePBX) | /etc/asterisk/keys/<fqdn>.crt и /etc/asterisk/keys/<fqdn>.key |
| Конфигурация SSL Apache | /etc/apache2/sites-available/default-ssl.conf |
Доступные порты для соединения¶
Следующие порты используются приложением:
| Порт | Протокол | Назначение |
|---|---|---|
443 | TCP | Внешний HTTPS-доступ к веб-интерфейсу FreePBX. |
3000 | TCP | Внутреннее соединение между прокси Nginx и приложением FreePBX. |
Запуск, остановка и обновление¶
Управление службами FreePBX осуществляется через утилиту fwconsole.
-
Перезапуск служб FreePBX:
-
Перезагрузка конфигурации FreePBX:
-
Обновление сертификатов:
-
Управление Docker-прокси: Для управления контейнером прокси Nginx перейдите в каталог конфигурации и используйте
docker compose:
Система настроена на использование apache2 для обслуживания веб-интерфейса, который может быть перезаряжен через: