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

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

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

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

  1. Подготовка системы: Очистка старых репозиториев Docker и установка необходимых системных пакетов (ca-certificates, curl).

  2. Установка среды выполнения: Установка Docker и инструментов управления контейнерами.

  3. Настройка окружения приложения:

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

  5. Генерация секретных ключей (JWT_SECRET, API_KEY_SECRET, STORAGE_ENCRYPTION_KEY).

  6. Создание файла .env с параметрами безопасности и доступа.

  7. Развертывание контейнеров: Запуск стека Docker Compose для основного приложения и базы данных Redis.

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

  9. Настройка Nginx через Certbot для получения SSL-сертификатов.

  10. Создание конфигурации реверс-прокси, обеспечивающей перенаправление трафика с 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

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

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

  1. Перейти в рабочую директорию приложения:

    cd /root/omniroute
    

  2. Обновить образ контейнера и перезапустить сервис:

    docker compose pull && docker compose up -d
    

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