Обзор развертывания Open vAIR на сервере¶
Предварительные требования¶
Для успешного развертывания приложения необходимо наличие следующего окружения:
- Операционная система: Ubuntu (поддерживается обновление пакетов через
apt). - Права доступа: Требуется доступ с правами
rootили возможность выполнения команд черезsudo. - Сетевые требования:
- Доступ к внешнему интернету для загрузки репозитория и обновлений.
- Открытые порты для внешнего доступа (HTTP/HTTPS).
- Установленные пакеты (устанавливаются автоматически):
ca-certificatesgitpython3-venvtmuxcurlacllsof
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)
Процесс установки приложения¶
Установка выполняется путем клонирования репозитория и запуска скрипта установки:
- Клонирование репозитория
https://github.com/Aerodisk/openvair.gitветкиmainв директорию/opt/aero/openvair. - Генерация файла конфигурации
project_config.toml. - Запуск скрипта
install.shв фоновом режиме черезtmux. - Скрипт установки автоматически настраивает зависимости, базы данных и сервисы.
- После завершения установки создается маркерный файл
.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.
-
Проверка статуса веб-приложения:
-
Перезапуск сервисов виртуализации и приложения:
-
Управление стеком Nginx:
-
Обновление репозитория приложения: Репозиторий обновляется до ветки
mainперед запуском скрипта установки. Для ручного обновления требуется повторное выполнение скриптаinstall.shиз директории/opt/aero/openvair.