Обзор развертывания LinuxPatch на сервере¶
Предварительные требования¶
Для корректной работы приложения требуются следующие условия:
-
Операционная система с поддержкой Docker и Docker Compose.
-
Доступ к интернету для загрузки образов и клонирования репозитория.
-
Наличие установленного сервиса
docker. -
Права доступа
rootили черезsudoдля управления контейнерами и директориями.
FDQN итоговой панели на домене hostkey.in¶
Доступ к приложению осуществляется по следующему шаблону:
| Параметр | Значение |
|---|---|
| Префикс | linuxpatch |
| Домен | hostkey.in |
| Полный шаблон | linuxpatch{Server_ID_from_Invapi}.hostkey.in |
Структура файлов и каталогов¶
Основные данные приложения и конфигурации располагаются в следующих директориях:
-
/root/linuxpatch— основная рабочая директория приложения, содержащая исходный код (репозиторий) и файлы развертывания. -
/root/linuxpatch/data— директория с данными приложения, включая конфигурационные файлы (.env), сертификаты (certs) и логи (logs). -
/data/nginx/user_conf.d— директория для конфигурационных файлов прокси-сервера Nginx.
Процесс установки приложения¶
Развертывание выполняется путем клонирования репозитория https://github.com/linuxpatch/self-hosted.git в директорию /root/linuxpatch.
Процесс включает:
-
Создание необходимых директорий и томов Docker.
-
Генерацию конфигурационного файла
.envс уникальными учетными данными (база данных, SMTP, администратор). -
Формирование
docker-compose.ymlна основе шаблона с подстановкой переменных окружения. -
Запуск контейнеров через
docker compose up -d.
Права доступа и безопасность¶
-
Директория
/root/linuxpatchимеет права владельцаroot:rootс режимом0644. -
Директории для сертификатов и логов внутри контейнера (
data/certs,data/logs) имеют режим доступа755. -
Все учетные данные (пароли базы данных, SMTP, администратора) генерируются случайным образом при первой установке и сохраняются в файле
/root/linuxpatch/data/.env.
Базы данных¶
Приложение использует две основные системы хранения:
| Тип БД | Образ | Назначение |
|---|---|---|
| MySQL (Percona) | percona/percona-server:8.0 | Основное хранилище данных приложения |
| Redis | redis:6 | Хранение сессий и кэширование |
Данные баз данных сохраняются в именованных томах Docker: linuxpatch-mysql-data и linuxpatch-redis-data.
Контейнеры Docker и их запуск¶
Приложение развернуто в составе группы контейнеров, объединенных в сеть linuxpatch-app-network.
Nginx (Proxy/SSL)¶
-
Имя образа:
jonasal/nginx-certbot:latest -
Порты:
80:80,443:443 -
Тома:
-
nginx_secrets:/etc/letsencrypt -
/data/nginx/user_conf.d:/etc/nginx/user_conf.d
-
-
Переменные окружения:
CERTBOT_EMAIL=hkadm@hostkey.com -
Политика перезапуска:
unless-stopped
LinuxPatch App (Основное приложение)¶
-
Имя образа:
linuxpatch/appliance:latest -
Команда:
./web -
Порты:
80,443(черезexpose) -
Тома:
./data:/app/data -
Переменные окружения: Настройки БД, Redis, SMTP, TLS и учетные данные администратора.
-
Политика перезапуска:
unless-stopped
Percona Server (База данных)¶
-
Имя образа:
percona/percona-server:8.0 -
Команда:
mysqld -
Тома:
linuxpatch-mysql-data:/var/lib/mysql -
Политика перезапуска:
unless-stopped
Redis (Кэш)¶
-
Имя образа:
redis:6 -
Команда:
redis-server -
Тома:
linuxpatch-redis-data:/data -
Политика перезапуска:
unless-stopped
Инструкция по обновлению приложения¶
Обновление выполняется через подтягивание новых версий образов и перезапуск контейнеров:
Настройки прав¶
Для корректной работы скриптов конфигурации установлены следующие права:
-
Файл
configure.shимеет права на выполнение (0744). -
Директории данных и конфигов создаются с соответствующими правами доступа для обеспечения возможности записи логов и чтения сертификатов.
Доступные порты для подключения¶
| Порт | Протокол | Назначение |
|---|---|---|
80 | TCP | HTTP (перенаправление) |
443 | TCP | HTTPS (основной доступ) |