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

Обзор развертывания OpenLiteSpeed Node.js на сервере

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

Для развертывания OpenLiteSpeed с поддержкой Node.js требуется Linux-сервер, работающий на базе дистрибутива Debian (например, Ubuntu). Перед началом установки необходимо выполнить следующие предварительные требования:

  • Операционная система: Debian или Ubuntu.

  • Права доступа: Для установки системных пакетов, управления службами и настройки Docker требуется доступ root или пользователь с правами sudo.

  • Домен: Для выдачи SSL-сертификатов через Certbot требуется действительное доменное имя. Система настроена на использование зоны hostkey.in.

  • Порты:

  • Порт 80 (HTTP) для первоначального доступа и проверки вызова Let's Encrypt.

  • Порт 443 (HTTPS) для безопасного доступа к обратному прокси-серверу Nginx.

  • Порт 7080 (Внутренний) для интерфейса OpenLiteSpeed WebAdmin.

FQDN конечной панели

Панель управления приложением доступна по полному доменному имени (FQDN), сформированному с использованием идентификатора сервера. Формат следующий:

openlitespeed-nodejs<Server ID>.hostkey.in:443

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

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

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

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

  • /root/nginx: Содержит файл Docker Compose (compose.yml) для стека Nginx и Certbot.

  • /data/nginx/user_conf.d: Хранит индивидуальные конфигурации виртуальных хостов Nginx.

  • /data/nginx/letsencrypt/.well-known/acme-challenge: Каталог для проверки HTTP-вызова Let's Encrypt.

  • /data/nginx/nginx-certbot.env: Переменные окружения для контейнера Nginx/Certbot, включая интервалы обновления.

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

  • /usr/local/lsws: Каталог установки по умолчанию для бинарных файлов и конфигураций OpenLiteSpeed.

  • /usr/local/lsws/admin/misc/admpass.sh: Скрипт, используемый для установки учетных данных WebAdmin.

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

  • /etc/docker/daemon.json: Файл конфигурации демона Docker, включая зеркала реестра и драйверы хранения.

  • /var/lib/docker: Каталог данных Docker по умолчанию.

  • /var/lib/containerd: Каталог данных Containerd.

  • SSL-сертификаты:

  • /etc/letsencrypt: Управляется томами Docker (nginx_secrets), содержит выданные SSL-сертификаты.

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

Процесс установки включает настройку OpenLiteSpeed, Node.js и обратного прокси-сервера Nginx на базе Docker с интеграцией Certbot.

  1. Установка предварительных требований:

  2. Установите curl, wget, gnupg, ca-certificates, lsb-release и python3-pexpect.

  3. Установка OpenLiteSpeed:

  4. Добавьте репозиторий LiteSpeed, используя официальный скрипт настройки.

  5. Установите пакет openlitespeed.

  6. Запустите и включите службу lsws.

  7. Установка Node.js:

  8. Добавьте репозиторий NodeSource для Node.js 20.x.

  9. Установите пакет nodejs.

  10. Настройка OpenLiteSpeed WebAdmin:

  11. Установите имя пользователя WebAdmin как admin.

  12. Установите пароль, используя переменную password_litespeed_web.

  13. Установка Docker:

  14. Добавьте GPG-ключ Docker и репозиторий.

  15. Установите docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin и docker-compose-plugin.

  16. Убедитесь, что службы containerd и docker запущены и включены.

  17. Развертывание Nginx и Certbot:

  18. Создайте необходимые каталоги для конфигурации Nginx и вызовов Let's Encrypt.

  19. Сгенерируйте файл Docker Compose в /root/nginx/compose.yml.

  20. Разверните конфигурацию виртуального хоста Nginx для OpenLiteSpeed WebAdmin.

  21. Запустите стек Nginx и Certbot с помощью docker compose up -d.

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

Меры безопасности реализуются через правила межсетевого экрана, права пользователей и SSL-шифрование.

  • Межсетевой экран: Убедитесь, что порты 80 и 443 открыты для внешнего доступа. Порт 7080 доступен внутренне через прокси Nginx.

  • SSL-шифрование: Весь внешний трафик перенаправляется с HTTP (порт 80) на HTTPS (порт 443). SSL-сертификаты управляются автоматически через Certbot.

  • Доступ к WebAdmin: Интерфейс OpenLiteSpeed WebAdmin защищен именем пользователя и паролем. Доступ осуществляется через прокси Nginx, что гарантирует, что прямой доступ к порту 7080 не доступен извне.

