Обзор развертывания OpenLiteSpeed и Nginx-Certbot на сервере¶
Предпосылки и предварительные требования¶
Для успешного развертывания приложения на сервере необходимо наличие следующих компонентов и условий:
- Операционная система на базе Debian или Ubuntu.
- Права доступа пользователя
rootили возможность выполнения команд черезsudo. - Доступ к интернету для загрузки пакетов, репозиториев и сертификатов.
- Свободные порты:
- Порт
443для HTTPS-трафика (Nginx). - Внутренний порт для панели управления OpenLiteSpeed (определяется переменной
internal_port). - Наличие доменного имени в формате
{{ prefix }}{{ server_id }}.hostkey.inдля настройки SSL-сертификатов.
Структура файлов и каталогов¶
Конфигурационные файлы, данные и сертификаты размещаются в следующих директориях:
/root/nginx/— каталог для конфигурации Docker Compose и запуска прокси-сервера.compose.yml— файл конфигурации для Docker Compose./data/nginx/— каталог для хранения данных Nginx и переменных окружения.nginx-certbot.env— файл переменных окружения для контейнера Nginx.user_conf.d/— каталог с конфигурациями виртуальных хостов.{{ prefix }}{{ server_id }}.hostkey.in.conf— конфигурация проксирования для панели управления OpenLiteSpeed.
/etc/letsencrypt/— каталог для хранения SSL-сертификатов, выданных Certbot.live/— активные сертификаты.dhparams/— параметры Diffie-Hellman для шифрования./etc/docker/— каталог конфигурации Docker.daemon.json— файл настроек демон-процесса Docker./usr/local/lsws/— каталог установки OpenLiteSpeed.admin/misc/admpass.sh— скрипт для настройки пароля администратора.
Процесс установки приложения¶
Установка выполняется в несколько этапов: настройка репозиториев, установка пакетов и развертывание контейнеров.
Установка OpenLiteSpeed¶
- Добавление репозитория LiteSpeed:
- Установка пакета OpenLiteSpeed:
- Запуск службы OpenLiteSpeed:
- Настройка учетных данных администратора панели управления через скрипт
admpass.sh: При выполнении скрипта вводятся имя пользователяadminи выбранный пароль.
Установка Node.js¶
- Добавление репозитория NodeSource для версии 20.x:
- Установка пакета Node.js:
- Проверка версии установленного Node.js:
Установка Docker¶
Если Docker не установлен, выполняется следующая последовательность действий:
- Установка зависимостей:
- Создание каталога для ключей GPG:
- Добавление ключа GPG Docker:
- Добавление репозитория Docker:
- Установка пакетов Docker:
- Запуск служб Docker и containerd:
Контейнеры Docker и их запуск¶
Для обеспечения работы прокси-сервера и получения SSL-сертификатов используется контейнер nginx-certbot.
Конфигурация Docker Compose¶
Файл compose.yml размещается в каталоге /root/nginx/ и содержит следующие настройки:
- Образ контейнера:
jonasal/nginx-certbot:latest. - Режим сети:
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/.
В случае ошибки, связанной с валидацией размера хранилища, может потребоваться смена драйвера хранения Docker на vfs. Для этого:
- Остановка служб Docker и containerd:
- Удаление данных Docker и containerd:
- Обновление файла
daemon.jsonс указанием драйвераvfs: - Перезапуск служб:
- Повторный запуск контейнеров:
Прокси серверы¶
Прокси-сервер Nginx используется для обработки входящего HTTPS-трафика и перенаправления его на панель управления OpenLiteSpeed.
Конфигурация Nginx¶
Конфигурационный файл размещается в каталоге /data/nginx/user_conf.d/ с именем {{ prefix }}{{ server_id }}.hostkey.in.conf.
Основные параметры конфигурации:
- Прослушивание портов
443для IPv4 и IPv6 с поддержкой SSL. - Имя сервера:
{{ prefix }}{{ server_id }}.hostkey.in. - Пути к SSL-сертификатам:
- Полный сертификат:
/etc/letsencrypt/live/{{ prefix }}{{ server_id }}.hostkey.in/fullchain.pem. - Ключ сертификата:
/etc/letsencrypt/live/{{ prefix }}{{ server_id }}.hostkey.in/privkey.pem. - Доверенный сертификат:
/etc/letsencrypt/live/{{ prefix }}{{ server_id }}.hostkey.in/chain.pem. - Параметры шифрования:
- Файл DH-параметров:
/etc/letsencrypt/dhparams/dhparam.pem. - Проксирование запросов на внутренний адрес
127.0.0.1:{{ internal_port }}с использованием HTTPS. - Настройка заголовков для передачи информации о клиенте:
Host,X-Forwarded-Host,X-Forwarded-Server,X-Real-IP,X-Forwarded-For,X-Forwarded-Proto.- Поддержка WebSocket через заголовки
UpgradeиConnection. - Отключение буферизации прокси:
proxy_buffering off.
Права доступа и безопасность¶
Права на файлы и директории¶
- Каталог
/root/nginx/и файлы внутри него имеют владельцаrootи группуrootс правами0755для каталога и0644для файлов. - Каталог
/data/nginx/и его содержимое доступны для чтения и записи пользователемroot. - Каталог
/etc/letsencrypt/защищен правами доступа, позволяющими только пользователюrootи процессу контейнера Nginx читать и записывать сертификаты.
Настройки брандмауэра¶
В конфигурации не указаны правила брандмауэра, однако для корректной работы необходимо открыть следующие порты:
- Порт
443(HTTPS) для внешнего доступа к панели управления. - Внутренний порт
{{ internal_port }}для связи между Nginx и OpenLiteSpeed (доступен только локально через127.0.0.1).
Запуск, остановка и обновление¶
Управление службой OpenLiteSpeed¶
- Запуск службы:
- Остановка службы:
- Перезапуск службы:
- Включение автозапуска при загрузке системы:
Управление контейнерами Docker¶
- Запуск контейнеров:
- Остановка контейнеров:
- Перезапуск контейнеров:
- Просмотр логов контейнеров:
Обновление приложения¶
Для обновления OpenLiteSpeed до последней версии из репозитория:
Для обновления образа контейнера Nginx-Certbot: