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

Обзор развертывания 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 и его выполнение с повышенными привилегиями.

  1. Скрипт установки загружается в /tmp/sng_freepbx_debian_install.sh.

  2. Скрипт выполняется, а вывод записывается в /root/freepbx-install.log.

  3. После успешного завершения сервер автоматически перезагружается для применения изменений.

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

    fwconsole reload
    

  • Установка сертификата по умолчанию:

    fwconsole cert --default=<certificate_id>
    

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

    fwconsole cert --updateall
    

  • Запуск прокси Nginx:

    docker compose up -d
    
    (Выполнить из каталога /root/nginx)

Служба Apache перезагружается автоматически после обновления сертификатов для применения новых конфигураций SSL.

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