Перейти к содержанию

Обзор развертывания 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. Процесс развертывания включает следующие шаги:

  1. Система обновляет зеркало APT до deb.debian.org и обновляет кэш пакетов.

  2. Устанавливаются необходимые утилиты (wget и curl).

  3. Имя хоста системы обновляется до целевого FQDN (freepbx<Server ID>.hostkey.in).

  4. FQDN добавляется в файл /etc/hosts.

  5. Скрипт установки FreePBX 17 для Debian 12 загружается с адреса https://github.com/FreePBX/sng_freepbx_debian_install/raw/master/sng_freepbx_debian_install.sh.

  6. Скрипт выполняется. После успешного завершения сервер автоматически перезагружается.

  7. После перезагрузки права владения файлами корректируются с помощью команды 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:

    fwconsole restart
    

  • Перезагрузка конфигурации FreePBX:

    fwconsole reload
    

  • Обновление сертификатов:

    fwconsole cert --updateall
    

  • Управление Docker-прокси: Для управления контейнером прокси Nginx перейдите в каталог конфигурации и используйте docker compose:

    cd /root/nginx
    docker compose up -d
    docker compose down
    

Система настроена на использование apache2 для обслуживания веб-интерфейса, который может быть перезаряжен через:

systemctl reload apache2

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×