Обзор развертывания Incus на сервере¶
Предпосылки и предварительные требования¶
Для успешного развертывания системы необходимо наличие сервера с операционной системой Debian. Требуется наличие прав суперпользователя (root) для выполнения всех операций установки и конфигурации.
Система требует следующих сетевых настроек: - Включение пересылки пакетов IPv4 (net.ipv4.ip_forward). - Открытие порта 8443 для доступа к веб-интерфейсу и API. - Наличие доменного имени для настройки SSL-сертификатов через Certbot.
Структура файлов и каталогов¶
Конфигурация и данные приложения распределяются по следующим директориям: - /etc/apt/keyrings/ — ключи подписи репозиториев. - /etc/apt/sources.list.d/ — файлы конфигурации репозиториев. - /var/lib/incus/ — хранилище данных контейнеров и виртуальных машин. - /root/incus-preseed.yml — файл предварительной настройки (preseed) для инициализации. - /root/nginx/ — рабочая директория для развертывания прокси-сервера. - /root/nginx/compose.yml — файл конфигурации docker compose. - /data/nginx/ — директория для хранения переменных окружения и пользовательских конфигураций. - /data/nginx/user_conf.d/ — каталог с конфигурационными файлами для виртуальных хостов Nginx. - /etc/letsencrypt/ — точка монтирования для хранения SSL-сертификатов.
Процесс установки приложения¶
Установка выполняется через пакетный менеджер apt с использованием репозитория Zabbly. Процесс включает следующие этапы:
- Установка базовых утилит:
ca-certificates,gnupg. - Добавление ключа репозитория Zabbly в
/etc/apt/keyrings/zabbly.asc. - Создание файла источника репозитория в
/etc/apt/sources.list.d/zabbly-incus-stable.sources. - Обновление кэша пакетов.
- Установка пакетов:
incus— основной менеджер контейнеров.qemu-system— поддержка виртуальных машин.incus-ui-canonical— веб-интерфейс управления.
После установки пакетов выполняется инициализация системы через файл incus-preseed.yml, который настраивает сеть, хранилище и профили по умолчанию.
Права доступа и безопасность¶
Для управления системой создается группа incus-admin. Пользователь root добавляется в эту группу для получения необходимых привилегий.
Сетевая безопасность обеспечивается следующими мерами: - Веб-интерфейс и API привязываются к адресу :8443 (все сетевые интерфейсы). - Доступ к API осуществляется только через защищенный протокол HTTPS. - Для внешнего доступа используется прокси-сервер Nginx с SSL-шифрованием.
Базы данных¶
В предоставленной конфигурации не используется внешняя база данных. Все данные о контейнерах, виртуальных машинах и профилях хранятся в локальной файловой системе в директории /var/lib/incus/.
Контейнеры Docker и их запуск¶
Для обеспечения внешнего доступа и управления SSL-сертификатами развертывается контейнер Nginx с Certbot.
Контейнер запускается через docker compose из директории /root/nginx/. Конфигурация контейнера включает: - Образ: jonasal/nginx-certbot:latest. - Режим сети: host. - Монтирование тома nginx_secrets в /etc/letsencrypt для хранения сертификатов. - Монтирование директории /data/nginx/user_conf.d в /etc/nginx/user_conf.d для пользовательских конфигов. - Переменная окружения CERTBOT_EMAIL для уведомлений от Certbot.
Файл конфигурации compose.yml генерируется автоматически перед запуском.
Прокси серверы¶
Прокси-сервер Nginx развернут в контейнере Docker и выполняет следующие функции: - Обработка входящих HTTPS-запросов. - Автоматическое получение и обновление SSL-сертификатов через Certbot. - Пересылка трафика на локальный адрес https://127.0.0.1:8443, где работает API и веб-интерфейс Incus.
Конфигурация виртуального хоста добавляется в файл /data/nginx/user_conf.d/ с директивой proxy_pass, указывающей на внутренний адрес Incus.
Настройки прав¶
Права доступа к файлам и директориям устанавливаются следующим образом: - Директория /root/nginx имеет права 0755 и владельца root:root. - Файл compose.yml имеет права 0644. - Файл предварительной настройки /root/incus-preseed.yml имеет права 0600 и владельца root:root. - Директория /etc/apt/keyrings имеет права 0755.
Запуск, остановка и обновление¶
Управление сервисом Incus осуществляется через системный менеджер systemd: - Запуск и включение в автозагрузку: systemctl start incus.socket или systemctl start incus.service. - Проверка статуса: systemctl status incus.socket.
Управление контейнером Nginx выполняется через docker compose в директории /root/nginx/: - Запуск: docker compose up -d. - Остановка: docker compose down. - Обновление конфигурации: изменение файла compose.yml или переменных окружения, затем перезапуск контейнера.
Для проверки доступности веб-интерфейса используется команда incus info или прямой запрос к https://127.0.0.1:8443/ui.