Базы данных

Это развертывание не включает компонент базы данных. Стек приложения состоит из OpenLiteSpeed, Node.js и Nginx. Если требуется база данных, ее необходимо установить и настроить отдельно.

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

Обратный прокси-сервер Nginx и Certbot развертываются с помощью Docker Compose. Конфигурация определена в /root/nginx/compose.yml.

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

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

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

  • Тома:

  • nginx_secrets: Внешний том для сертификатов Let's Encrypt.

  • /data/nginx/user_conf.d: Подключен к /etc/nginx/user_conf.d для конфигураций виртуальных хостов.

  • /data/nginx/letsencrypt: Подключен к /var/www/letsencrypt для вызовов ACME.

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

cd /root/nginx
docker compose up -d
docker compose down

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

Nginx действует как обратный прокси для интерфейса OpenLiteSpeed WebAdmin. Конфигурация хранится в /data/nginx/user_conf.d/openlitespeed-nodejs<Server ID>.hostkey.in.conf.

  • Перенаправление HTTP на HTTPS: Весь HTTP-трафик на порту 80 перенаправляется на HTTPS на порту 443.

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

  • Сертификат: /etc/letsencrypt/live/<FQDN>/fullchain.pem

  • Закрытый ключ: /etc/letsencrypt/live/<FQDN>/privkey.pem

  • Доверенный сертификат: /etc/letsencrypt/live/<FQDN>/chain.pem

  • Параметры DH: /etc/letsencrypt/dhparams/dhparam.pem

  • Настройки прокси:

  • Бэкенд: https://127.0.0.1:7080

  • Проверка SSL: Отключена (proxy_ssl_verify off)

  • Заголовки: Host, X-Forwarded-Host, X-Forwarded-Server, X-Real-IP, X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Port передаются на бэкенд.

  • Поддержка WebSocket: Включена через заголовки Upgrade и Connection.

Настройки разрешений

Разрешения на файлы и каталоги установлены для обеспечения безопасного доступа и правильной функциональности.

  • Каталоги Nginx:

  • /root/nginx: Владелец root:root с режимом 0755.

  • /data/nginx/letsencrypt/.well-known/acme-challenge: Владелец root:root с режимом 0755.

  • /data/nginx/nginx-certbot.env: Владелец root:root с режимом 0644.

  • Файлы конфигурации:

  • /root/nginx/compose.yml: Владелец root:root с режимом 0644.

  • /data/nginx/user_conf.d/*.conf: Владелец root:root с режимом 0644.

  • /etc/docker/daemon.json: Владелец root:root с режимом 0644.

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

  • OpenLiteSpeed:

  • Конфигурация: /usr/local/lsws/conf/

  • Логи: /usr/local/lsws/logs/

  • Nginx:

  • Docker Compose: /root/nginx/compose.yml

  • Виртуальные хосты: /data/nginx/user_conf.d/

  • Переменные окружения: /data/nginx/nginx-certbot.env

  • Docker:

  • Конфигурация демона: /etc/docker/daemon.json

  • Данные: /var/lib/docker/ и /var/lib/containerd/

  • SSL-сертификаты:

  • Управляются томом Docker nginx_secrets, отображаются на /etc/letsencrypt внутри контейнера.

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

  • Порт 80: Доступ по HTTP, перенаправляется на HTTPS.

  • Порт 443: Доступ по HTTPS к обратному прокси-серверу Nginx.

  • Порт 7080: Внутренний порт для OpenLiteSpeed WebAdmin, доступен только через прокси Nginx.

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

Служба OpenLiteSpeed

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

systemctl start lsws
systemctl stop lsws
systemctl restart lsws
systemctl enable lsws

Стек Docker Nginx

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

cd /root/nginx
docker compose up -d
docker compose down
docker compose pull
docker compose up -d

Обновление Node.js

Для обновления Node.js используйте менеджер пакетов:

apt update
apt upgrade nodejs

Обновление OpenLiteSpeed

Для обновления OpenLiteSpeed используйте менеджер пакетов:

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