Обзор развертывания OmniRoute на сервере¶
Предварительные требования¶
Для корректной работы приложения требуются следующие условия:
-
Операционная система: Ubuntu.
-
Права доступа: Права суперпользователя (root) для установки системных пакетов и управления Docker.
-
Доменное имя: Настроенный DNS-запись, указывающая на IP-адрес сервера.
-
Порты: Должны быть открыты порты 80 (HTTP) и 443 (HTTPS).
FDQN итоговой панели на домене hostkey.in¶
Для доступа к интерфейсу управления используется следующий шаблон доменного имени:
| Параметр | Значение |
|---|---|
| Префикс | omniroute |
| Домен | hostkey.in |
| Полный шаблон | omniroute{Server_ID}.hostkey.in |
Структура файлов и каталогов¶
Основные данные и конфигурации распределены по следующим путям:
-
/root/omniroute— рабочая директория приложения, содержащая.envфайл иcompose.yml. -
/root/nginx— конфигурация прокси-сервера Nginx. -
/data/nginx— пользовательские конфигурации Nginx. -
/data/nginx/user_conf.d— файлы настроек виртуальных хостов. -
/data/nginx/letsencrypt— данные для проверки SSL-сертификатов. -
nginx_secrets— внешний том Docker для хранения сертификатов Certbot.
Процесс установки приложения¶
Развертывание выполняется в несколько этапов:
-
Подготовка системы: Очистка старых репозиториев Docker и установка необходимых системных пакетов (
ca-certificates,curl). -
Установка среды выполнения: Установка Docker и инструментов управления контейнерами.
-
Настройка окружения приложения:
-
Создание директории
/root/omniroute. -
Генерация секретных ключей (JWT_SECRET, API_KEY_SECRET, STORAGE_ENCRYPTION_KEY).
-
Создание файла
.envс параметрами безопасности и доступа. -
Развертывание контейнеров: Запуск стека Docker Compose для основного приложения и базы данных Redis.
-
Настройка проксирования и SSL:
-
Настройка Nginx через Certbot для получения SSL-сертификатов.
-
Создание конфигурации реверс-прокси, обеспечивающей перенаправление трафика с HTTPS на внутренний порт приложения.
Права доступа и безопасность¶
-
Пользователи: Все системные операции выполняются от имени
root. -
Ограничение прав: Файл
.envимеет права доступа0600(чтение/запись только владельцем). Директория приложения ограничена правами0750. -
Брандмауэр: Если в системе установлен
ufw, автоматически открываются порты 80 и 443. -
Безопасность сети: Основные порты приложения (20128, 20129) привязаны к интерфейсу
127.0.0.1и недоступны из внешней сети напрямую, доступ к ним осуществляется только через Nginx.
Базы данных¶
В качестве хранилища для сессий и временных данных используется Redis:
-
Метод подключения: Через внутреннюю сеть Docker по адресу
redis://redis:6379. -
Хранение данных: Данные сохраняются в именованный том
redis-dataдля обеспечения сохранности при перезагрузке контейнера.
Контейнеры Docker и их запуск¶
Основной стек приложения (OmniRoute)¶
Приложение работает в связке с Redis через Docker Compose.
Контейнер: omniroute-redis
-
Образ:
docker.io/library/redis:8-alpine -
Политика перезапуска:
unless-stopped -
Тома:
redis-data:/data -
Проверка состояния (Healthcheck): Выполняется команда
redis-cli ping.
Контейнер: omniroute
-
Образ:
diegosouzapw/omniroute:latest -
Политика перезапуска:
unless-stopped -
Зависимости: Запуск после успешного старта контейнера Redis.
-
Порты (внутренние): 20128 (Dashboard/API), 20129 (Secondary API).
-
Тома:
omniroute-data:/app/data -
Ограничения памяти: Лимит устанавливается динамически на основе доступной RAM сервера (не более 75% от общего объема системы).
Прокси-сервер¶
Контейнер: nginx
-
Образ:
jonasal/nginx-certbot:6.2.0-nginx1.31.0 -
Политика перезапуска:
unless-stopped -
Режим сети:
host(для прямой работы с портами 80 и 443). -
Тома:
-
nginx_secrets:/etc/letsencrypt -
/data/nginx/user_conf.d:/etc/nginx/user_conf.d -
/data/nginx/letsencrypt:/var/www/letsencrypt
Инструкция по обновлению приложения¶
Для обновления основного приложения необходимо выполнить следующие действия:
-
Перейти в рабочую директорию приложения:
-
Обновить образ контейнера и перезапустить сервис: