Обзор развертывания Open vAIR на сервере¶
Предварительные требования¶
Для успешного развертывания приложения необходимо наличие следующего окружения:
-
Операционная система: Ubuntu (с использованием пакетного менеджера
apt). -
Права доступа: учетная запись
rootили пользователь с правамиsudoдля выполнения задач установки и конфигурации. -
Домен: зона
hostkey.inдля публикации веб-интерфейса. -
Свободные порты:
-
80и443для веб-сервераnginx(HTTP и HTTPS). -
8000для внутреннего веб-приложенияOpen vAIR. -
9090дляPrometheus. -
5432для базы данныхPostgreSQL. -
5672для очереди сообщенийRabbitMQ.
FQDN итоговой панели¶
Веб-интерфейс приложения доступен по адресу в формате: opvrhostkey.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.
Процесс установки приложения¶
Приложение развертывается через клонирование репозитория и запуск встроенного установщика:
-
Клонирование репозитория
https://github.com/Aerodisk/openvair.gitв веткуmainв каталог/opt/aero/openvair. -
Генерация конфигурационного файла
project_config.tomlв директории проекта. -
Запуск скрипта установки
bash ./install.shчерез сессиюtmuxпод пользователемaero. -
Установка включает в себя запуск необходимых сервисов и патчинг кода для поддержки прокси
VNCи публичного хоста. -
После завершения установки создается маркерный файл
.installed. -
Проверяется состояние сервиса
web-app.serviceи доступность API по внутреннему адресу.
Права доступа и безопасность¶
-
Создается системный пользователь
aeroс домашней директорией/opt/aero. -
Пользователю
aeroпредоставляются права на безпарольныйsudoчерез конфигурационный файл в/etc/sudoers.d/aero. -
Для доступа
libvirt(UID64055) к директории данных/opt/aero/dataнастраиваются списки управления доступом (ACL) с правамиrwxрекурсивно и по умолчанию. -
Директория для бэкапов
restic(/opt/aero/restic) создается с правами0700(только владелец). -
Веб-сервер
nginxработает в режимеhost network, но файлы сертификатов изолированы в Docker volumenginx_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.
Команды для управления:
-
Проверка статуса веб-приложения:
-
Перезапуск веб-приложения:
-
Перезапуск контейнеров прокси-сервера:
-
Проверка логов установки: