Обзор развертывания FreePBX на сервере¶
Предпосылки и предварительные требования¶
Для успешного развертывания приложения необходимо наличие сервера с операционной системой Debian 12. Требуется доступ к серверу с правами суперпользователя (root) для выполнения скриптов установки и настройки системы.
Система должна иметь доступ к интернету для загрузки установочного скрипта и пакетов. Необходимо заранее определить параметры для формирования полного доменного имени (FQDN) сервера, включая префикс, идентификатор сервера и зону домена.
Для работы веб-интерфейса и получения сертификатов безопасности должны быть открыты порты 80 и 443.
Процесс установки приложения¶
Установка приложения FreePBX версии 17 производится с помощью специализированного скрипта, который загружается с репозитория разработчиков. Процесс включает следующие этапы:
- Обновление репозиториев пакетов и установка утилит
wgetиcurl. - Настройка системного имени хоста и запись записи в файл
/etc/hostsдля корректной работы доменного имени. - Скачивание скрипта установки по адресу
https://github.com/FreePBX/sng_freepbx_debian_install/raw/master/sng_freepbx_debian_install.shв директорию/tmp. - Запуск скрипта установки
/tmp/sng_freepbx_debian_install.sh, который автоматически настраивает окружение Asterisk и FreePBX. - Перезагрузка сервера после завершения установки для применения всех изменений.
- Выполнение команды
fwconsole chownдля корректной настройки прав доступа к файлам после перезагрузки.
Контейнеры Docker и их запуск¶
Для обеспечения работы веб-сервера с поддержкой автоматического получения сертификатов используется контейнер Docker. Конфигурация контейнера описана в файле /root/nginx/compose.yml.
Контейнер запускает образ jonasal/nginx-certbot:latest в режиме host для прямого доступа к сетевым интерфейсам. Контейнер настроен на автоматический перезапуск при сбоях (restart: unless-stopped).
В контейнере монтируются следующие тома: - nginx_secrets в директорию /etc/letsencrypt для хранения сертификатов. - Локальная директория /data/nginx/user_conf.d в /etc/nginx/user_conf.d для пользовательских конфигураций Nginx.
Переменные окружения загружаются из файла /data/nginx/nginx-certbot.env, а адрес электронной почты для сертификатов задается как hkadm@hostkey.com.
Прокси серверы¶
В системе используется Nginx в качестве обратного прокси-сервера с поддержкой Let's Encrypt. Конфигурация прокси-сервера размещается в файле /data/nginx/user_conf.d/<prefix><server_id>.hostkey.in.conf.
В конфигурационном файле прокси-сервера для корневого пути (location /) настроена пересылка запросов на локальный адрес http://127.0.0.1:3000. Это позволяет маршрутизировать входящий трафик на приложение, работающее на порту 3000.
Базы данных¶
Приложение FreePBX использует встроенную базу данных, которая настраивается автоматически в процессе выполнения скрипта установки. Данные базы данных хранятся в стандартных директориях, определенных пакетом Asterisk и FreePBX.
Настройки прав¶
После установки и перезагрузки сервера необходимо выполнить команду fwconsole chown для корректной настройки владения файлами и директорий. Это обеспечивает правильную работу сервисов от имени пользователя asterisk.
Директория /var/run/asterisk создается с правами доступа 0755 и владельцем asterisk для обеспечения работы утилит управления.
Сертификаты безопасности¶
Для шифрования трафика используется сервис Let's Encrypt, интегрированный в систему через утилиту fwconsole. Процесс настройки включает:
- Генерацию сертификата с помощью команды
fwconsole certificates --generateс указанием типаle, доменного имени, страны, штата и электронной почты. - Получение идентификатора созданного сертификата через команду
fwconsole cert --list. - Установку сертификата в качестве основного с помощью команды
fwconsole cert --default=<id>. - Обновление всех интеграций с использованием сертификата командой
fwconsole cert --updateall. - Перезагрузку конфигурации с помощью
fwconsole reload.
После получения сертификата конфигурация веб-сервера Apache обновляется. В файле /etc/apache2/sites-available/default-ssl.conf пути к файлам сертификата и ключа заменяются на: - SSLCertificateFile: /etc/asterisk/keys/<fqdn>.crt - SSLCertificateKeyFile: /etc/asterisk/keys/<fqdn>.key
После изменения конфигурации выполняется проверка синтаксиса apache2ctl configtest и перезагрузка службы apache2.