Обзор развертывания LinuxPatch на сервере¶
Предпосылки и предварительные требования¶
Для успешного развертывания приложения LinuxPatch на сервере необходимо наличие следующих компонентов и условий:
- Операционная система Linux с установленным Docker и Docker Compose.
- Права доступа пользователя
rootили праваsudoдля выполнения команд установки и управления контейнерами. - Свободные порты
80и443для работы веб-сервера и SSL-шифрования. - Доступ к интернету для загрузки образов контейнеров и репозитория кода.
- Наличие доменного имени или хоста, который будет использоваться для доступа к приложению.
Структура файлов и каталогов¶
Приложение размещается в корневом каталоге /root/linuxpatch. Внутри этой директории формируется следующая структура:
/root/linuxpatch— основной каталог приложения, содержащий скрипты конфигурации и файлы Docker Compose./root/linuxpatch/data— каталог для хранения данных приложения, включая конфигурационный файл.env./root/linuxpatch/data/certs— подкаталог для хранения SSL-сертификатов./root/linuxpatch/data/logs— подкаталог для хранения файлов логов./root/linuxpatch/docker-compose.yml— файл конфигурации оркестрации контейнеров./root/linuxpatch/configure.sh— скрипт генерации конфигурации и запуска сервисов./data/nginx/user_conf.d— каталог для пользовательских конфигураций Nginx (монтируется в контейнер прокси).
Процесс установки приложения¶
Установка приложения выполняется путем клонирования репозитория и запуска скрипта конфигурации. Процесс включает следующие шаги:
- Создание директории
/root/linuxpatch. - Клонирование репозитория
https://github.com/linuxpatch/self-hosted.gitв указанную директорию. - Создание внешнего тома Docker
nginx_secretsдля хранения секретов сертификатов. - Генерация файла
docker-compose.ymlи скриптаconfigure.shс использованием шаблонов. - Запуск скрипта
configure.sh, который: - Создает необходимые директории
data/certsиdata/logs. - Генерирует случайные учетные данные (пароли, секреты сессий) и записывает их в файл
data/.env. - Обновляет файл
docker-compose.ymlпеременными окружения. - Запускает контейнеры в фоновом режиме.
Контейнеры Docker и их запуск¶
Приложение состоит из четырех основных контейнеров, управляемых через Docker Compose:
- nginx:
- Образ:
jonasal/nginx-certbot:latest. - Назначение: Прокси-сервер с поддержкой автоматического получения SSL-сертификатов через Certbot.
- Порты:
80и443открыты на хосте. - Тома: Монтирует
nginx_secretsв/etc/letsencryptи/data/nginx/user_conf.dв/etc/nginx/user_conf.d. -
Зависимости: Запускается после
linuxpatch-app. -
linuxpatch-app:
- Образ:
linuxpatch/appliance:latest. - Назначение: Основной веб-сервер приложения.
- Команда запуска:
./web. - Переменные окружения: Настраиваются динамически через файл
.env(база данных, Redis, SMTP, администратор). - Тома: Монтирует локальную директорию
./dataв/app/dataвнутри контейнера. -
Зависимости: Ожидает готовности
linuxpatch-dbиlinuxpatch-redis. -
linuxpatch-db:
- Образ:
percona/percona-server:8.0. - Назначение: Реляционная база данных MySQL.
- Команда:
mysqld. - Тома: Монтирует том
linuxpatch-mysql-dataв/var/lib/mysql. -
Проверка здоровья: Выполняет команду
mysqladmin ping. -
linuxpatch-redis:
- Образ:
redis:6. - Назначение: Кэш и брокер сообщений.
- Команда:
redis-server. - Тома: Монтирует том
linuxpatch-redis-dataв/data. - Проверка здоровья: Выполняет команду
redis-cli ping.
Все контейнеры подключены к сети linuxpatch-app-network с драйвером bridge.
Базы данных¶
Приложение использует две системы хранения данных, развернутые в виде контейнеров:
- MySQL (Percona Server 8.0):
- Хранение данных осуществляется в томе
linuxpatch-mysql-data. - Имя базы данных:
linuxpatch. - Пользователь базы данных генерируется автоматически (префикс
lpuser_). - Пароль генерируется автоматически (32 символа).
-
Подключение приложения происходит через переменные
DB_HOST=linuxpatch-db,DB_PORT=3306. -
Redis:
- Хранение данных осуществляется в томе
linuxpatch-redis-data. - Используется база данных с индексом
0. - Подключение приложения происходит через переменные
REDIS_HOST=linuxpatch-redis,REDIS_PORT=6379.
Конфигурация подключения к базам данных хранится в файле /root/linuxpatch/data/.env.
Прокси серверы¶
Для обработки входящего трафика и управления SSL-сертификатами используется контейнер Nginx:
- Образ:
jonasal/nginx-certbot:latest. - Домен: Настраивается через переменную
SERVER_NAMEиTLS_DOMAINв файле.env(по умолчанию используется имя хоста). - SSL: Поддерживается автоматическое получение и обновление сертификатов через Certbot.
- Конфигурация:
- Файл конфигурации Nginx для приложения находится в
/data/nginx/user_conf.d. - В конфигурации прокси-запрос перенаправляется на
http://linuxpatch-app. - Порты:
80— HTTP.443— HTTPS.
Настройки прав¶
Права доступа к файлам и директориям устанавливаются следующим образом:
- Директория
/root/linuxpatchсоздается с правами0644, владелецroot, группаroot. - Скрипт
configure.shимеет права на выполнение0744. - Директории
data/certsиdata/logsсоздаются с правами755. - Файл
docker-compose.ymlимеет права0644. - Контейнеры запускаются от имени пользователя, имеющего доступ к Docker-деamon (обычно
root).
Запуск, остановка и обновление¶
Управление сервисами осуществляется через команды Docker Compose в директории /root/linuxpatch:
-
Запуск всех сервисов:
-
Остановка всех сервисов:
-
Перезапуск сервисов:
-
Просмотр логов:
-
Обновление образов:
После запуска скрипта configure.sh приложение доступно по адресу https://<домен>. Учетные данные администратора выводятся в консоль и сохраняются в файле data/.env.