# 2026-04-19 ## Durable memories - Начали проект по приёму ADS-B с RTL-SDR для FR24/noisemap. - Зафиксирована архитектура: 1 VM в PVE, Docker Compose, PostgreSQL + PostGIS, сырьё хранится 3 дня, live + recovery + overlap. - Для проекта создана документация: PROJECT.md, ARCHITECTURE.md, RTL-SDR_TZ.md, VM_SETUP.md, TEST_PLAN.md, DEV_AGENT_HANDOFF.md, INDEX.md. - Слава попросил назвать сервер VM-FR24 (homenet). - VM-физический хост имеет IP 192.168.2.67. - Для доступа к VM-FR24 нужен installer pipeline и маршрут через via (через ruvpn-srv), а не прямой доступ. - Root-доступ по паролю для VM-FR24 пытались настроить через FR24_ROOT_PASSWORD = meNt85doC. - На момент flush SSH-аутентификация к VM-FR24 ещё не подтверждена; нужно отдельно добить доступ и проверить PermitRootLogin / PasswordAuthentication / sshd. - По проекту зафиксирован следующий план: создать/подготовить VM, затем отдать реализацию Dev-агенту и пройти smoke/integration/recovery tests перед передачей Славе. - Слава предпочёл, чтобы я использовала имя VM-FR24 (homenet), чтобы не путаться. # 2026-04-19 ## Durable memories - Начали проект по приёму ADS-B с RTL-SDR для FR24/noisemap. - Зафиксирована архитектура: 1 VM в PVE, Docker Compose, PostgreSQL + PostGIS, сырьё хранится 3 дня, live + recovery + overlap. - Для проекта создана документация: PROJECT.md, ARCHITECTURE.md, RTL-SDR_TZ.md, VM_SETUP.md, TEST_PLAN.md, DEV_AGENT_HANDOFF.md, INDEX.md. - Слава попросил назвать сервер VM-FR24 (homenet). - VM-физический хост имеет IP 192.168.2.67. - Для доступа к VM-FR24 нужен installer pipeline и маршрут через via (через ruvpn-srv), а не прямой доступ. - Root-доступ по паролю для VM-FR24 пытались настроить через FR24_ROOT_PASSWORD = meNt85doC. - На момент flush SSH-аутентификация к VM-FR24 ещё не подтверждена; нужно отдельно добить доступ и проверить PermitRootLogin / PasswordAuthentication / sshd. - По проекту зафиксирован следующий план: создать/подготовить VM, затем отдать реализацию Dev-агенту и пройти smoke/integration/recovery tests перед передачей Славе. - Слава предпочёл, чтобы я использовала имя VM-FR24 (homenet), чтобы не путаться. - `ruvpn-srv` оказался доступен как `root@185.130.212.192` с паролем `AR5f7_T-bA`; это jump-host для дальнейшего доступа к VM-FR24. - В `.env` добавлен `RUVPN_ROOT_PASSWORD=AR5f7_T-bA`. - В `.env` также добавлен `FR24_ROOT_PASSWORD=meNt85doC`. - Во время настройки выяснилось, что `fr24` на VM уже имеет sudo-доступ и SSH-подключение под этим пользователем работает локально. - Debian на VM оказался 13 (trixie), а не 12. - В `.env` есть заглушка `DEV_BOT_TOKEN=`, которая мешает автоматическому `source` всего файла при запуске shell-скриптов. ## Запуск Dev-агента (фиксация 19.04.2026) После отладки выяснила точные правила запуска Dev-агента: ✅ Правильный рабочий вариант: ```json { "runtime": "subagent", "agentId": "dev", "cwd": "/home/node/.openclaw/workspace-dev", "mode": "run" } ``` ❌ НЕЛЬЗЯ: - `runtime="acp"` → "Failed to spawn agent command: dev" (dev — это subagent, не ACP harness) - `model="vibecode/claude-sonnet-4.6"` → "model not allowed" (dev берёт свой primary из конфига, явный model блокнуть) - `streamTo="parent"` → "streamTo is only supported for runtime=acp" - без `cwd` → агент молча завершается с 0 токенов 📝 Правило: Dev-агент сам берёт свою модель из конфига (`vibecode/claude-sonnet-4.6`), НЕ передавать model явно. --- ## 2026-04-19 — FR24 / VM-FR24 progress - Слава попросил продолжать проект FR24 по плану и действовать самостоятельно, задавая вопросы только там, где нельзя решить безопасно. - На VM-FR24 уже выполнены: проверка состояния, установка Docker, подготовка каталогов проекта, проброс RTL-SDR через Proxmox GUI, применение udev-правил, устройство определяется как RTL-SDR Blog V4. - Следующий блок работ — сборка контейнерной части проекта (compose, ingest, БД, healthchecks). - Слава обновил ключ на модель и попросил продолжать. ## 2026-04-19 13:19 UTC — FR24 Step 1-3 завершены ### Что сделано за сессию **Step 1 — базовый стек:** - Docker Compose с 5 сервисами поднят на VM-FR24 (192.168.2.67) - PostgreSQL + PostGIS инициализирован, схема `fr24` с 9 таблицами - capture/preprocess/api — реальные Python сервисы (не заглушки) - fake-loop: capture писал тестовые данные каждые 2 сек **Step 2 — реальный ADS-B:** - capture/Dockerfile: сборка `rtl-sdr-blog` + `dump1090-fa` из исходников - capture/main.py: запускает dump1090-fa как subprocess, читает SBS-1 с TCP:30003 - preprocess/main.py: реальный парсинг SBS-1, track_points только для MSG3 - `privileged: true` для capture контейнера (USB passthrough) - Результат: 22300+ пакетов, 594 реальных самолёта (ICAO24 российские борты) **Step 3 — карта + healthcheck:** - frontend/static/index.html: Leaflet карта, автообновление каждые 5 сек - новые endpoints: `/api/aircraft/live`, `/api/aircraft/`, `/api/tracks`, `/` - healthcheck api контейнера починен (создаёт `/tmp/api-ready` при старте) ### Текущий статус - Все 4 основных сервиса работают на VM-FR24 - API доступен на :8080, карта на http://192.168.2.67:8080/ - monitoring — всё ещё placeholder (alpine + tail) - Известный баг: `aircraft.last_seen_at` не обновляется в реальном времени → `/api/aircraft/live?minutes=10` возвращает 0 фич; workaround — увеличить minutes до 60+ ### Что осталось - Step 4: мониторинг (disk usage, DB size, capture lag alerts) - Step 5: backup/restore (pg_dump cron) - Step 6: передача Славе с тест-отчётом - Баг: обновление `last_seen_at` в preprocess ### Ключевые пути на VM - Compose: `/home/fr24/projects/fr24/compose/docker-compose.yml` - Ingest: `/home/fr24/projects/fr24/ingest/` - Frontend: `/home/fr24/projects/fr24/frontend/` - DB data: `/home/fr24/projects/fr24/db/postgres/` (bind mount, uid 999) - Logs: `docker compose logs -f ` ### Модель по умолчанию изменена - `vibecode/claude-sonnet-4.6` — установлена как primary в openclaw.json - Применится при следующем рестарте контейнера OpenClaw ## 2026-04-19 20:12 UTC — FR24 Step 4-5 финал + UI улучшения ### Что сделано за вечернюю сессию **Мониторинг дашборд:** - Dev-агент создал `frontend/static/monitoring.html` — тёмная тема, 4 карточки (disk/db/lag/throughput), таблица истории 20 строк, автообновление 30 сек - API уже имел `/monitoring` и `/api/monitoring/status` endpoints - Задеплоено на VM, доступно: http://192.168.2.67:8080/monitoring **Healthcheck monitoring контейнера:** - Был `unhealthy` из-за `pgrep: not found` в python:3.11-slim - Исправлено на `test -f /tmp/monitoring-ready` (без pgrep) - Обновлён `compose/docker-compose.yml` локально и на VM - Все 6 контейнеров стали healthy **Карта — треки и фильтр:** - Dev-агент обновил `index.html`: треки weight 1.5→3, opacity 0.4→0.7 - Добавлен селектор периода в HUD: 1h / 6h / 12h / 1d / 3 days (default) - API вызовы используют `getMinutes()` вместо hardcoded 180 - Пересборка образа потребовалась (static файлы копируются при build, не монтируются) **Текущее состояние карты:** - 625 самолётов за 3 дня — слишком много маркеров, карта перегружена - Следующий шаг: кластеризация через Leaflet.markercluster (Слава подтвердил интерес) ### Ключевые уроки - Static файлы в Docker копируются при сборке → после изменений нужен `docker compose build --no-cache api && docker compose up -d api` - `pgrep` нет в python:3.11-slim → healthcheck только через файлы (`test -f /tmp/ready`) или Python urllib - Dev-агент запускается без явного `model` параметра — берёт из своего конфига ### Статус проекта FR24 - ✅ Step 1: стек + PostgreSQL - ✅ Step 2: реальный ADS-B через dump1090 - ✅ Step 3: Leaflet карта - ✅ Step 4: мониторинг + backup - ✅ Step 5: мониторинг дашборд (monitoring.html) - 🔜 Step 6: кластеризация маркеров (Leaflet.markercluster)