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

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

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

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

  • Операционная система: Ubuntu (поддерживается обновление пакетов через apt).
  • Права доступа: Требуется доступ с правами root или возможность выполнения команд через sudo.
  • Сетевые требования:
  • Доступ к внешнему интернету для загрузки репозитория и обновлений.
  • Открытые порты для внешнего доступа (HTTP/HTTPS).
  • Установленные пакеты (устанавливаются автоматически):
  • ca-certificates
  • git
  • python3-venv
  • tmux
  • curl
  • acl
  • lsof

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

Панель управления доступна по следующему адресу:

opvr<ID сервера>.hostkey.in:443

Где <ID сервера> заменяется на уникальный идентификатор сервера. Доступ осуществляется только по протоколу HTTPS.

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

Все компоненты приложения размещаются в следующих директориях:

  • Домашняя директория пользователя приложения: /opt/aero
  • Каталог проекта: /opt/aero/openvair
  • Каталог данных: /opt/aero/data
  • Каталог хранилища: /opt/aero/data/storage
  • Каталог монтирования бэкендов: /opt/aero/data/mnt
  • Репозиторий резервных копий (Restic): /opt/aero/restic
  • Конфигурация Nginx:
  • Корневая директория: /opt/nginx
  • Пользовательские конфиги: /data/nginx/user_conf.d
  • Сертификаты SSL: /etc/letsencrypt/live (внутри Docker-объема nginx_secrets)

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

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

  1. Клонирование репозитория https://github.com/Aerodisk/openvair.git ветки main в директорию /opt/aero/openvair.
  2. Генерация файла конфигурации project_config.toml.
  3. Запуск скрипта install.sh в фоновом режиме через tmux.
  4. Скрипт установки автоматически настраивает зависимости, базы данных и сервисы.
  5. После завершения установки создается маркерный файл .installed.

Версия приложения соответствует ветке main репозитория разработчика.

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

  • Пользователь приложения: Создается пользователь aero с домашней директорией /opt/aero.
  • Sudo-доступ: Пользователю aero предоставлен доступ к sudo без ввода пароля.
  • ACL для виртуализации: На директорию /opt/aero/data и все вложенные файлы установлены права доступа для пользователя libvirt-qemu (UID 64055) с правами rwx (чтение, запись, выполнение).
  • Брандмауэр: Настройка портов и правил фильтрации осуществляется через конфигурацию прокси-сервера Nginx.

Базы данных

Приложение использует следующие базы данных и очереди сообщений:

  • PostgreSQL:
  • Хост: 0.0.0.0
  • Порт: 5432
  • Имя базы данных: openvair
  • Пользователь: aero
  • Пароль: aero
  • Контейнер: postgres
  • RabbitMQ:
  • Хост: localhost
  • Порт: 5672
  • Пользователь: guest
  • Пароль: guest

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

Приложение использует Docker для запуска веб-сервера, базы данных и прокси.

  • Стек Nginx и Certbot:
  • Запускается через docker-compose из директории /opt/nginx.
  • Использует образ jonasal/nginx-certbot:latest.
  • Режим сети: host.
  • Объемы:

    • nginx_secrets (для сертификатов Let's Encrypt).
    • /data/nginx/user_conf.d (для пользовательских конфигов).
  • Сервисы приложения:

  • Запускаются как системные сервисы (systemd), управляемые скриптом установки.
  • Основные сервисы: web-app.service, vm-domain.service, vm-service-layer.service.

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

Внешний трафик обрабатывается через Nginx, который выполняет функции обратного прокси и управления SSL-сертификатами.

  • Домен: opvr<ID сервера>.hostkey.in
  • SSL: Автоматическое получение и обновление сертификатов через Certbot.
  • Порт 80: Перенаправляет весь трафик на HTTPS (301).
  • Порт 443: Обслуживает HTTPS-запросы.
  • Маршрутизация:
  • Корневой путь / пересылается на https://127.0.0.1:8000.
  • API Prometheus пересылается на https://127.0.0.1:9090/api/v1/.
  • WebSocket-соединения для VNC пересылаются динамически на порты 60000-69999 через путь /vnc-proxy/<порт>/....
  • Настройки безопасности:
  • Включены заголовки X-Frame-Options и X-Content-Type-Options.
  • Максимальный размер тела запроса: 20G.
  • Таймауты чтения и отправки: 3600s.

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

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

Путь Владелец Группа Режим
/opt/aero aero aero 0755
/opt/aero/openvair aero aero 0755
/opt/aero/data aero aero 0755
/opt/aero/data/storage aero aero 0755
/opt/aero/data/mnt aero aero 0755
/opt/aero/restic aero aero 0700
/opt/nginx root root 0750
/data/nginx/user_conf.d root root 0755
/etc/nginx/user_conf.d/opvr<ID>.hostkey.in.conf root root 0644

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

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

Основные конфигурационные файлы находятся в следующих местах:

  • Конфигурация приложения: /opt/aero/openvair/project_config.toml
  • Конфигурация Nginx: /data/nginx/user_conf.d/opvr<ID сервера>.hostkey.in.conf
  • Файл Docker Compose: /opt/nginx/docker-compose.yml
  • Логи установки: /opt/aero/openvair/install.log
  • Данные хранилища: /opt/aero/data/storage
  • Репозиторий бэкапов: /opt/aero/restic

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

Порт Протокол Описание
80 TCP HTTP (перенаправление на HTTPS)
443 TCP HTTPS (доступ к панели управления)
8000 TCP Внутренний порт веб-приложения (доступен только локально)
9090 TCP Внутренний порт Prometheus (доступен только локально)
5432 TCP Внутренний порт PostgreSQL
5672 TCP Внутренний порт RabbitMQ
60000-69999 TCP Динамические порты для VNC-сессий (доступ через прокси)

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

Управление сервисами осуществляется через systemd и docker-compose.

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

    systemctl status web-app.service
    

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

    systemctl restart vm-domain.service
    systemctl restart vm-service-layer.service
    systemctl restart web-app.service
    

  • Управление стеком Nginx:

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

  • Обновление репозитория приложения: Репозиторий обновляется до ветки main перед запуском скрипта установки. Для ручного обновления требуется повторное выполнение скрипта install.sh из директории /opt/aero/openvair.

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