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

Обзор развертывания 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. Процесс гарантирует применение правильной версии и канала:

  1. Установка зависимостей: Система устанавливает snapd и squashfs-tools.

  2. Установка пакета LXD Snap: Пакет LXD устанавливается из магазина Snap с использованием канала 5.21/stable.

    • Команда: snap install lxd --channel=5.21/stable
  3. Инициализация LXD: Если LXD еще не инициализирован, он настраивается с минимальными значениями по умолчанию.

    • Команда: /snap/bin/lxd init --minimal
  4. Включение интерфейса: Веб-интерфейс LXD включается через конфигурацию Snap.

    • Команда: snap set lxd ui.enable=true
  5. Настройка привязки сети: Демон LXD настраивается для прослушивания внутреннего порта HTTPS 8443 на всех интерфейсах.

    • Команда: /snap/bin/lxc config set core.https_address :8443
  6. Перезапуск службы: Демон 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

Контейнер запускается с помощью следующей команды:

docker compose up -d
Выполняется из каталога /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
question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×