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

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

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

Для корректной работы системы необходимо выполнить следующие условия:

  • Операционная система: Ubuntu 22.04 (jammy).
  • Наличие прав суперпользователя (root) или возможность выполнения команд через sudo.
  • Доступ к интернету для загрузки пакетов и сертификатов.
  • Открытые порты для доступа к API и веб-интерфейсу LXD, а также для работы веб-сервера.

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

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

  1. Установка базовых зависимостей
  2. Устанавливаются пакеты snapd и squashfs-tools через менеджер пакетов apt.

  3. Установка и настройка LXD

  4. Устанавливается или обновляется пакет lxd через snap в указанном канале.
  5. Добавляется пользователь администратора в группу lxd для управления контейнерами без sudo.
  6. Инициализируется демон LXD с минимальными настройками, если это не было сделано ранее.
  7. Настройка веб-интерфейса LXD: включение или выключение через команду snap set.
  8. Настройка адреса прослушивания HTTPS для API LXD через команду lxc config set.

  9. Установка Docker и развертывание Nginx-Certbot

  10. Проверяется наличие Docker CLI. Если отсутствует, выполняется установка Docker.
  11. Запускается и включается в автозагрузку сервис docker.
  12. Ожидается готовность сокета Docker.
  13. Создается каталог /root/nginx для конфигурации прокси-сервера.
  14. Генерируется файл compose.yml в директории /root/nginx.
  15. Обновляется конфигурация хоста в /data/nginx/user_conf.d/ путем добавления директивы proxy_pass для перенаправления трафика на внутренний порт.
  16. Запускаются контейнеры через 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 для пользовательских конфигураций.

Команда запуска контейнеров:

docker compose up -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 и системные утилиты.

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

    docker compose up -d
    
    Команда выполняется из директории /root/nginx.

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

  • Запуск и включение в автозагрузку:
    systemctl start docker
    systemctl enable docker
    
  • Перезапуск демона LXD (при изменении настроек UI):

    systemctl restart snap.lxd.daemon
    

  • Обновление конфигурации:

  • Для изменения настроек LXD используются команды lxc config set и snap set.
  • Для изменения конфигурации прокси редактируется файл в /data/nginx/user_conf.d/ и перезапускаются контейнеры.
question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×