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

Обзор развертывания 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

  1. Добавление репозитория LiteSpeed:
    wget -O - https://repo.litespeed.sh | bash
    
  2. Установка пакета OpenLiteSpeed:
    apt install openlitespeed
    
  3. Запуск службы OpenLiteSpeed:
    systemctl start lsws
    systemctl enable lsws
    
  4. Настройка учетных данных администратора панели управления через скрипт admpass.sh:
    /usr/local/lsws/admin/misc/admpass.sh
    
    При выполнении скрипта вводятся имя пользователя admin и выбранный пароль.

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

  1. Добавление репозитория NodeSource для версии 20.x:
    curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
    
  2. Установка пакета Node.js:
    apt install nodejs
    
  3. Проверка версии установленного Node.js:
    node -v
    

Установка Docker

Если Docker не установлен, выполняется следующая последовательность действий:

  1. Установка зависимостей:
    apt install ca-certificates curl gnupg lsb-release
    
  2. Создание каталога для ключей GPG:
    mkdir -p /etc/apt/keyrings
    
  3. Добавление ключа GPG Docker:
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    
  4. Добавление репозитория Docker:
    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
    
  5. Установка пакетов Docker:
    apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  6. Запуск служб Docker и containerd:
    systemctl start containerd
    systemctl enable containerd
    systemctl start docker
    systemctl enable docker
    

Контейнеры 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.

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

Запуск контейнеров выполняется командой:

docker compose up -d

Команда должна выполняться из каталога /root/nginx/.

В случае ошибки, связанной с валидацией размера хранилища, может потребоваться смена драйвера хранения Docker на vfs. Для этого:

  1. Остановка служб Docker и containerd:
    systemctl stop docker
    systemctl stop containerd
    
  2. Удаление данных Docker и containerd:
    rm -rf /var/lib/docker
    rm -rf /var/lib/containerd
    
  3. Обновление файла daemon.json с указанием драйвера vfs:
    {
      "storage-driver": "vfs"
    }
    
  4. Перезапуск служб:
    systemctl start containerd
    systemctl start docker
    
  5. Повторный запуск контейнеров:
    docker compose up -d
    

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

Прокси-сервер 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

  • Запуск службы:
    systemctl start lsws
    
  • Остановка службы:
    systemctl stop lsws
    
  • Перезапуск службы:
    systemctl restart lsws
    
  • Включение автозапуска при загрузке системы:
    systemctl enable lsws
    

Управление контейнерами Docker

  • Запуск контейнеров:
    docker compose up -d
    
  • Остановка контейнеров:
    docker compose down
    
  • Перезапуск контейнеров:
    docker compose restart
    
  • Просмотр логов контейнеров:
    docker compose logs -f
    

Обновление приложения

Для обновления OpenLiteSpeed до последней версии из репозитория:

apt update
apt upgrade openlitespeed
systemctl restart lsws

Для обновления образа контейнера Nginx-Certbot:

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