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

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

Данная инструкция описывает процесс установки и настройки среды виртуализации KVM, панели управления Cockpit и инфраструктуры для работы с SSL-сертификатами.

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

Для корректной работы системы требуются следующие параметры:

  • Операционная система: Ubuntu (версии 24.04 и выше поддерживаются с учетом специфики установки пакетов Python).

  • Права доступа: Права суперпользователя (root) для управления системными службами и установкой пакетов.

  • Порты:

  • 80 / 443: Для работы веб-интерфейса через SSL (используется Certbot standalone).

  • 9090: Стандартный порт для доступа к панели управления Cockpit.

  • 3000: Внутренний порт приложения.

FDQN итоговой панели на домене hostkey.in

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

Параметр Значение
Префикс kvm
Домен hostkey.in
Полный шаблон kvm{Server_ID}.hostkey.in

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

Процесс развертывания включает в себя установку системных компонентов виртуализации и настройку веб-интерфейса управления:

  1. Установка базовых пакетов:

  2. Устанавливаются компоненты виртуализации: qemu-kvm, libvirt-daemon-system, libvirt-clients, bridge-utils, virtinst.

  3. Устанавливается панель управления cockpit и модуль для работы с виртуальными машинами cockpit-machines.

  4. Для систем Ubuntu 24.04+ дополнительно устанавливаются модули qemu-system-modules-spice.

  5. Устанавливается certbot для управления SSL-сертификатами.

  6. Настройка системы:

  7. Устанавливается имя хоста (hostname) на основе FQDN.

  8. В файл /etc/hosts добавляется запись для корректного разрешения локального имени.

  9. Служба libvirtd и сокет cockpit.socket переводятся в состояние запущены (started) и добавлены в автозагрузку (enabled).

  10. Настройка безопасности Cockpit:

  11. Если используется Ubuntu 24.04+, из файла /etc/cockpit/disallowed-users удаляется ограничение на вход под пользователем root.

  12. Подготовка к получению SSL:

  13. Останавливаются и отключают службы nginx и apache2, если они установлены.

  14. Принудительно останавливаются все Docker-контейнеры, занимающие порты 80 и 443.

  15. Получение сертификатов Let's Encrypt:

  16. Выполняется получение SSL-сертификата через режим --standalone.

  17. Сертификаты копируются в директорию /etc/cockpit/ws-certs.d/ с преобразованием форматов для совместимости с Cockpit.

  18. Устанавливаются соответствующие права доступа (chown root:cockpit-ws, chmod 640).

  19. Дополнительное ПО:

  20. Через менеджер пакетов Python (pip3) устанавливается утилита tracer.

Права доступа и безопасность

  • Пользователи: Доступ к Cockpit разрешен для пользователя root (на современных версиях ОС настройка выполняется автоматически).

  • Сертификаты: Файлы ключей в директории /etc/cockpit/ws-certs.d/ имеют ограниченный доступ (владелец root, группа cockpit-ws).

  • Брандмауэр: Порт управления Cockpit должен быть открыт для внешнего доступа.

Базы данных

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

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

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

Параметр Значение
Имя образа jonasal/nginx-certbot:latest
Сеть host (режим использования сетевого стека хоста)
Тома (volumes) - nginx_secrets:/etc/letsencrypt
- /data/nginx/user_conf.d:/etc/nginx/user_conf.d
Политика перезапуска unless-stopped
Переменные окружения CERTBOT_EMAIL=hkadm@hostkey.com

Кастомные скрипты и дополнительные настройки

В процессе развертывания выполняются следующие действия:

  • Настройка проксирования: В конфигурационные файлы Nginx вносятся изменения для перенаправления трафика (proxy_pass) на внутренний порт 127.0.0.1:3000.

  • Очистка окружения: Выполняется принудительный выход из Docker Swarm (docker swarm leave --force), если он был активен, для предотвращения конфликтов сетевых мостов.

Инструкция по обновлению приложения

Для обновления компонентов системы необходимо:

  1. Обновить системные пакеты через apt update && apt upgrade.

  2. Перезапустить службы управления виртуализацией и панель Cockpit:

    systemctl restart libvirtd cockpit.socket
    

Расположение конфигурационных файлов и данных

  • /etc/cockpit/ws-certs.d/ — директория с SSL-сертификатами для панели управления.

  • /data/nginx/user_conf.d/ — директория с пользовательскими конфигурациями Nginx.

  • /root/nginx/compose.yml — файл конфигурации Docker Compose для прокси-сервера.

Доступные порты для подключения

Порт Назначение Протокол
443 Веб-интерфейс (через SSL) HTTPS
9090 Панель управления Cockpit HTTP/HTTPS
question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×