Обзор развертывания BrainyCP на сервере¶
Предпосылки и предварительные требования¶
Для корректной работы BrainyCP и связанных с ним сервисов необходимы следующие базовые условия:
- Сервер с операционной системой Ubuntu (поддерживаемые версии 20.04 и 22.04).
- Доступ к корневой учетной записи (
root) с правами sudo. - Установленный пакет
wget(устанавливается автоматически, если его нет). - Подключение к интернету для загрузки образов Docker и сертификатов Let’s Encrypt.
Структура файлов и каталогов¶
После выполнения установки будут созданы и использованы следующие каталоги и файлы:
Кроме того, в корневом каталоге /root будет расположен скрипт установки BrainyCP (install.sh), который был загружен с удалённого источника.
Обратите внимание, что все файлы находятся под владельцем root и имеют соответствующие права доступа (0644 для конфигурационных файлов, 0755 для каталогов).
Права доступа и безопасность¶
- Каталог
/root/nginxпринадлежит пользователюrootи имеет права0755. - Файл
compose.ymlимеет права0644и принадлежитroot. - Скрипт установки
install.shпосле загрузки получает права0700, чтобы его можно было выполнять только владельцем. - Доступ к папке
/data/nginx/user_conf.dтоже осуществляется от имениroot. Содержимое этой папки монтируется в контейнер как/etc/nginx/user_conf.d, где Nginx использует эти конфигурации.
Базы данных¶
В текущем наборе файлов информация о базе данных отсутствует, значит BrainyCP использует собственный механизм хранения данных, который инициализируется во время установки скриптом install.sh. Дополнительных настроек БД со стороны пользователя не требуется.
Контейнеры Docker и их запуск¶
НGINX‑certbot¶
Главный контейнер, отвечающий за выдачу HTTPS‑сертификатов и проксирование трафика, создаётся по шаблону compose.yml.j2. После генерации файла compose.yml в каталоге /root/nginx выполняется команда:
Из файла compose.yml видно, что:
- Используется образ
jonasal/nginx-certbot:latest. - Контейнер запускается в режиме
network_mode: host, что позволяет напрямую прослушивать порты 80 и 443. - Внешний том
nginx_secretsмонтируется в/etc/letsencrypt, чтобы сохранять сертификаты Let’s Encrypt. - Папка
/data/nginx/user_conf.dмонтируется в/etc/nginx/user_conf.dвнутри контейнера, где размещены пользовательские конфиги Nginx. - Переменная окружения
CERTBOT_EMAILустановлена наhkadm@hostkey.comдля уведомлений о истечении сертификатов. - Контейнер автоматически перезапускается (
restart: unless-stopped).
Модификация Nginx‑конфигурации¶
Перед запуском контейнера выполняется изменение строки proxy_pass в файле конфигурации Nginx:
Старая строка с проксированием удаляется, а вместо неё вставляется:
Таким образом, трафик, проходящий через Nginx, перенаправляется на локальный сервис, работающий на порту 8002.
Прокси‑сервера¶
В системе используется Nginx в контейнере jonasal/nginx-certbot. Он:
- Обрабатывает запросы по HTTPS, автоматически выдает сертификаты Let’s Encrypt.
- Проксирует запросы к внутреннему приложению, расположённому на порту 8002.
- Использует кастомный домен (указывается в файле конфигурации Nginx, не представлен в шаблонах).
Настройки прав, запуск, остановка и обновление¶
Запуск¶
Контейнеры автоматически стартуют в фоне. Статус можно проверить:
Остановка¶
Обновление образа¶
Перезапуск после обновления¶
Если требуется принудительно перезапустить контейнер без удаления томов:
Таким образом, после завершения установки BrainyCP и запуска контейнера, сервис будет доступен по HTTPS с автоматическим управлением сертификатами и корректно проксировать запросы к внутреннему приложению.