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