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

Обзор развертывания LinuxPatch Appliance на сервере

Предварительные требования и базовые условия

Для успешного развертывания LinuxPatch Appliance хост-сервер должен соответствовать следующим требованиям:

  • Операционная система: Дистрибутив Linux, совместимый с Docker Engine.

  • Привилегии: Для управления службами Docker и настройки системы требуются права root или привилегии sudo.

  • Настройка домена: Сервер должен быть настроен для разрешения домена hostkey.in.

  • Порты: Порты 80 и 443 должны быть открыты в межсетевом экране (firewall) хоста для обеспечения внешнего трафика для прокси Nginx и завершения SSL-соединений.

FQDN конечной панели

Приложение доступно по следующему формату полностью квалифицированного доменного имени (FQDN):

  • linuxpatch<Server ID>.hostkey.in:443

Замените <Server ID> на конкретный идентификатор, назначенный экземпляру. Приложение обслуживается через HTTPS на порту 443.

Структура файлов и каталогов

Развертывание использует следующую структуру каталогов на хост-системе:

  • /root/linuxpatch: Основной каталог установки, содержащий исходный код приложения, скрипты конфигурации и файлы Docker Compose.

  • /root/linuxpatch/data: Каталог данных приложения, содержащий:

  • data/.env: Переменные окружения и учетные данные.

  • data/certs: Сертификаты SSL/TLS.

  • data/logs: Файлы журналов (логов) приложения.

  • /data/nginx/user_conf.d: Каталог, содержащий файлы пользовательской конфигурации Nginx.

  • /etc/letsencrypt: Точка монтирования тома для SSL-сертификатов, управляемых Certbot.

Процесс установки приложения

Приложение развертывается с использованием Docker Compose. Установка включает клонирование репозитория и выполнение скрипта конфигурации, который генерирует необходимые переменные окружения и определения Docker Compose.

  1. Клонируйте репозиторий в каталог установки:

    git clone https://github.com/linuxpatch/self-hosted.git /root/linuxpatch
    

  2. Создайте необходимый том Docker для секретов Nginx:

    docker volume create nginx_secrets
    

  3. Выполните скрипт конфигурации, расположенный по пути /root/linuxpatch/configure.sh. Этот скрипт:

  4. Генерирует случайные учетные данные для базы данных, SMTP и административного пользователя.

  5. Создает файл data/.env с параметрами конфигурации.

  6. Генерирует файл docker-compose.yml с правильными переменными окружения.

  7. Автоматически запускает службы.

Версия приложения загружается динамически с использованием тега образа linuxpatch/appliance:latest.

Контейнеры Docker и их развертывание

Развертывание состоит из четырех основных контейнеров, оркестрируемых через Docker Compose:

  • nginx:

  • Образ: jonasal/nginx-certbot:latest

  • Функция: Обратный прокси и завершение SSL с использованием Certbot.

  • Порты: Открывает порты 80 и 443 на хосте.

  • Томы: Монтирует nginx_secrets для сертификатов и /data/nginx/user_conf.d для пользовательских конфигураций.

  • linuxpatch-app:

  • Образ: linuxpatch/appliance:latest

  • Функция: Основная служба приложения LinuxPatch.

  • Команда: ./web

  • Зависимости: Ожидает готовности служб linuxpatch-db и linuxpatch-redis перед запуском.

  • Томы: Монтирует ./data в /app/data внутри контейнера.

  • linuxpatch-db:

  • Образ: percona/percona-server:8.0

  • Функция: Сервер базы данных MySQL.

  • Томы: Использует linuxpatch-mysql-data для постоянного хранения данных.

  • Проверка состояния (Health Check): Использует mysqladmin ping для проверки статуса службы.

  • linuxpatch-redis:

  • Образ: redis:6

  • Функция: Служба кэширования Redis.

  • Томы: Использует linuxpatch-redis-data для постоянного хранения данных.

  • Проверка состояния (Health Check): Использует redis-cli ping для проверки статуса службы.

Базы данных

Приложение использует две службы баз данных, работающие внутри сети Docker:

  • MySQL (Percona Server):

  • Имя службы: linuxpatch-db

  • Хост подключения: linuxpatch-db (внутренняя сеть Docker)

  • Порт: 3306

  • Имя базы данных: Определено в data/.env как DB_NAME (по умолчанию: linuxpatch).

  • Хранение: Данные сохраняются в томе Docker linuxpatch-mysql-data.

  • Redis:

  • Имя службы: linuxpatch-redis

  • Хост подключения: linuxpatch-redis (внутренняя сеть Docker)

  • Порт: 6379

  • Индекс базы данных: Определен в data/.env как REDIS_DATABASE (по умолчанию: 0).

  • Хранение: Данные сохраняются в томе Docker linuxpatch-redis-data.

Прокси-серверы

Развертывание включает контейнер Nginx, настроенный как обратный прокси с поддержкой SSL:

  • ПО: Nginx с Certbot (jonasal/nginx-certbot:latest).

  • SSL/TLS: Управляется автоматически через Certbot. Сертификаты хранятся в томе nginx_secrets.

  • Конфигурация: Прокси настроен на пересылку трафика в контейнер linuxpatch-app.

  • Пользовательский домен: Прокси настроен для домена linuxpatch<Server ID>.hostkey.in.

  • Email для Certbot: Настроен как hkadm@hostkey.com.

Настройки прав доступа

В процессе развертывания применяются следующие настройки прав доступа:

  • /root/linuxpatch: Владелец root:root с правами 0644.

  • /root/linuxpatch/configure.sh: Исполняемый скрипт с правами 0744.

  • data/certs и data/logs: Создаются с правами 755.

  • Томы Docker (linuxpatch-mysql-data, linuxpatch-redis-data, nginx_secrets) управляются демоном Docker и требуют прав root для изменения.

Расположение файлов конфигурации и данных

Все файлы конфигурации и данные находятся в каталоге /root/linuxpatch:

  • Переменные окружения: /root/linuxpatch/data/.env

  • Определение Docker Compose: /root/linuxpatch/docker-compose.yml

  • Скрипт конфигурации: /root/linuxpatch/configure.sh

  • SSL-сертификаты: Хранятся в томе nginx_secrets (смонтирован в /etc/letsencrypt внутри контейнера Nginx) и в каталоге data/certs.

  • Журналы приложения: Хранятся в /root/linuxpatch/data/logs.

Доступные порты для подключения

На хост-сервере открыты следующие порты:

  • Порт 80: HTTP-трафик (перенаправляется на HTTPS через Nginx).

  • Порт 443: HTTPS-трафик (безопасный доступ к панели LinuxPatch).

Внутренняя коммуникация между контейнерами происходит через мостовую сеть linuxpatch-app-network и не доступна на хосте.

Запуск, остановка и обновление

Управление службами осуществляется с помощью команд Docker Compose, выполняемых из каталога /root/linuxpatch:

  • Запуск служб:

    cd /root/linuxpatch
    docker compose up -d
    

  • Остановка служб:

    cd /root/linuxpatch
    docker compose down
    

  • Обновление приложения: Для обновления приложения до последней версии загрузите новые образы и перезапустите контейнеры:

    cd /root/linuxpatch
    docker compose pull
    docker compose up -d
    

  • Просмотр журналов:

    cd /root/linuxpatch
    docker compose logs -f
    

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