Files
wiki/tasks/flightradar24/docs/VM_SETUP.md
2026-04-19 00:20:01 +03:00

142 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Инструкция: создание VM для RTL-SDR ingest-контура
## 1. Цель
Поднять на PVE отдельную VM, в которую пробрасывается RTL-SDR по USB, после чего внутри VM разворачивается Docker Compose стек с PostgreSQL/PostGIS, capture, preprocess и API.
## 2. Рекомендуемый профиль VM
Ограничения проекта:
- CPU: до 6 vCPU
- RAM: 1012 GB
- SSD: 80100 GB
### Рекомендация по стартовому размеру
Если нет явного дефицита ресурсов на хосте:
- 4 vCPU
- 10 GB RAM
- 80 GB SSD
Если хост позволяет и нужен запас:
- 6 vCPU
- 12 GB RAM
- 100 GB SSD
## 3. ОС
Рекомендуемая ОС:
- Debian 12 minimal
Причина:
- предсказуемая база для Docker/PostgreSQL
- меньше лишнего, чем в desktop-образах
- удобно держать long-running сервисы
## 4. Настройки VM в PVE
### 4.1 Общие параметры
- Name: `fr24-adsb` или `fr24-ingest`
- Machine: `q35`
- BIOS: `SeaBIOS`
- CPU type: `host`
- Disk bus: `VirtIO SCSI`
- Network model: `VirtIO`
- QEMU guest agent: enabled
- Ballooning: disabled или очень консервативно
### 4.2 Диск
- один системный диск на `80100 GB`
- включить `Discard` / `SSD emulation`, если storage позволяет
- не дробить диск без необходимости
### 4.3 Сеть
- подключить к основному bridge PVE
- лучше использовать DHCP reservation или статический IP
- имя хоста зафиксировать заранее, чтобы не плодить путаницу в compose и мониторинге
## 5. Установка ОС
1. Создать VM в PVE
2. Подключить ISO Debian 12
3. Установить minimal system
4. Включить SSH server
5. Создать обычного пользователя для администрирования
6. После первого boot обновить систему
## 6. Базовые пакеты внутри VM
После установки:
- `qemu-guest-agent`
- `docker.io` или Docker Engine
- `docker compose plugin`
- `git`
- `curl`
- `ca-certificates`
- `gnupg`
- `lsb-release`
- `usbutils`
- `jq`
- `chrony` или аналогичный time sync
## 7. Подготовка каталогов
Рекомендуемая структура на VM:
- `/srv/fr24/`
- `/srv/fr24/postgres/`
- `/srv/fr24/data/`
- `/srv/fr24/logs/`
- `/srv/fr24/config/`
Смысл:
- отдельно держать данные и логи
- не сваливать всё в home пользователя
- проще backup/restore
## 8. USB passthrough для RTL-SDR
### 8.1 Принцип
RTL-SDR подключён к физической машине по USB, а в VM он должен быть проброшен как USB-устройство.
### 8.2 Рекомендация
- использовать постоянный способ привязки устройства: по USB port или by-id, а не по случайному bus number
- после reboot хоста и VM устройство должно подниматься без ручной переконфигурации
### 8.3 Проверка в VM
Внутри VM проверить:
- `lsusb`
- `dmesg | tail`
- `rtl_test` или аналогичный тест захвата
Если устройство не видно:
- проверить, не занял ли его хост
- проверить настройки passthrough в PVE
- переподключить устройство через интерфейс PVE
## 9. Docker Compose подготовка
Перед запуском стека внутри VM:
1. Создать рабочую директорию проекта
2. Подготовить `.env` отдельно от репозитория
3. Создать volume для PostgreSQL
4. Подготовить network для compose
5. Проверить, что контейнеры смогут обращаться друг к другу по service name
## 10. Проверка после создания VM
Минимальный чек-лист:
- [ ] VM загрузилась после установки ОС
- [ ] SSH доступен
- [ ] `qemu-guest-agent` работает
- [ ] RTL-SDR виден внутри VM
- [ ] Docker и Compose работают
- [ ] диск и RAM соответствуют лимитам
- [ ] каталог `/srv/fr24` создан
- [ ] время синхронизировано
## 11. Что делать дальше после создания VM
После VM setup передать работу Dev-агенту на:
- Docker Compose стек
- PostgreSQL/PostGIS
- capture/preprocess/API контейнеры
- healthchecks
- backup/restore
- мониторинг
## 12. Критерий готовности VM
VM считается готовой, если:
- RTL-SDR доступен внутри VM
- Docker Compose запускается без ошибок
- есть место под PostgreSQL volume
- система переживает reboot и сохраняет USB passthrough
- VM готова принимать конфигурацию от Dev-агента