Обзор развертывания 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.
Процесс установки приложения¶
Развертывание выполняется в несколько этапов:
-
Подготовка системы:
-
Остановка фоновых служб обновления пакетов (
apt-daily,unattended-upgrades). -
Удаление устаревших репозиториев Docker и старых ключей безопасности из системных хранилищ.
-
Установка необходимых системных пакетов:
ca-certificatesиcurl. -
Установка среды выполнения:
-
Установка Docker (через управляемый процесс установки).
-
Развертывание стека приложения:
-
Создание директории
/root/omniroute. -
Генерация уникальных секретных ключей для JWT, API и шифрования хранилища.
-
Запись конфигурационного файла
.envс параметрами безопасности. -
Загрузка (pull) актуального образа
diegosouzapw/omniroute:latest. -
Запуск контейнеров через Docker Compose.
-
Настройка проксирования и SSL:
-
Создание директорий для Nginx.
-
Настройка автоматического обновления сертификатов Certbot (интервал проверки — 8 дней).
-
Настройка конфигурации Nginx с поддержкой перенаправления с HTTP на HTTPS и проксированием трафика на локальный порт приложения.
-
Запуск контейнера
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:
Расположение конфигурационных файлов и данных¶
-
Конфигурация окружения:
/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