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

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

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

Перед началом или в процессе развертывания на целевом сервере должны быть выполнены следующие требования:

  • Операционная система: Дистрибутив на базе Debian (проверка через /etc/os-release).

  • Привилегии: Для установки и конфигурации требуется доступ root.

  • Сеть: Должна быть включена пересылка пакетов IPv4 (net.ipv4.ip_forward).

  • Порты:

  • Внутренний: 8443 (API Incus и веб-интерфейс).

  • Внешний: 443 (HTTPS-трафик через прокси Nginx).

FQDN финальной панели

Приложение доступно по следующему формату полностью квалифицированного доменного имени (FQDN):

  • incus<Server ID>.hostkey.in

  • Сервис работает по протоколу HTTPS на порту 443.

  • Полный формат URL: https://incus<Server ID>.hostkey.in/

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

Для развертывания используется следующая структура директорий для конфигурации, данных и сертификатов:

  • /etc/apt/keyrings/: Хранит GPG-ключ репозитория Zabbly (zabbly.asc).

  • /etc/apt/sources.list.d/: Содержит конфигурацию стабильного репозитория Zabbly Incus (zabbly-incus-stable.sources).

  • /root/:

  • incus-preseed.yml: Файл предварительной конфигурации (pre-seed) для инициализации Incus.

  • nginx/: Директория, содержащая конфигурацию Docker Compose для прокси.

  • /var/lib/incus/: Расположение по умолчанию для хранения экземпляров и образов Incus.

  • /opt/incus/ui/: Расположение ресурсов веб-интерфейса Incus (предоставляется пакетом incus-ui-canonical).

  • /data/nginx/:

  • user_conf.d/: Содержит пользовательские файлы конфигурации Nginx для конкретного домена.

  • nginx-certbot.env: Переменные окружения для контейнера Nginx-Certbot.

  • nginx_secrets: Точка монтирования тома для сертификатов Let's Encrypt.

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

Приложение Incus устанавливается с помощью пакетного менеджера APT из репозитория Zabbly. Процесс включает следующие шаги:

  1. Настройка репозитория:

    • GPG-ключ Zabbly добавляется в /etc/apt/keyrings/zabbly.asc.

    • Стабильный репозиторий настраивается в /etc/apt/sources.list.d/zabbly-incus-stable.sources.

  2. Установка пакетов:

    • Устанавливаются следующие пакеты:

    • incus: Ядро для управления контейнерами и виртуальными машинами.

    • qemu-system: Требуется для запуска виртуальных машин.

    • incus-ui-canonical: Предоставляет веб-интерфейс пользователя.

  3. Инициализация:

    • Incus инициализируется в неинтерактивном режиме с использованием файла pre-seed, расположенного по пути /root/incus-preseed.yml.

    • В ходе инициализации создается мост сети по умолчанию (incusbr0) и пул хранилища по умолчанию (default).

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

Безопасность и контроль доступа настроены следующим образом:

  • Группы пользователей:

    • Создается группа incus-admin.

    • Пользователь root добавляется в группу incus-admin для управления Incus.

  • Сетевая безопасность:

    • Пересылка пакетов IPv4 включена на уровне ядра.

    • API и интерфейс Incus изначально привязаны к 127.0.0.1:8443, затем открываются для всех интерфейсов на порту 8443 для внутренней проксировки.

  • Межсетевой экран (Firewall):

    • Внешний доступ ограничен портом 443 (HTTPS) через прокси Nginx.

    • Прямой доступ к порту 8443 не открыт для публичного интернета.

Базы данных

  • Внешние сервисы баз данных для самого приложения Incus не настраиваются и не требуются.

  • Incus хранит свое внутреннее состояние и конфигурацию в локальном пуле хранилища, расположенном по пути /var/lib/incus.

Контейнеры Docker и их развертывание

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

  • Образ контейнера: jonasal/nginx-certbot:latest

  • Метод развертывания: Docker Compose

  • Расположение файла Compose: /root/nginx/compose.yml

  • Детали конфигурации:

    • Политика перезапуска: unless-stopped

    • Режим сети: host

    • Тома (Volumes):

      • nginx_secrets (внешний) монтируется в /etc/letsencrypt для хранения сертификатов.

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

    • Окружение:

      • CERTBOT_EMAIL: Установлено значение hkadm@hostkey.com.

      • Дополнительные переменные окружения загружаются из /data/nginx/nginx-certbot.env.

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

Nginx используется в качестве обратного прокси-сервера для обработки SSL-терминации и маршрутизации трафика на веб-интерфейс Incus.

  • Конфигурация прокси:

    • Контейнер Nginx слушает порт 443 (HTTPS).

    • Трафик проксируется на сервис Incus, работающий по адресу https://127.0.0.1:8443.

  • SSL/TLS:

    • Управляется автоматически контейнером nginx-certbot.

    • Сертификаты хранятся в томе nginx_secrets.

  • Пользовательский домен:

    • Прокси настроен для домена incus<Server ID>.hostkey.in.

    • Файл конфигурации расположен по пути /data/nginx/user_conf.d/incus<Server ID>.hostkey.in.conf.

    • Директива proxy_pass установлена в https://127.0.0.1:8443.

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

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

  • /etc/apt/keyrings/: Режим 0755.

  • /etc/apt/sources.list.d/zabbly-incus-stable.sources: Режим 0644.

  • /root/incus-preseed.yml: Режим 0600, владелец root:root.

  • /root/nginx/: Режим 0755, владелец root:root.

  • /root/nginx/compose.yml: Режим 0644, владелец root:root.

  • /data/nginx/user_conf.d/: Режим 0755 (выводится из стандартных практик конфигурации Nginx и монтирования томов).

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

Ключевые файлы конфигурации и места хранения данных включают:

  • Incus Pre-seed: /root/incus-preseed.yml

  • Хранилище Incus: /var/lib/incus/storage-pools/default

  • Ресурсы интерфейса Incus: /opt/incus/ui/

  • Nginx Compose: /root/nginx/compose.yml

  • Пользовательская конфигурация Nginx: /data/nginx/user_conf.d/incus<Server ID>.hostkey.in.conf

  • Окружение Nginx: /data/nginx/nginx-certbot.env

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

Следующие порты используются развернутыми сервисами:

  • Порт 443: HTTPS (Внешний доступ через прокси Nginx).

  • Порт 8443: HTTPS (Внутренний доступ к API и веб-интерфейсу Incus).

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

Управление службами осуществляется через systemd для Incus и docker compose для прокси.

Управление службой Incus:

  • Запуск/Включение:

    systemctl start incus.socket
    systemctl enable incus.socket
    
    Примечание: Если incus.socket отсутствует, используется резервная служба incus.service.

  • Проверка статуса:

    incus info
    

Управление прокси Nginx:

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

    cd /root/nginx
    docker compose up -d
    

  • Остановка:

    cd /root/nginx
    docker compose down
    

Обновление:

  • Для обновления пакетов Incus:

    apt update
    apt upgrade incus qemu-system incus-ui-canonical
    

  • Для обновления образа контейнера Nginx:

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

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