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

Обзор развертывания 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.

  • Запуск сервисов:

    docker compose up -d
    

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

    docker compose stop
    

  • Перезапуск сервисов:

    docker compose restart
    

  • Обновление образа приложения: Поскольку контейнер linuxpatch-app настроен с параметром pull_policy: always, выполнение команды запуска автоматически загрузит последнюю версию образа:

    docker compose up -d
    

Права доступа и безопасность

  • Права доступа к каталогам:

  • Корневой каталог приложения /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.

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