KVM с веб-управлением через Cockpit¶
Предварительные условия и базовые требования¶
Для успешного развертывания и доступа к приложению на сервере должны быть выполнены следующие условия:
-
Операционная система: Совместимый дистрибутив Linux, способный запускать контейнеры Docker.
-
Права доступа: Для работы с Docker и управления файлами конфигурации требуются права
rootилиsudo. -
Сетевой доступ: Сервер должен иметь исходящий доступ в Интернет для получения образов Docker и проверки SSL-сертификатов.
-
Docker: Docker Engine и Docker Compose должны быть установлены и запущены на хост-системе.
-
Домен: Сервер должен быть настроен с валидной DNS-записью в домене
hostkey.in.
FQDN конечной панели¶
Веб-панель управления доступна через полностью квалифицированное доменное имя (FQDN), сформированное с использованием префикса kvm и уникального идентификатора сервера. Стандартный формат URL доступа:
kvm<Server ID>.hostkey.in:443
Замените <Server ID> на фактический цифровой идентификатор сервера. Сервис принимает соединения по порту 443 для трафика HTTPS.
Структура файлов и директорий¶
Развертывание использует специфические директории для хранения конфигурации, сертификатов и настроек прокси. Ключевые пути:
-
/root/nginx/: Содержит файл конфигурации Docker Compose для сервиса прокси. -
/root/nginx/compose.yml: Основной файл оркестрации для контейнеров Nginx и Certbot. -
/data/nginx/: Корневая директория для данных Nginx и переменных окружения. -
/data/nginx/user_conf.d/: Хранилище пользовательских файлов конфигурации Nginx, в частностиkvm<Server ID>.hostkey.in.conf. -
/data/nginx/nginx-certbot.env: Файл переменных окружения, содержащий конфигурацию для клиента Let's Encrypt. -
/etc/letsencrypt/: Точка монтирования тома, где хранятся SSL-сертификаты (подключен изnginx_secrets).
Процесс установки приложения¶
Развертывание приложения основано на контейнерах Docker, оркестрируемых через Docker Compose. Процесс установки включает следующие шаги:
-
Убедитесь, что директория
/root/nginxсуществует на хосте. -
Разверните файл конфигурации прокси
compose.ymlв/root/nginx/. -
Выполните команду Docker Compose для запуска сервисов Nginx и Certbot в фоновом режиме (detached mode):
Эта команда выполняется внутри директории/root/nginx. -
Система автоматически настраивает прокси Nginx для пересылки трафика с внешнего интерфейса на внутренний порт приложения
3000.
Для выполнения задач веб-сервера и управления SSL-сертификатами развертывание использует образ Docker jonasal/nginx-certbot:latest.
Права доступа и безопасность¶
Безопасность развертывания обеспечивается следующими мерами:
-
Межсетевой экран (Firewall): Внешний доступ ограничен портом
443(HTTPS), как определено в конфигурации внешнего порта. -
SSL/TLS: Весь трафик шифруется с использованием сертификатов Let's Encrypt, которые автоматически генерируются и обновляются.
-
Конфигурация пользователя: Клиент Let's Encrypt настроен на использование адреса электронной почты
ddevops@hostkey.comдля уведомлений о сертификатах. -
Изоляция контейнеров: Сервис Nginx работает в контейнере с режимом сети
hostдля обеспечения прямого привязывания портов и внутреннего взаимодействия.
Контейнеры Docker и их развертывание¶
Решение использует единый контейнеризированный сервис для веб-прокси и управления сертификатами. Детали контейнера:
-
Образ:
jonasal/nginx-certbot:latest -
Политика перезапуска:
unless-stopped -
Режим сети:
host -
Монтирование томов:
-
nginx_secretsсопоставлен с/etc/letsencryptдля хранения сертификатов. -
/data/nginx/user_conf.dсопоставлен с/etc/nginx/user_conf.dдля пользовательских конфигураций Nginx. -
Переменные окружения:
-
CERTBOT_EMAIL: Установлен в значениеhkadm@hostkey.com. -
Команда выполнения:
Прокси-серверы¶
В развертывании в качестве обратного прокси используется Nginx, управляемый через образ Docker jonasal/nginx-certbot. Ключевые настройки прокси:
| Параметр | Значение | Описание |
|---|---|---|
| Внутренний хост | 127.0.0.1 | IP-адрес localhost, используемый для проксирования. |
| Внутренний порт | 3000 | Порт, на котором приложение принимает соединения внутри. |
| Внешний порт | 443 | Порт для защищенного доступа HTTPS. |
| Внешний путь | / | Корневой путь для приложения. |
| Внутренний путь | / | Корневой путь, пересылаемый на бэкенд. |
| Провайдер SSL | Let's Encrypt | Автоматизированная выдача SSL-сертификатов. |
| Email для обновления | ddevops@hostkey.com | Контактный адрес для оповещений о сертификатах. |
Конфигурация Nginx, расположенная по пути /data/nginx/user_conf.d/kvm<Server ID>.hostkey.in.conf, автоматически обновляется для включения директивы proxy_pass:
Настройки прав доступа¶
Права доступа к файлам и директориям настроены таким образом, чтобы контейнеры Docker могли получать доступ к необходимым ресурсам:
-
/root/nginx: -
Владелец:
root -
Группа:
root -
Режим:
0755(Директория) -
/root/nginx/compose.yml: -
Владелец:
root -
Группа:
root -
Режим:
0644(Файл)
Предполагается, что директория данных Nginx /data/nginx и её поддиректории доступны для демона Docker хоста с соответствующими правами владения, позволяющими контейнеру читать файлы конфигурации.
Расположение файлов конфигурации и данных¶
Все критически важные файлы конфигурации и хранилища данных расположены по следующим путям:
-
Оркестрация прокси:
/root/nginx/compose.yml -
Пользовательская конфигурация Nginx:
/data/nginx/user_conf.d/kvm<Server ID>.hostkey.in.conf -
Переменные окружения:
/data/nginx/nginx-certbot.env -
SSL-сертификаты:
/etc/letsencrypt(доступно внутри контейнера через томnginx_secrets)
Доступные порты для подключения¶
Развернутыми сервисами используются следующие порты:
-
Порт 443: Трафик HTTPS для интерфейса веб-управления.
-
Порт 3000: Внутренний порт, используемый приложением, доступен только через локальный прокси внутри хоста.
Запуск, остановка и обновление¶
Управление сервисами осуществляется через команды Docker Compose, выполняемые в директории /root/nginx.
-
Запуск/Перезапуск сервисов:
-
Остановка сервисов:
-
Обновление сервисов: Для обновления образа контейнера или конфигурации загрузите последнюю версию образа и перезапустите стек:
-
Проверка состояния сервисов: