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

Обзор развертывания KVM Web Management на сервере

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

Для успешного развертывания системы управления виртуализацией KVM с веб-интерфейсом Cockpit необходимо выполнить следующие условия:

  • Операционная система: Ubuntu (поддержка пакетов apt).
  • Права доступа: Требуется доступ с правами root или возможность использования sudo.
  • Сетевые порты: Порты 80 и 443 должны быть свободны для получения и обновления сертификатов Let's Encrypt.
  • Доменное имя: Должно быть настроено DNS-запись, указывающая на IP-адрес сервера. Формат домена: <префикс><id_сервера>.<зона>.
  • Docker: Должен быть установлен и запущен демон Docker для работы контейнеров Nginx и Certbot.

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

Конфигурация и данные приложения распределяются по следующим директориям:

  • /root/nginx/: Каталог для запуска контейнеров прокси-сервера. Содержит файл compose.yml.
  • /data/nginx/user_conf.d/: Директория для пользовательских конфигурационных файлов Nginx.
  • /etc/cockpit/ws-certs.d/: Каталог для хранения сертификатов и ключей, используемых веб-интерфейсом Cockpit.
  • /etc/letsencrypt/: Хранилище сертификатов Let's Encrypt (подключается как том в контейнер Nginx).
  • /etc/hosts: Файл для настройки локального разрешения доменных имен.

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

Установка включает в себя настройку базовых пакетов виртуализации и веб-интерфейса, а также развертывание прокси-сервера в контейнере.

  1. Установка пакетов виртуализации и управления:
  2. qemu-kvm
  3. libvirt-daemon-system
  4. libvirt-clients
  5. bridge-utils
  6. virtinst
  7. cockpit
  8. cockpit-machines
  9. certbot
  10. pip

  11. Настройка имени хоста:

  12. Системное имя хоста устанавливается в формате <префикс><id_сервера>.<зона>.
  13. Запись добавляется в файл /etc/hosts для локального разрешения.

  14. Получение SSL-сертификата:

  15. Используется утилита certbot в режиме standalone для получения сертификата от Let's Encrypt.
  16. Сертификат выдается для доменного имени, сформированного на этапе настройки хоста.

  17. Развертывание прокси-сервера:

  18. Создается каталог /root/nginx.
  19. Генерируется файл compose.yml с конфигурацией контейнера nginx-certbot.
  20. Запускается контейнер через docker compose.

Базы данных

В предоставленных конфигурационных данных отсутствуют сведения о подключении к внешним базам данных или настройке хранилищ данных для приложения. Система управления KVM использует локальные хранилища Libvirt.

Контейнеры Docker и их запуск

Для обеспечения работы веб-интерфейса и автоматического обновления сертификатов используется контейнер Nginx с Certbot.

Конфигурация контейнера описана в файле /root/nginx/compose.yml:

volumes:
  nginx_secrets:
    external: true
services:
  nginx:
    image: jonasal/nginx-certbot:latest
    restart: unless-stopped
    environment:
      - CERTBOT_EMAIL=hkadm@hostkey.com
    env_file:
      - /data/nginx/nginx-certbot.env
    network_mode: host
    volumes:
      - nginx_secrets:/etc/letsencrypt
      - /data/nginx/user_conf.d:/etc/nginx/user_conf.d

Запуск контейнера выполняется командой:

docker compose up -d

Команда выполняется из директории /root/nginx.

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

В качестве прокси-сервера используется контейнер jonasal/nginx-certbot:latest. Он работает в режиме host для прямого доступа к портам.

  • Домен: Конфигурация прокси настраивается для домена, соответствующего имени хоста сервера.
  • SSL: Сертификаты Let's Encrypt автоматически обновляются и используются для шифрования трафика.
  • Маршрутизация: В конфигурационном файле /data/nginx/user_conf.d/<префикс><id_сервера>.hostkey.in.conf добавляется правило пересылки запросов:
  • Запросы на корневой путь / пересылаются на http://127.0.0.1:3000.

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

Права доступа к файлам и директориям устанавливаются следующим образом:

  • Директория /root/nginx: Владелец root, группа root, права 0755.
  • Файл /root/nginx/compose.yml: Владелец root, группа root, права 0644.
  • Директория /etc/cockpit/ws-certs.d: Владелец root, группа root, права 0755.
  • Файлы сертификатов в /etc/cockpit/ws-certs.d/:
  • Владелец root, группа cockpit-ws.
  • Права доступа 640.

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

Управление сервисами осуществляется через стандартные утилиты системы и Docker.

  • Запуск и остановка контейнера прокси:
  • Запуск: docker compose up -d (из директории /root/nginx).
  • Остановка: docker compose down.

  • Управление службами системы:

  • Служба libvirtd: должна быть запущена и включена в автозагрузку.
  • Служба cockpit.socket: должна быть запущена и включена в автозагрузку.
  • Перезапуск cockpit после обновления сертификатов: systemctl restart cockpit.

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

  • Осуществляется автоматически контейнером nginx-certbot согласно расписанию Let's Encrypt.
  • При необходимости ручное обновление сертификатов выполняется через certbot certonly в режиме standalone с последующей перезагрузкой службы cockpit.
question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×