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

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

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

Перед развертыванием приложения должны быть выполнены следующие требования:

  • Операционная система: Ubuntu 22.04 (Jammy)

  • Привилегии: Доступ root или sudo

  • Домен: hostkey.in

  • Требуемые порты:

  • Порт 443 (Внешний HTTPS)

  • Порт 8443 (Внутренний LXD HTTPS)

  • Зависимости программного обеспечения:

  • snapd

  • squashfs-tools

  • Docker (для Nginx и Certbot)

FQDN финальной панели

Приложение доступно по следующему Полному доменному имени (FQDN):

  • Формат: lxd<Server ID>.hostkey.in

  • Порт: 443 (Стандартный HTTPS)

Замените <Server ID> на уникальный идентификатор, присвоенный экземпляру сервера.

Структура файлов и каталогов

Приложение использует следующую структуру каталогов для конфигурации, данных и сертификатов:

Каталог/Путь Описание
/snap/bin/lxd Расположение исполняемого файла LXD
/root/nginx Каталог конфигурации Nginx и Docker Compose
/root/nginx/compose.yml Файл определения Docker Compose
/data/nginx/user_conf.d/ Каталог пользовательской конфигурации Nginx
/data/nginx/nginx-certbot.env Переменные окружения для Nginx-Certbot
/etc/letsencrypt Хранилище SSL-сертификатов (подмонтированный том)

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

Развертывание включает установку snap-пакета LXD и настройку обратного прокси-сервера с использованием Docker.

  1. Установка зависимостей Система устанавливает snapd и squashfs-tools с помощью пакетного менеджера apt.

  2. Установка LXD Snap LXD устанавливается из Snap Store, обращаясь к стабильному каналу:

    snap install lxd --channel=5.21/stable
    
    Если LXD уже установлен, канал обновляется для обеспечения соответствия версий:
    snap refresh lxd --channel=5.21/stable
    

  3. Инициализация LXD Демон LXD инициализируется с минимальными значениями по умолчанию, если он ранее не был настроен:

    /snap/bin/lxd init --minimal
    

  4. Включение графического интерфейса LXD Графический пользовательский интерфейс (UI) для LXD включается через конфигурацию snap:

    snap set lxd ui.enable=true
    

  5. Развертывание прокси и SSL через Docker Обратный прокси-сервер и менеджер SSL-сертификатов развертываются с использованием Docker Compose.

  6. Убедитесь, что сервис docker запущен.

  7. Настройте файл конфигурации Nginx по адресу /data/nginx/user_conf.d/lxd<Server ID>.hostkey.in.conf.

  8. Выполните настройку Docker Compose:

    docker compose up -d
    

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

Настройки безопасности управляются следующим образом:

  • Доступ пользователя: Пользователь администратора добавляется в группу lxd для обеспечения доступа к командам LXD без привилегий root:

    usermod -aG lxd <admin_user>
    

  • Межсетевой экран (UFW):

  • Управление межсетевым экраном является опциональным в зависимости от конфигурации.

  • Если он включен, сначала разрешается доступ SSH.

  • Порт 8443 открывается для HTTPS-трафика LXD.

  • Доступ может быть ограничен определенными блоками CIDR, если это настроено.

  • Конфигурация LXD:

  • LXD настроен на прослушивание всех сетевых интерфейсов для HTTPS на порту 8443:

    /snap/bin/lxc config set core.https_address ":8443"
    

Базы данных

В предоставленной конфигурации развертывания компоненты базы данных не используются.

Docker-контейнеры и их развертывание

Обработка обратного проксирования и генерация SSL-сертификатов осуществляются Docker-контейнерами, определенными в файле compose.yml, расположенном по адресу /root/nginx/compose.yml.

Детали контейнеров:

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

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

  • Режим сети: host

  • Томы:

  • nginx_secrets (внешний том), смонтированный в /etc/letsencrypt

  • /data/nginx/user_conf.d, смонтированный в /etc/nginx/user_conf.d

Команда развертывания:

Стек контейнеров запускается следующей командой из каталога конфигурации:

cd /root/nginx
docker compose up -d

Прокси-серверы

Приложение использует Nginx в качестве обратного прокси-сервера, где завершение SSL-сессий обрабатывается через Certbot.

  • Место расположения конфигурации: /data/nginx/user_conf.d/lxd<Server ID>.hostkey.in.conf

  • Происхождение трафика (Backend): Трафик перенаправляется от внешнего домена к внутреннему сервису LXD.

  • Конфигурация включает директиву:

    proxy_pass https://127.0.0.1:8443;
    

  • SSL-сертификаты: Управляются автоматически через контейнер Nginx-Certbot с использованием издателя Let's Encrypt.

  • Электронная почта для уведомлений Certbot: hkadm@hostkey.com (определяется в файле переменных окружения).

Настройки прав доступа

Права доступа к файлам и каталогам устанавливаются в процессе развертывания:

  • Каталог Nginx:

  • Путь: /root/nginx

  • Владелец: root:root

  • Режим: 0755

  • Файл Compose:

  • Путь: /root/nginx/compose.yml

  • Владелец: root:root

  • Режим: 0644

  • Доступ пользователя LXD:

  • Группа lxd предоставляет необходимые права для взаимодействия пользователей с демоном без привилегий root.

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

Основные файлы конфигурации и данные хранятся в следующих местах:

Файл/Путь Назначение
/root/nginx/compose.yml Определение сервиса Docker Compose
/data/nginx/user_conf.d/lxd<Server ID>.hostkey.in.conf Конфигурация серверного блока Nginx
/data/nginx/nginx-certbot.env Переменные окружения для контейнера прокси
/snap/bin/lxd Исполняемый файл LXD
/etc/letsencrypt Файлы SSL-сертификатов (подмонтированный том)

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

Следующие порты настроены для внешнего и внутреннего взаимодействия:

Порт Протокол Описание
443 TCP Внешний HTTPS (Nginx/SSL)
8443 TCP Внутренний API и UI LXD (HTTPS)

Запуск, остановка и обновление

Управление сервисом LXD:

  • Перезапуск демона LXD:

    systemctl restart snap.lxd.daemon
    

  • Проверка версии LXD:

    /snap/bin/lxc version
    

Управление прокси-сервером Docker:

  • Запуск/Перезапуск контейнеров:

    cd /root/nginx
    docker compose up -d
    

  • Остановка контейнеров:

    cd /root/nginx
    docker compose down
    

Обновление LXD:

Для обновления LXD до конкретного канала:

snap refresh lxd --channel=5.21/stable

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×