Обзор развертывания 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. Процесс включает следующие шаги:
-
Настройка репозитория:
-
GPG-ключ Zabbly добавляется в
/etc/apt/keyrings/zabbly.asc. -
Стабильный репозиторий настраивается в
/etc/apt/sources.list.d/zabbly-incus-stable.sources.
-
-
Установка пакетов:
-
Устанавливаются следующие пакеты:
-
incus: Ядро для управления контейнерами и виртуальными машинами. -
qemu-system: Требуется для запуска виртуальных машин. -
incus-ui-canonical: Предоставляет веб-интерфейс пользователя.
-
-
Инициализация:
-
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:
-
Запуск/Включение:
Примечание: Еслиincus.socketотсутствует, используется резервная службаincus.service. -
Проверка статуса:
Управление прокси Nginx:
-
Запуск/Перезапуск:
-
Остановка:
Обновление:
-
Для обновления пакетов Incus:
-
Для обновления образа контейнера Nginx: