142 lines
5.4 KiB
Markdown
142 lines
5.4 KiB
Markdown
# Инструкция: создание 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-агента
|