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

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

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

Для успешного развертывания приложения необходимо наличие следующего окружения:

  • Операционная система: Ubuntu (с использованием пакетного менеджера apt).

  • Права доступа: учетная запись root или пользователь с правами sudo для выполнения задач установки и конфигурации.

  • Домен: зона hostkey.in для публикации веб-интерфейса.

  • Свободные порты:

  • 80 и 443 для веб-сервера nginx (HTTP и HTTPS).

  • 8000 для внутреннего веб-приложения Open vAIR.

  • 9090 для Prometheus.

  • 5432 для базы данных PostgreSQL.

  • 5672 для очереди сообщений RabbitMQ.

FQDN итоговой панели

Веб-интерфейс приложения доступен по адресу в формате: opvr.hostkey.in:443

Пример: opvr123.hostkey.in

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

Развертывание создает следующую иерархию директорий и файлов:

  • /opt/aero — домашний каталог пользователя aero.

  • /opt/aero/openvair — репозиторий приложения и скрипты.

  • /opt/aero/restic — репозиторий для бэкапов restic.

  • /opt/aero/data — общая директория для данных.

    • /opt/aero/data/storage — хранилище для файлов виртуальных машин.

    • /opt/aero/data/mnt — точка монтирования для внешних бэкендов хранения.

  • /opt/nginx — каталог конфигурации веб-сервера.

  • /opt/nginx/docker-compose.yml — конфигурация Docker Compose для nginx.

  • /data/nginx — точка монтирования для данных nginx.

  • /data/nginx/user_conf.d — каталог для пользовательских конфигов vhost.

  • /data/nginx/nginx-certbot.env — переменные окружения для Certbot.

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

Приложение развертывается через клонирование репозитория и запуск встроенного установщика:

  1. Клонирование репозитория https://github.com/Aerodisk/openvair.git в ветку main в каталог /opt/aero/openvair.

  2. Генерация конфигурационного файла project_config.toml в директории проекта.

  3. Запуск скрипта установки bash ./install.sh через сессию tmux под пользователем aero.

  4. Установка включает в себя запуск необходимых сервисов и патчинг кода для поддержки прокси VNC и публичного хоста.

  5. После завершения установки создается маркерный файл .installed.

  6. Проверяется состояние сервиса web-app.service и доступность API по внутреннему адресу.

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

  • Создается системный пользователь aero с домашней директорией /opt/aero.

  • Пользователю aero предоставляются права на безпарольный sudo через конфигурационный файл в /etc/sudoers.d/aero.

  • Для доступа libvirt (UID 64055) к директории данных /opt/aero/data настраиваются списки управления доступом (ACL) с правами rwx рекурсивно и по умолчанию.

  • Директория для бэкапов restic (/opt/aero/restic) создается с правами 0700 (только владелец).

  • Веб-сервер nginx работает в режиме host network, но файлы сертификатов изолированы в Docker volume nginx_secrets.

Базы данных

  • Приложение использует базу данных PostgreSQL.

  • Контейнер базы данных имеет имя postgres.

  • Подключение настроено следующим образом:

  • Хост: 0.0.0.0

  • Порт: 5432

  • База данных: openvair

  • Пользователь: aero

  • Пароль: aero

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

Для обеспечения работы веб-интерфейса и сертификатов безопасности используется стек nginx-certbot:

  • Файл конфигурации: /opt/nginx/docker-compose.yml.

  • Используется образ jonasal/nginx-certbot:latest.

  • Запуск выполняется через команду docker compose up -d (автоматически в рамках скрипта установки).

  • Сервисы автоматически обновляются с параметром pull: always и пересоздаются при необходимости.

  • Монтируется том nginx_secrets для хранения сертификатов Let's Encrypt по пути /etc/letsencrypt.

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

В качестве внешнего прокси-сервера используется nginx с поддержкой Certbot:

  • Домен: opvr.hostkey.in.

  • SSL/TLS: Сертификаты автоматически запрашиваются и обновляются через Certbot. Поддерживаются протоколы TLSv1.2 и TLSv1.3.

  • Маршрутизация:

  • Корневой путь / пересылается на https://127.0.0.1:8000 (веб-приложение).

  • Путь /api/v1/ пересылается на https://127.0.0.1:9090 (Prometheus).

  • Путь /vnc-proxy/<port>/<path> пересылается на соответствующие порты VNC для поддержки WebSocket.

  • Настройки буферизации: Для WebSocket и потоковых соединений буферизация отключена, установлены таймауты чтения и отправки на 3600 секунд.

  • Защита: Настроены заголовки X-Frame-Options и X-Content-Type-Options. Максимальный размер тела клиента (client_max_body_size) установлен в 20G.

Настройки прав

Права на файлы и директории устанавливаются следующим образом:

  • /opt/nginx: Владелец root:root, права 0750.

  • /data/nginx/user_conf.d: Владелец root:root, права 0755.

  • /opt/aero/openvair/project_config.toml: Владелец aero:aero, права 0640.

  • /opt/aero/openvair/install.log: Владелец aero:aero, права 0664.

  • Конфигурация nginx (/data/nginx/user_conf.d/*.conf): Владелец root:root, права 0644.

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

Ключевые файлы конфигурации:

  • /opt/aero/openvair/project_config.toml — основной конфигурационный файл приложения.

  • /data/nginx/user_conf.d/opvr<ID>.hostkey.in.conf — конфигурация виртуального хоста nginx.

  • /opt/nginx/docker-compose.yml — определение контейнеров прокси-сервера.

  • /etc/needrestart/conf.d/zzz-openvair-auto.conf — настройка автоперезагрузки сервисов.

  • /etc/sudoers.d/aero — права sudo для пользователя приложения.

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

  • 443: Публичный доступ к веб-интерфейсу через nginx (HTTPS).

  • 80: HTTP-редирект на HTTPS (обработчик Certbot).

  • 8000: Внутренний порт веб-приложения Open vAIR (доступен только на 127.0.0.1).

  • 9090: Внутренний порт Prometheus (доступен через прокси по пути /api/v1/).

  • 5432: Порт базы данных PostgreSQL.

  • 5672: Порт очереди RabbitMQ.

  • Динамические порты в диапазоне 6000-6999: Используются для проксирования сессий VNC.

Запуск, остановка и обновление

Управление основными сервисами осуществляется через systemd:

  • Сервис веб-приложения: web-app.service.

  • Сервис виртуальных машин: vm-domain.service, vm-service-layer.service.

  • Контейнеры nginx: Управляются через docker compose в директории /opt/nginx.

Команды для управления:

  • Проверка статуса веб-приложения:

    systemctl status web-app.service
    

  • Перезапуск веб-приложения:

    systemctl restart web-app.service
    

  • Перезапуск контейнеров прокси-сервера:

    cd /opt/nginx && docker compose down && docker compose up -d
    

  • Проверка логов установки:

    cat /opt/aero/openvair/install.log
    
    tail -20 /opt/aero/openvair/install.log
    

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