Инфраструктура
Avioniq — карта инфраструктуры
Сводная таблица сервисов, директорий, CI/CD и настроек безопасности.
Компоненты стека
Высокоуровневый обзор всех основных сервисов и точек доступа.
| Компонент | Технологии | Хост / порт | URL / маршрут | Описание |
|---|---|---|---|---|
| Frontend | Next.js 14, React 18 | 127.0.0.1:3000 | https://avioniq.ru | Пользовательский интерфейс (SSR + статические страницы). |
| Backend API | FastAPI, Uvicorn, Python 3.12 | 127.0.0.1:8000 | /api, /api/health, /api/docs | REST API, авторизация, работа с БД, интеграции. |
| Nginx | nginx 1.24 (Ubuntu) | :80, :443 | https://avioniq.ru, https://www.avioniq.ru | SSL (Let's Encrypt), редирект HTTP→HTTPS, проксирование / и /api. |
| База данных | PostgreSQL (управляемый сервис) | DB_ENDPOINT (env) | — | Данные приложения, миграции через Alembic. |
| CI/CD | GitHub Actions + self-hosted runner | /srv/actions-runner | .github/workflows/deploy.yml | Сборка backend+frontend, деплой, рестарт сервисов. |
| VPN + SSH | OpenVPN, WireGuard, SSH | SSH порт 22 (только 10.8.0.0/24, 10.10.10.0/24) | — | Доступ к серверу только через VPN-подсети. |
Артефакты и размеры
Снимок текущих размеров директорий (команда du -sh).
| Сервис | Путь / ресурс | Размер | Комментарий |
|---|---|---|---|
| Backend (FastAPI) | /srv/avioniq/backend | ≈86 MB | Код API, виртуальное окружение Python 3.12 и зависимости. |
| Frontend (Next.js) | /srv/avioniq/frontend | ≈512 MB | Сборка Next.js, node_modules и serverless артефакты. |
| Deploy configs | /srv/avioniq/deploy | ≈56 KB | Шаблоны systemd и Nginx, скрипты SSL. |
| Self-hosted runner | /srv/actions-runner | ≈906 MB | GitHub Actions runner + кеш скачанных зависимостей. |
| Репозиторий Avioniq | /srv/avioniq | ≈599 MB | Git-репозиторий, фронтенд/бэкенд сборки и скрипты. |
| PostgreSQL | Внешний управляемый кластер | — (мониторится отдельно) | Данные БД находятся в отдельном сервисе, объём отслеживается на стороне DBA. |
Директории и systemd-сервисы
Соответствие рабочих каталогов и сервисов.
| Сервис | systemd unit | Каталог | Команда | Комментарий |
|---|---|---|---|---|
| Backend | avioniq-api.service | /srv/avioniq/backend | uvicorn app.main:app --host 127.0.0.1 --port 8000 | Работа в venv, настройки через .env/pydantic-settings. |
| Frontend | avioniq-frontend.service | /srv/avioniq/frontend | npm start (next start) | Production-сборка Next.js отдаётся через Nginx. |
| Nginx | nginx.service | /etc/nginx, /srv/avioniq/deploy/nginx | nginx -g "daemon on; master_process on;" | Конфиг avioniq копируется из deploy/nginx. |
CI/CD Workflow
Шаги .github/workflows/deploy.yml.
| Шаг | Среда | Действия | Комментарий |
|---|---|---|---|
| backend | ubuntu-latest | Python 3.12, venv, pip install -r requirements.txt | Проверка backend зависимостей и сборки. |
| frontend | ubuntu-latest | Node 20, npm ci, npm run lint, npm run build | Гарантия корректной сборки фронтенда. |
| deploy | self-hosted (avioniq-server) | git pull, pip/npm install, сборка, рестарт сервисов | Выполняется на сервере через runner; доступен через VPN. |
Диск и квоты
Данные df -h / и du -sh /srv/avioniq.
| Ресурс | Размер | Комментарий |
|---|---|---|
| Диск /dev/sda1 | 79 GB | Использовано 29 GB (36%), свободно ~51 GB (df -h /). |
| Проект Avioniq | ≈599 MB | /srv/avioniq: исходники, venv и сборки фронтенда. |
Безопасность и сеть
Настройки доступа и SSL.
| Область | Настройка | Комментарий |
|---|---|---|
| HTTP/HTTPS | UFW: 80/tcp и 443/tcp открыты | Сайт доступен по HTTPS, HTTP редиректится. |
| SSH | UFW: 22/tcp только из VPN подсетей | Доступ к серверу только через OpenVPN/WireGuard. |
| SSL | Let's Encrypt (certbot) | Сертификаты в /etc/letsencrypt/live/avioniq.ru. |
| Secrets | .env backend, GitHub Secrets | Настройки БД, ключи JWT, SSH — вне репозитория. |