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

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. Процесс установки включает следующие шаги:

  1. Убедитесь, что директория /root/nginx существует на хосте.

  2. Разверните файл конфигурации прокси compose.yml в /root/nginx/.

  3. Выполните команду Docker Compose для запуска сервисов Nginx и Certbot в фоновом режиме (detached mode):

    docker compose up -d
    
    Эта команда выполняется внутри директории /root/nginx.

  4. Система автоматически настраивает прокси 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.

  • Команда выполнения:

    docker compose up -d
    

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

В развертывании в качестве обратного прокси используется 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:

proxy_pass http://127.0.0.1:3000;

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

Права доступа к файлам и директориям настроены таким образом, чтобы контейнеры 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.

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

    cd /root/nginx
    docker compose up -d
    

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

    cd /root/nginx
    docker compose down
    

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

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

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

    docker compose ps
    

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