Обзор развертывания LXD на сервере¶
Предварительные требования и базовые условия¶
Для развертывания LXD на сервере требуются следующие системные характеристики и конфигурации:
-
Операционная система: Ubuntu 22.04 (кодовое имя: jammy).
-
Привилегии: Для установки пакетов Snap и управления системными службами требуется доступ root или пользователь с правами
sudo. -
Необходимые пакеты: На системе должны быть установлены
snapdиsquashfs-tools. -
Группа пользователей: Административный пользователь должен быть добавлен в группу
lxdдля управления контейнерами без использованияsudo. -
Межсетевой экран: Uncomplicated Firewall (
ufw) является опциональным. Если он включен, он должен разрешать доступ по SSH и конкретный порт HTTPS для LXD.
FQDN финальной панели¶
Приложение доступно по следующему формату полностью квалифицированного доменного имени (FQDN):
lxd<Server ID>.hostkey.in:443
Где <Server ID> заменяется на конкретный идентификатор экземпляра сервера. Сервис слушает внешний порт 443, который проксируется на внутренний порт LXD 8443.
Структура файлов и каталогов¶
Развертывание использует следующую структуру каталогов для конфигурации, данных и сертификатов:
-
Каталог конфигурации Nginx:
/data/nginx/user_conf.d/- Содержит конфигурацию блока сервера:
lxd<Server ID>.hostkey.in.conf.
- Содержит конфигурацию блока сервера:
-
Каталог Docker Compose:
/root/nginx/- Содержит файл
compose.ymlдля прокси-сервера и управления сертификатами.
- Содержит файл
-
Файл окружения Nginx:
/data/nginx/nginx-certbot.env- Хранит переменные окружения для контейнера Nginx-Certbot.
-
Сертификаты Let's Encrypt:
/etc/letsencrypt/- Монтированный том для SSL-сертификатов, управляемых контейнером Docker.
-
Данные LXD: Управляются внутренне пакетом LXD snap, обычно расположены в
/var/snap/lxd/common/.
Процесс установки приложения¶
LXD устанавливается и настраивается с использованием менеджера пакетов Snap. Процесс гарантирует применение правильной версии и канала:
-
Установка зависимостей: Система устанавливает
snapdиsquashfs-tools. -
Установка пакета LXD Snap: Пакет LXD устанавливается из магазина Snap с использованием канала
5.21/stable.- Команда:
snap install lxd --channel=5.21/stable
- Команда:
-
Инициализация LXD: Если LXD еще не инициализирован, он настраивается с минимальными значениями по умолчанию.
- Команда:
/snap/bin/lxd init --minimal
- Команда:
-
Включение интерфейса: Веб-интерфейс LXD включается через конфигурацию Snap.
- Команда:
snap set lxd ui.enable=true
- Команда:
-
Настройка привязки сети: Демон LXD настраивается для прослушивания внутреннего порта HTTPS
8443на всех интерфейсах.- Команда:
/snap/bin/lxc config set core.https_address :8443
- Команда:
-
Перезапуск службы: Демон LXD перезапускается для применения изменений интерфейса и сети.
- Команда:
systemctl restart snap.lxd.daemon
- Команда:
Права доступа и безопасность¶
Безопасность и контроль доступа управляются через группы пользователей и опциональные правила межсетевого экрана:
-
Доступ пользователя: Административный пользователь добавляется в группу
lxdдля предоставления прав на управление экземплярами LXD. -
Межсетевой экран (UFW):
-
Если включен параметр
lxd_manage_ufw, устанавливается пакетufw. -
Доступ по SSH разрешен по умолчанию.
-
Порт HTTPS LXD (
8443) разрешен для всего трафика или ограничен конкретными блоками CIDR, если они определены в конфигурации. -
Примечание: В предоставленной конфигурации
lxd_manage_ufwустановлен вfalse, что означает, что межсетевой экран не управляется этим скриптом развертывания.
-
Контейнеры Docker и их развертывание¶
Контейнер Docker развертывается для обработки обратного проксирования и управления SSL-сертификатами с использованием Nginx и Certbot.
-
Образ контейнера:
jonasal/nginx-certbot:latest -
Метод развертывания: Docker Compose
-
Расположение файла Compose:
/root/nginx/compose.yml -
Режим сети:
host -
Томы:
-
nginx_secrets(внешний) монтируется в/etc/letsencrypt -
/data/nginx/user_conf.dмонтируется в/etc/nginx/user_conf.d
-
-
Окружение:
-
CERTBOT_EMAIL:hkadm@hostkey.com -
Дополнительные переменные загружаются из
/data/nginx/nginx-certbot.env
-
Контейнер запускается с помощью следующей команды:
Выполняется из каталога/root/nginx. Прокси-серверы¶
Контейнер Nginx действует как обратный прокси-сервер для безопасного предоставления интерфейса LXD через HTTPS.
-
Конфигурация прокси: Файл конфигурации Nginx, расположенный по адресу
/data/nginx/user_conf.d/lxd<Server ID>.hostkey.in.conf, обновляется для пересылки трафика. -
Прокси-пересылка (Proxy Pass): Трафик, полученный на внешнем порту, пересылается на внутренний сервис LXD.
- Строка конфигурации:
proxy_pass https://127.0.0.1:8443;
- Строка конфигурации:
-
SSL/TLS: Управляется автоматически компонентом Certbot внутри контейнера Docker.
-
Картирование доменов: Прокси-сервер настроен для домена
lxd<Server ID>.hostkey.in.
Расположение файлов конфигурации и данных¶
Ключевые файлы конфигурации и расположение данных следующие:
| Файл/Каталог | Путь | Описание |
|---|---|---|
| Конфигурация сервера Nginx | /data/nginx/user_conf.d/lxd<Server ID>.hostkey.in.conf | Конфигурация обратного прокси-сервера для конкретного домена. |
| Docker Compose | /root/nginx/compose.yml | Определение контейнера Nginx-Certbot. |
| Окружение Nginx | /data/nginx/nginx-certbot.env | Переменные окружения для контейнера прокси-сервера. |
| Конфигурация LXD Snap | Управляется через snap set | Внутренние настройки LXD (UI, адрес HTTPS). |
| SSL-сертификаты | /etc/letsencrypt/ | SSL-сертификаты, выданные Let's Encrypt. |
Доступные порты для подключения¶
Для развертывания используются следующие порты:
-
Порт 443 (Внешний): Публичный порт HTTPS, используемый прокси-сервером Nginx.
-
Порт 8443 (Внутренний): Внутренний порт HTTPS, на котором слушает демон LXD.
-
Порт 22: Доступ по SSH (стандартный, разрешен, если UFW управляется).
Запуск, остановка и обновление¶
Команды управления службами для развернутых компонентов следующие:
-
Служба LXD:
-
Запуск/Перезапуск:
systemctl restart snap.lxd.daemon -
Статус:
systemctl status snap.lxd.daemon
-
-
Контейнер прокси-сервера Docker:
-
Запуск/Перезапуск:
docker compose up -d(из каталога/root/nginx) -
Остановка:
docker compose down(из каталога/root/nginx) -
Обновление образа:
docker compose pull, за которым следуетdocker compose up -d
-
-
Обновления пакета LXD Snap:
- Обновление:
snap refresh lxd --channel=5.21/stable
- Обновление: