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

Обзор развертывания OmniRoute на сервере

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

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

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

  • Права доступа: Права суперпользователя (root) для установки системных пакетов и управления Docker.

  • Доменное имя: Необходимо наличие домена в зоне hostkey.in.

  • Сетевые порты:

  • 80/tcp — HTTP (для проверки Certbot и перенаправления).

  • 443/tcp — HTTPS (основной доступ к панели управления).

FDQN итоговой панели на домене hostkey.in

Доменное имя формируется автоматически на основе идентификатора сервера в системе управления.

Параметр Значение
Префикс omniroute
Домен hostkey.in
Полный шаблон omniroute{Server_ID_from_Invapi}.hostkey.in

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

После установки приложение и вспомогательные сервисы используют следующие директории:

  • /root/omniroute — рабочая директория приложения, содержит конфигурационные файлы окружения (.env) и файл compose.yml.

  • /root/nginx — конфигурация прокси-сервера Nginx и его управляющий файл compose.yml.

  • /data/nginx — пользовательские конфигурации Nginx.

  • /data/nginx/user_conf.d — файлы настроек виртуальных хостов (включая SSL).

  • /data/nginx/letsencrypt — данные для проверки владения доменом (ACME challenge).

  • nginx_secrets — именованный том Docker для хранения сертификатов SSL.

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

Развертывание выполняется в несколько этапов:

  1. Подготовка системы:

  2. Остановка фоновых служб обновления пакетов (apt-daily, unattended-upgrades).

  3. Удаление устаревших репозиториев Docker и старых ключей безопасности из системных хранилищ.

  4. Установка необходимых системных пакетов: ca-certificates и curl.

  5. Установка среды выполнения:

  6. Установка Docker (через управляемый процесс установки).

  7. Развертывание стека приложения:

  8. Создание директории /root/omniroute.

  9. Генерация уникальных секретных ключей для JWT, API и шифрования хранилища.

  10. Запись конфигурационного файла .env с параметрами безопасности.

  11. Загрузка (pull) актуального образа diegosouzapw/omniroute:latest.

  12. Запуск контейнеров через Docker Compose.

  13. Настройка проксирования и SSL:

  14. Создание директорий для Nginx.

  15. Настройка автоматического обновления сертификатов Certbot (интервал проверки — 8 дней).

  16. Настройка конфигурации Nginx с поддержкой перенаправления с HTTP на HTTPS и проксированием трафика на локальный порт приложения.

  17. Запуск контейнера nginx-certbot для получения SSL-сертификатов.

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

  • Ограничение портов: Основные порты приложения (20128, 20129, 20132) привязаны к интерфейсу 127.0.0.1 и доступны только через прокси-сервер Nginx, что исключает прямой доступ извне.

  • Брандмауэр (UFW): В системе открываются порты 80/tcp и 443/tcp.

  • Безопасность данных: Файл .env имеет права доступа 0600 (чтение/запись только для владельца). Директория приложения ограничена правами 0750.

Базы данных

В качестве хранилища сессий и временных данных используется Redis.

  • Образ: redis:8-alpine.

  • Метод подключения: Приложение подключается к Redis по адресу redis://redis:6379 внутри сети Docker.

  • Хранение: Данные сохраняются в именованный том redis-data.

Контейнеры Docker и их запуск

Основной стек приложения (OmniRoute)

Параметр Значение
Имя образа diegosouzapw/omniroute:latest
Имя контейнера omniroute
Порты (локально) 20128, 20129
Тома (volumes) omniroute-data:/app/data
Переменные окружения NODE_ENV, REDIS_URL, OMNIROUTE_MEMORY_MB и др.
Политика перезапуска unless-stopped

Контейнер Redis

Параметр Значение
Имя образа redis:8-alpine
Имя контейнера omniroute-redis
Команда redis-server --save 60 1 --loglevel warning
Тома (volumes) redis-data:/data
Политика перезапуска unless-stopped

Контейнер Nginx (Proxy + Certbot)

Параметр Значение
Имя образа jonasal/nginx-certbot:6.2.0-nginx1.31.0
Сетевой режим host
Тома (volumes) nginx_secrets:/etc/letsencrypt, /data/nginx/user_conf.d:/etc/nginx/user_conf.d, /data/nginx/letsencrypt:/var/www/letsencrypt

Инструкция по обновлению приложения

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

docker compose pull && docker compose up -d

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

  • Конфигурация окружения: /root/omniroute/.env

  • Конфигурация Nginx (пользовательская): /data/nginx/user_conf.d/{domain}.conf

  • Данные приложения: Именованный том omniroute-data

  • Данные Redis: Именованный том redis-data

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

Порт Назначение Доступность
80 HTTP (перенаправление) Публично
443 HTTPS (Dashboard / API) Публично
20128 Dashboard / OpenAI API Только локально (через Nginx)
20129 Secondary API Listener Только локально (через Nginx)
20132 Live Updates (WebSockets) Только локально (через Nginx)

Запуск, остановка приложения

Управление основным приложением осуществляется через Docker Compose в директории /root/omniroute:

  • Запуск: docker compose up -d

  • Остановка: docker compose down

  • Просмотр статуса контейнеров: docker compose ps

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