# Инструкция: создание VM для RTL-SDR ingest-контура ## 1. Цель Поднять на PVE отдельную VM, в которую пробрасывается RTL-SDR по USB, после чего внутри VM разворачивается Docker Compose стек с PostgreSQL/PostGIS, capture, preprocess и API. ## 2. Рекомендуемый профиль VM Ограничения проекта: - CPU: до 6 vCPU - RAM: 10–12 GB - SSD: 80–100 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 Диск - один системный диск на `80–100 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-агента