Обзор развертывания LinuxPatch Appliance на сервере¶
Предварительные требования и базовые условия¶
Для развертывания LinuxPatch Appliance хост-сервер должен соответствовать следующим требованиям:
-
Операционная система: Linux-дистрибутив, совместимый с Docker Engine.
-
Привилегии: Требуется доступ root или sudo для выполнения скриптов установки и управления контейнерами Docker.
-
Настройка домена: Сервер должен быть настроен для разрешения доменной зоны
hostkey.in. -
Порты: Порты
80(HTTP) и443(HTTPS) должны быть открыты и доступны извне для обеспечения работы прокси Nginx и выпуска сертификатов Let's Encrypt.
FQDN финальной панели управления¶
После развертывания панель управления LinuxPatch Appliance доступна по следующему полностью квалифицированному доменному имени (FQDN):
<linuxpatch> <server_id>.hostkey.in:443
Итоговая структура URL следует формату: https://linuxpatch<server_id>.hostkey.in.
Структура файлов и каталогов¶
Компоненты приложения, файлы конфигурации и данные организованы в следующих каталогах:
-
Корневой каталог приложения:
/root/linuxpatch -
Данные и конфигурация приложения:
/root/linuxpatch/data -
SSL-сертификаты (управляемые через Nginx/Certbot):
/etc/letsencrypt(монтированный томnginx_secrets) -
Конфигурация пользователя Nginx:
/data/nginx/user_conf.d/linuxpatch<server_id>.hostkey.in.conf -
Переменные окружения:
/root/linuxpatch/data/.env
Контейнеры Docker и их развертывание¶
LinuxPatch Appliance развертывается с использованием Docker Compose. Развертывание состоит из четырех основных контейнеров, управляемых через файл docker-compose.yml, расположенный в /root/linuxpatch.
Компоненты контейнеров¶
-
Nginx Proxy:
-
Образ:
jonasal/nginx-certbot:latest -
Функция: Обрабатывает терминацию SSL с использованием Certbot и маршрутизирует трафик к приложению.
-
Порты: Экспонирует порты
80и443на хосте. -
LinuxPatch Application:
-
Образ:
linuxpatch/appliance:latest -
Функция: Основная логика приложения и веб-интерфейс.
-
Команда:
./web -
Зависимости: Ожидает завершения проверки доступности базы данных и Redis перед запуском.
-
Database (MySQL):
-
Образ:
percona/percona-server:8.0 -
Функция: Хранение данных приложения.
-
Имя сервиса:
linuxpatch-db -
Cache (Redis):
-
Образ:
redis:6 -
Функция: Обрабатывает кэширование и управление сессиями.
-
Имя сервиса:
linuxpatch-redis
Тома Docker¶
Для сохранения данных и конфигурации используются следующие тома:
-
linuxpatch-mysql-data: Сохраняет файлы базы данных MySQL. -
linuxpatch-redis-data: Сохраняет данные кэша Redis. -
nginx_secrets: Хранит SSL-сертификаты и ключи Let's Encrypt. -
./data:/app/data: Монтирует локальный каталог данных приложения в контейнер.
Сеть развертывания¶
Все контейнеры работают в рамках пользовательской сети моста с именем linuxpatch-app-network.
Прокси-серверы¶
Развертывание использует прокси-сервер Nginx с интегрированным Certbot для управления SSL.
-
Образ прокси:
jonasal/nginx-certbot:latest -
Конфигурация SSL:
-
Автоматически запрашивает и продлевает SSL-сертификаты через Let's Encrypt.
-
Электронная почта Certbot:
hkadm@hostkey.com -
Маршрутизация:
-
Конфигурация Nginx находится по пути
/data/nginx/user_conf.d/linuxpatch<server_id>.hostkey.in.conf. -
Трафик проксируется к сервису приложения с использованием
proxy_pass http://linuxpatch-app. -
Порты:
-
HTTP:
80 -
HTTPS:
443
Базы данных¶
Приложение использует два внутренних сервиса хранения данных, управляемых как контейнеры Docker:
| Сервис | Тип | Образ | Ссылка на хост | Порт |
|---|---|---|---|---|
| Основная база данных | MySQL (Percona) | percona/percona-server:8.0 | linuxpatch-db | 3306 |
| Сервер кэша | Redis | redis:6 | linuxpatch-redis | 6379 |
Детали конфигурации базы данных¶
-
Имя базы данных:
linuxpatch(определяется в переменных окружения). -
Аутентификация: Учетные данные (
DB_USERNAME,DB_PASSWORD) генерируются динамически и хранятся в файле.env. -
Подключение: Приложение подключается к базе данных, используя внутреннее имя сервиса Docker
linuxpatch-db.
Запуск, остановка и обновление¶
Управление сервисами осуществляется с помощью команд Docker Compose, выполняемых в директории /root/linuxpatch.
-
Запуск сервисов:
-
Остановка сервисов:
-
Перезапуск сервисов:
-
Обновление образа приложения: Поскольку контейнер
linuxpatch-appнастроен с параметромpull_policy: always, выполнение команды запуска автоматически загрузит последнюю версию образа:
Права доступа и безопасность¶
-
Права доступа к каталогам:
-
Корневой каталог приложения
/root/linuxpatchпринадлежит пользователюrootс режимом0644. -
Скрипт выполнения
configure.shустановлен с режимом0744. -
Подкаталоги данных (
data/certs,data/logs) создаются с режимом755. -
Требования к межсетевому экрану (firewall):
-
Внешний доступ ограничен портами
80и443. -
Внутренняя связь между контейнерами осуществляется через изолированную сеть
linuxpatch-app-network. -
Учетные данные пользователей:
-
Административные учетные данные генерируются автоматически на этапе конфигурации.
-
Имя пользователя администратора по умолчанию следует формату:
admin@<hostname>. -
Пароли генерируются случайным образом и сохраняются в файле
data/.env.
Расположение файлов конфигурации и данных¶
Основные файлы конфигурации и данные расположены следующим образом:
| Файл / Каталог | Назначение | Путь |
|---|---|---|
| Docker Compose | Определение оркестрации контейнеров | /root/linuxpatch/docker-compose.yml |
| Скрипт конфигурации | Генерация переменных окружения и учетных данных | /root/linuxpatch/configure.sh |
| Переменные окружения | Хранение учетных данных БД, секретов и настроек приложения | /root/linuxpatch/data/.env |
| Логи приложения | Хранение журналов выполнения | /root/linuxpatch/data/logs |
| SSL-сертификаты (Приложение) | Внутренние TLS-сертификаты для приложения | /root/linuxpatch/data/certs |
| Конфигурация Nginx | Пользовательская конфигурация прокси | /data/nginx/user_conf.d/linuxpatch<server_id>.hostkey.in.conf |
Доступные порты для подключения¶
Следующие порты доступны для внешнего подключения:
| Порт | Протокол | Описание |
|---|---|---|
| 80 | TCP | HTTP (перенаправление на HTTPS или используется для валидации Certbot) |
| 443 | TCP | HTTPS (Безопасный доступ к панели LinuxPatch) |
Внутренние порты, такие как 3306 (MySQL) и 6379 (Redis), не экспонируются в сеть хоста и доступны только внутри сети Docker.