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

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

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

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

  • Операционная система: Debian.

  • Права доступа: Права суперпользователя (root).

  • Сеть:

  • Доступ к репозиториям Zabbly для установки Incus.

  • Включенная пересылка IPv4 пакетов (net.ipv4.ip_forward = 1).

  • Порты:

  • 8443 — внутренний порт API и Web UI (HTTPS).

  • 443 — внешний порт для доступа через прокси.

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

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

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

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

Процесс развертывания включает в себя несколько этапов: подготовку системы, установку компонентов виртуализации и настройку прокси-сервера.

  1. Подготовка системных инструментов: Установка пакетов ca-certificates и gnupg, а также создание директории для ключей репозиториев.

  2. Настройка репозитория Zabbly: Добавление официального репозитория Zabbly для получения стабильных сборок Incus, соответствующих архитектуре системы.

  3. Установка компонентов виртуализации:

  4. incus — основная среда контейнеризации.

  5. qemu-system — поддержка виртуальных машин.

  6. incus-ui-canonical — веб-интерфейс управления.

  7. Настройка окружения Incus:

  8. Создание группы incus-admin и добавление пользователя root в эту группу.

  9. Автоматическая инициализация сети (мост incusbr0) и хранилища (default, тип dir).

  10. Настройка API и Web UI на прослушивание порта :8443.

  11. Настройка веб-прокси: Развертывание контейнера для управления SSL-сертификатами через Certbot и настройка Nginx для перенаправления трафика с порта 443 на внутренний порт приложения.

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

  • Создается группа incus-admin для управления ресурсами.

  • Веб-интерфейс по умолчанию доступен только локально через защищенное соединение, пока не настроен внешний прокси.

  • Конфигурационные файлы инициализации хранятся в /root/incus-preseed.yml с ограниченными правами доступа (0600).

Базы данных

В данной конфигурации база данных для управления контейнерами интегрирована в состав сервиса Incus и использует локальное хранилище по пути /var/lib/incus/storage-pools/default.

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

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

Nginx Certbot Proxy

  • Образ: jonasal/nginx-certbot:latest

  • Порты: Использует режим сети host.

  • Тома (volumes):

  • nginx_secrets:/etc/letsencrypt — для хранения SSL-сертификатов.

  • /data/nginx/user_conf.d:/etc/nginx/user_conf.d — для конфигурационных файлов проксирования.

  • Переменные окружения:

  • CERTBOT_EMAIL=hkadm@hostkey.com

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

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

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

  • Инициализация Incus (Preseed): Используется файл /root/incus-preseed.yml для автоматической настройки сетевого моста incusbr0, хранилища default и профиля по умолчанию с диском и сетевым интерфейсом eth0.

  • Настройка проксирования: В конфигурационные файлы Nginx вносятся изменения, чтобы перенаправлять входящий трафик на локальный адрес https://127.0.0.1:8443.

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

Для обновления основного приложения Incus необходимо выполнить обновление системных пакетов через пакетный менеджер:

apt update && apt upgrade incus

Если используется контейнер прокси-сервера, его можно обновить командой:

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

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

Тип данных Путь
Конфигурация инициализации Incus /root/incus-preseed.yml
Данные хранилища Incus /var/lib/incus/storage-pools/default
Конфигурации Nginx (пользовательские) /data/nginx/user_conf.d/
Файлы конфигурации Docker Compose /root/nginx/compose.yml

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

Порт Назначение Доступность
443 Веб-интерфейс (HTTPS) Внешний (через Nginx)
8443 API и Web UI Incus Локальный
question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×