Шаг 1: Подготовка системы
# Обновляем список пакетов и систему
sudo apt update
sudo apt upgrade -y
# Устанавливаем базовые утилиты, которые могут пригодиться
sudo apt install -y curl wget gnupg software-properties-common
Шаг 2: Настраиваем репозиторий Backports
# Добавляем репозиторий backports
echo "deb http://deb.debian.org/debian bookworm-backports main" | sudo tee /etc/apt/sources.list.d/bookworm-backports.list
# Настраиваем приоритеты, чтобы избежать проблем с экспериментальными пакетами
sudo tee /etc/apt/preferences.d/90-bookworm-backports << EOF
Package: *
Pin: release a=bookworm-backports
Pin-Priority: 500
Package: incus*
Pin: release a=bookworm-backports
Pin-Priority: 1000
Package: *
Pin: release a=experimental
Pin-Priority: 1
EOF
# Обновляем список пакетов с учетом новых репозиториев
sudo apt update
Шаг 3: Установка Incus (без QEMU)
# Устанавливаем Incus без рекомендательных пакетов (исключаем QEMU)
sudo apt install -t bookworm-backports incus --no-install-recommends -y
Шаг 4: Запуск службы Incus
# Запускаем службу Incus
sudo systemctl start incus incus.socket
# Включаем автозапуск
sudo systemctl enable incus incus.socket
# Проверяем статус
sudo systemctl status incus
Шаг 5: Настройка Incus
# Запускаем инициализацию с настройками по умолчанию
sudo incus admin init --auto
Что делает --auto:
Создает storage pool default с бэкендом dir
Создает сетевой мост incusbr0 с NAT
Включает IPv6
Настраивает API на локальный socket
Шаг 6: Проверка установки
# Проверяем, что демон работает
sudo systemctl status incus
# Проверяем список контейнеров (должен быть пустым)
sudo incus list
# Проверяем информацию о сервере
sudo incus info
Шаг 7: Настройка прав пользователя (опционально)
Чтобы не использовать sudo для каждой команды, добавьте своего пользователя в группу incus:
# Добавляем текущего пользователя в группу incus
sudo usermod -a -G incus-admin $USER
# Применяем изменения группы (или перелогиньтесь)
newgrp incus-admin
# Проверяем группы
# Должны видеть incus-admin в списке
groups
# Проверяем, что теперь можно работать без sudo
incus list
Шаг 8: Запуск первого контейнера
# Запускаем контейнер с Ubuntu 22.04
incus launch images:ubuntu/22.04 test-container
# Проверяем, что контейнер запустился
incus list
# Заходим в контейнер
incus exec test-container -- bash
# Внутри контейнера можно проверить систему
cat /etc/os-release
exit
Полезные команды для начала работы
# Просмотр доступных образов
incus image list images: | head -20
# Создание контейнера с конкретным дистрибутивом
incus launch images:debian/12 my-debian
incus launch images:alpine/3.18 my-alpine
# Остановка контейнера
incus stop test-container
# Удаление контейнера
incus delete test-container
# Просмотр информации о хранилище
incus storage list
# Просмотр сетевых настроек
incus network list
Если нужна поддержка виртуальных машин (позже)
# Установка QEMU для поддержки ВМ
sudo apt install -t bookworm-backports qemu-system-x86 -y
# Теперь можно запускать виртуальные машины
incus launch images:ubuntu/22.04 my-vm --vm
Возможные проблемы и решения
Проблема: Команда incus не найдена
# Перезагружаем или перелогиниваемся
sudo reboot
# или
newgrp incus
Проблема: Нет доступа к socket
# Проверяем группу пользователя
groups $USER
# Если нет incus, добавляем и перелогиниваемся
sudo usermod -a -G incus $USER
newgrp incus
Проверка успешной установки
После выполнения всех шагов у вас должен быть:
Работающая команда incus
Контейнер test-container в статусе "RUNNING"
Доступ к Incus без sudo (если настроили группу)
Как узнать на каком порту слушает incus
Способ 1: Команда incus config
# Показывает текущий адрес и порт
incus config show | grep https_address
# Или конкретно
incus config get core.https_address
Способ 2: Системные утилиты
# Показывает все слушающие порты
sudo netstat -tlnp | grep incus
# Или с помощью ss (более современная)
sudo ss -tlnp | grep incus
# Ищем процесс incus
sudo lsof -i -P -n | grep incus
Способ 3: Проверка через systemd
# Смотрим статус службы
sudo systemctl status incus
# Или смотрим сокеты
sudo systemctl list-sockets | grep incus
Способ 4: Если Incus не слушает порт
# Проверяем текущую конфигурацию
incus config show
# Если порт не настроен, устанавливаем
sudo incus config set core.https_address ":8443"
# Перезапускаем
sudo systemctl restart incus
# Проверяем снова
sudo ss -tlnp | grep 8443
Способ 5: Проверка всех сетевых соединений
# Показывает все открытые порты
sudo netstat -tulpn
# Или только TCP порты
sudo netstat -tlnp
Пример вывода когда всё работает:
$ sudo ss -tlnp | grep incus
LISTEN 0 128 0.0.0.0:8443 0.0.0.0:* users:(("incus",pid=1234,fd=10))
Это значит Incus слушает на порту 8443 на всех интерфейсах.
Если порт не настроен:
# Настраиваем порт
sudo incus config set core.https_address "0.0.0.0:8443"
# Или только локальный доступ
sudo incus config set core.https_address "127.0.0.1:8443"
# Перезапускаем
sudo systemctl restart incus
# Проверяем
sudo ss -tlnp | grep incus
Краткая памятка:
# УСТАНОВИТЬ порт (работает) ✅
sudo incus config set core.https_address ":8443"
# ПРОВЕРИТЬ что слушает (работает) ✅
sudo ss -tlnp | grep incus
# ПОСМОТРЕТЬ конфигурацию (только с sudo) ✅
sudo incus config show