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

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

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

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

  • Операционная система: Ubuntu (поддержка пакетов APT).

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

  • Домен: зона hostkey.in.

  • Сетевые порты:

  • Порт 443 для внешнего доступа по HTTPS.

  • Порт 80 для перенаправления на HTTPS и проверки сертификатов.

  • Порт 8000 для внутреннего веб-интерфейса.

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

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

  • Порт 9090 для метрик Prometheus.

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

Доступ к веб-интерфейсу приложения осуществляется по следующему адресу:

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

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

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

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

  • Домашняя директория пользователя: /opt/aero

  • Каталог проекта: /opt/aero/openvair

  • Каталог данных: /opt/aero/data

  • Каталог хранилища: /opt/aero/data/storage

  • Каталог монтирования бэкендов: /opt/aero/data/mnt

  • Каталог репозитория резервных копий: /opt/aero/restic

  • Каталог конфигурации Nginx: /data/nginx/user_conf.d

  • Каталог конфигурации Nginx (основной): /opt/nginx

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

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

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

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

  3. Запуск скрипта install.sh в сессии tmux с ожиданием завершения установки.

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

  5. Установка включает в себя настройку баз данных, очередей сообщений и веб-сервиса.

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

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

  • Пользователю aero предоставляются права на выполнение команд sudo без ввода пароля.

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

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

  • Директория /opt/nginx имеет права доступа 0750.

Базы данных

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

Компонент Хост Порт Пользователь Пароль Имя БД/Очереди
PostgreSQL 0.0.0.0 5432 aero aero openvair
RabbitMQ localhost 5672 guest guest -

База данных PostgreSQL запускается в контейнере Docker с именем postgres.

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

Для работы веб-сервера и получения SSL-сертификатов используется стек Docker Compose:

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

  • Образ Nginx: jonasal/nginx-certbot:latest.

  • Режим сети: host.

  • Объемы:

  • nginx_secrets (внешний) монтируется в /etc/letsencrypt.

  • Локальная директория /data/nginx/user_conf.d монтируется в /etc/nginx/user_conf.d.

Запуск стека выполняется командой docker compose с параметрами pull: always и recreate: auto.

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

Внешний доступ к приложению осуществляется через Nginx, который работает в режиме обратного прокси-сервера:

  • Домен: opvr<ID сервера>.hostkey.in.

  • Протокол: HTTPS (порт 443).

  • Перенаправление HTTP (порт 80) на HTTPS.

  • Поддержка WebSocket для VNC-сессий через путь /vnc-proxy.

  • Поддержка API Prometheus через путь /api/v1/.

  • Максимальный размер тела запроса: 20G.

  • Сертификаты SSL автоматически генерируются и обновляются через Certbot.

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

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

  • /opt/aero: владелец 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.

  • Файл конфигурации project_config.toml: владелец aero, права 0640.

  • Файл конфигурации Nginx: владелец root, права 0644.

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

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

  • Конфигурация приложения: /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.

  • Файл окружения для Nginx: /data/nginx/nginx-certbot.env.

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

Порт Протокол Назначение
443 TCP Внешний доступ к веб-интерфейсу (HTTPS)
80 TCP Перенаправление на HTTPS и ACME-вызовы
8000 TCP Внутренний веб-интерфейс (127.0.0.1)
5432 TCP База данных PostgreSQL
5672 TCP Очередь сообщений RabbitMQ
9090 TCP Метрики Prometheus

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

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

  • Запуск/перезапуск веб-приложения: systemctl restart web-app.service.

  • Запуск/перезапуск сервиса виртуальных машин: systemctl restart vm-domain.service.

  • Запуск/перезапуск слоя сервиса виртуальных машин: systemctl restart vm-service-layer.service.

Для обновления конфигурации Nginx и сертификатов используется Docker Compose:

  • Пересоздание стека Nginx: docker compose -f /opt/nginx/docker-compose.yml up -d.

Проверка статуса веб-сервиса выполняется через эндпоинт https://127.0.0.1:8000/docs/.

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