Обзор развертывания Incus на сервере¶
Предварительные требования и базовые условия¶
Для развертывания платформы контейнеризации и виртуализации Incus требуется операционная система на основе Debian. Процесс установки использует менеджер пакетов APT и зависит от конкретных системных конфигураций для корректной работы.
-
Операционная система: Дистрибутив на базе Debian (требуется кодовое название Debian для настройки репозитория).
-
Привилегии: Для установки пакетов, настройки системных служб и изменения сетевых настроек требуются права root или эквивалентные привилегии sudo.
-
Системные пакеты: Для настройки требуются или устанавливаются следующие базовые инструменты:
-
ca-certificates -
gnupg -
incus -
qemu-system(требуется для поддержки виртуальных машин) -
incus-ui-canonical(компонент веб-интерфейса) -
Сетевая конфигурация: На хост-системе должно быть включено пересылание IPv4-пакетов (
net.ipv4.ip_forwardустановлено в1).
FQDN целевого сервиса¶
Приложение доступно по определенному полностью доменному имени (FQDN), размещенному в домене hostkey.in. URL-адрес формируется по шаблону на основе идентификатора сервера.
-
Шаблон домена:
incus<Server ID>.hostkey.in -
Полный URL доступа:
https://incus<Server ID>.hostkey.in/ -
Внешний порт: 443 (HTTPS)
Структура файлов и каталогов¶
Установка Incus и связанные с ним прокси-сервисы используют определенные директории для хранения конфигураций, данных и пользовательских сертификатов.
-
Пул хранения Incus:
/var/lib/incus/storage-pools/default -
Файл конфигурации пред-настройки Incus (Preseed):
/root/incus-preseed.yml -
Ресурсы веб-интерфейса:
/opt/incus/ui -
Конфигурация Nginx и прокси:
-
Файл Docker Compose:
/root/nginx/compose.yml -
Конфигурация пользователя Nginx:
/data/nginx/user_conf.d/ -
Файл окружения Nginx:
/data/nginx/nginx-certbot.env -
Каталог секретов Nginx:
/etc/letsencrypt(монтируется из томаnginx_secrets)
Процесс установки приложения¶
Приложение Incus устанавливается с помощью менеджера пакетов APT из репозитория Zabbly. Процесс включает добавление ключа репозитория, настройку списка источников и установку основных компонентов.
-
Настройка репозитория:
-
Ключ репозитория Zabbly извлекается и сохраняется в
/etc/apt/keyrings/zabbly.asc. -
Конфигурация репозитория добавляется в
/etc/apt/sources.list.d/zabbly-incus-stable.sources. -
Установка пакетов:
-
Пакет
incusпредоставляет демон и командную строку (CLI). -
Пакет
qemu-systemобеспечивает возможности виртуальных машин. -
Пакет
incus-ui-canonicalпредоставляет ресурсы веб-интерфейса. -
Инициализация:
-
Incus инициализируется в неинтерактивном режиме с использованием файла пред-настройки (preseed), расположенного в
/root/incus-preseed.yml. -
В процессе инициализации создается сетевой мост с именем
incusbr0и пул хранения с именемdefault, использующий драйверdir. -
Создается профиль с именем
defaultдля присоединения корневого диска и сетевого устройства моста к экземплярам.
Права доступа и безопасность¶
Безопасность обеспечивается с помощью системных групп, ограничений привязки к сетевым интерфейсам и правил брандмауэра, управляемых прокси-слоем.
-
Группы пользователей:
-
Создается системная группа с именем
incus-admin. -
Пользователь
rootдобавляется в группуincus-adminдля управления экземплярами Incus. -
Привязка сети:
-
API и интерфейс Incus настраиваются на привязку ко всем сетевым интерфейсам на порту
8443(core.https_addressустановлено в:8443). -
Службы:
-
Служба
incus.socketилиincus.serviceактивируется и запускается черезsystemd. -
Безопасность прокси:
-
Внешний контейнер Nginx обрабатывает завершение SSL-сессий и открывает порт 443 для доступа из публичного интернета.
-
Конфигурация Nginx перенаправляет запросы к внутренней службе Incus.
Контейнеры Docker и их развертывание¶
Для управления обратным проксированием и генерацией SSL-сертификатов с помощью Certbot разворачивается контейнер Docker.
-
Образ контейнера:
jonasal/nginx-certbot:latest -
Метод развертывания:
docker compose -
Файл конфигурации:
/root/nginx/compose.yml -
Детали сервиса:
-
Сервис работает с
network_mode: host. -
Для хранения сертификатов Let's Encrypt в каталоге
/etc/letsencryptиспользуется томnginx_secrets. -
Каталог конфигурации пользователя
/data/nginx/user_conf.dмонтируется в/etc/nginx/user_conf.dвнутри контейнера. -
Сервис настроен с параметром
restart: unless-stopped.
Прокси-серверы¶
Доступ к веб-интерфейсу Incus осуществляется через контейнер обратного прокси-сервера Nginx, который обрабатывает завершение SSL-сессий и маршрутизацию доменов.
-
Прокси-сервер: Nginx (запускается в контейнере Docker).
-
SSL/Сертификаты: Управляются Certbot, сертификаты хранятся в томе
nginx_secrets. -
Конфигурация домена:
-
Файл конфигурации Nginx расположен по адресу
/data/nginx/user_conf.d/incus<Server ID>.hostkey.in.conf. -
Правило прокси-сервера направляет трафик с корневого пути (
/) к внутреннему экземпляру Incus. -
Директива Proxy Pass:
proxy_pass https://127.0.0.1:8443; -
Внешний порт: 443 (HTTPS).
Доступные порты для подключения¶
Система открывает определенные порты для внутреннего управления службами и внешнего доступа пользователей.
| Порт | Протокол | Описание | Доступ |
|---|---|---|---|
| 443 | TCP | HTTPS (Внешний доступ через прокси Nginx) | Публичный (Внешний) |
| 8443 | TCP | API и веб-интерфейс Incus (Внутренний) | Внутренний (127.0.0.1 или интерфейс хоста) |
Запуск, остановка и обновление¶
Управление службами основного демона Incus и контейнера прокси выполняется через systemd и docker compose соответственно.
-
Управление службой Incus:
-
Служба Incus управляется как юнит
systemd. -
Для обеспечения работы службы и её автоматического запуска при загрузке, запускается юнит
incus.socketилиincus.service. -
Управление контейнером прокси:
-
Контейнер прокси Nginx запускается и управляется с помощью Docker Compose из каталога
/root/nginx. -
Команда для запуска/перезапуска прокси:
-
Обновление конфигурации Incus:
-
Настройка привязки сети выполняется с помощью командной строки Incus:
-
Управление экземплярами и проектами осуществляется с помощью стандартного инструмента командной строки
incus.