Обзор развертывания LXD и Nginx-Certbot на сервере¶
Предпосылки и предварительные требования¶
Для корректной работы системы необходимо выполнить следующие условия:
- Операционная система: Ubuntu 22.04 (jammy).
- Наличие прав суперпользователя (root) или возможность выполнения команд через
sudo. - Доступ к интернету для загрузки пакетов и сертификатов.
- Открытые порты для доступа к API и веб-интерфейсу LXD, а также для работы веб-сервера.
Процесс установки приложения¶
Установка и настройка компонентов выполняются в следующей последовательности:
- Установка базовых зависимостей
-
Устанавливаются пакеты
snapdиsquashfs-toolsчерез менеджер пакетовapt. -
Установка и настройка LXD
- Устанавливается или обновляется пакет
lxdчерезsnapв указанном канале. - Добавляется пользователь администратора в группу
lxdдля управления контейнерами безsudo. - Инициализируется демон LXD с минимальными настройками, если это не было сделано ранее.
- Настройка веб-интерфейса LXD: включение или выключение через команду
snap set. -
Настройка адреса прослушивания HTTPS для API LXD через команду
lxc config set. -
Установка Docker и развертывание Nginx-Certbot
- Проверяется наличие Docker CLI. Если отсутствует, выполняется установка Docker.
- Запускается и включается в автозагрузку сервис
docker. - Ожидается готовность сокета Docker.
- Создается каталог
/root/nginxдля конфигурации прокси-сервера. - Генерируется файл
compose.ymlв директории/root/nginx. - Обновляется конфигурация хоста в
/data/nginx/user_conf.d/путем добавления директивыproxy_passдля перенаправления трафика на внутренний порт. - Запускаются контейнеры через
docker compose up -d.
Контейнеры Docker и их запуск¶
Система использует Docker для запуска веб-сервера и менеджера сертификатов. Конфигурация описана в файле /root/nginx/compose.yml.
Используемый образ: jonasal/nginx-certbot:latest.
Параметры запуска контейнера nginx: - Политика перезапуска: unless-stopped. - Режим сети: host. - Переменная окружения CERTBOT_EMAIL установлена на hkadm@hostkey.com. - Файл окружения: /data/nginx/nginx-certbot.env. - Монтируемые тома: - nginx_secrets (внешний том) монтируется в /etc/letsencrypt для хранения сертификатов. - Локальная директория /data/nginx/user_conf.d монтируется в /etc/nginx/user_conf.d для пользовательских конфигураций.
Команда запуска контейнеров:
Выполняется из директории/root/nginx. Базы данных¶
В предоставленных конфигурационных файлах отсутствует информация о подключении, хранении или настройке баз данных.
Прокси серверы¶
В качестве прокси-сервера используется контейнер nginx-certbot.
- Домен и сертификаты: Сертификаты Let's Encrypt хранятся в томе
nginx_secrets, который монтируется в/etc/letsencryptвнутри контейнера. - Конфигурация: Пользовательские конфигурационные файлы размещаются в директории
/data/nginx/user_conf.d. - Маршрутизация: В конфигурационный файл хоста добавляется директива
proxy_pass, перенаправляющая запросы на внутренний адресhttps://127.0.0.1:<internal_port>.
Права доступа и безопасность¶
Настройка безопасности осуществляется через брандмауэр ufw и управление группами пользователей.
- Группы пользователей: Администратор добавляется в группу
lxdдля управления контейнерами. - Брандмауэр (ufw):
- Устанавливается пакет
ufw. - Разрешается доступ к порту OpenSSH.
- Разрешается доступ к порту HTTPS LXD для всех пользователей или из указанных диапазонов IP-адресов (CIDR).
- Права на файлы:
- Директория
/root/nginxсоздается с правами0755и владельцемroot. - Файл
compose.ymlсоздается с правами0644и владельцемroot.
Запуск, остановка и обновление¶
Управление сервисами осуществляется через стандартные команды Docker и системные утилиты.
-
Запуск контейнеров:
Команда выполняется из директории/root/nginx. -
Управление сервисом Docker:
- Запуск и включение в автозагрузку:
-
Перезапуск демона LXD (при изменении настроек UI):
-
Обновление конфигурации:
- Для изменения настроек LXD используются команды
lxc config setиsnap set. - Для изменения конфигурации прокси редактируется файл в
/data/nginx/user_conf.d/и перезапускаются контейнеры.