ShadowBroker (планируется)

Будущий проект: развернуть ShadowBroker — open-source платформу гео-OSINT-разведки. Репо: github.com/bigbodycobain/shadowbroker (зеркало на gitlab). Статус: VPS взят (04.08), ждём деплой, на Forge НЕ ставим.

Нода periscope (взята 04.08.2026)

  • IP: 194.34.238.184
  • Локация: Frankfurt am Main, Германия (не РФ ✓)
  • Хостер: HOSTKEY B.V. (AS57043)
  • Назначение: изолированная нода под ShadowBroker (recon-нагрузка отдельно от Forge). Имя выбрано нейтральным — не палит OSINT/recon в hostname.
  • Железо (проверено 04.08): Ubuntu 24.04.4 LTS, 4 ядра, 5.8 GB RAM (~6 — можно без урезания backend-лимита), диск 118 GB (109 свободно), Docker 29.7.1 + compose v5.4.0 предустановлены. Swap пересоздан на 2 GB (был 1G из образа, не активен).
  • Доступ: root. SSH-ключ /home/claude/.ssh/periscope (ed25519, беспарольный вход настроен). Root-пароль (бэкап-доступ) — в ~/.claude/secrets/periscope-root.txt. Hostname выставлен periscope (был vm-mini).
  • Настройка сервера (04.08, ГОТОВО): apt full-upgrade (ядро → 6.8.0-136, reboot сделан), база git/curl/htop/ufw/fail2ban/unattended-upgrades. Харднинг: ufw активен (allow 22/tcp, deny incoming, allow outgoing), fail2ban active (sshd jail уже забанил 3 IP — сервер сканируется ботами), unattended-upgrades active. Парольный SSH оставлен включённым (бэкап-доступ; ключ основной). Сервер готов под деплой ShadowBroker.

Что это

Агрегатор real-time OSINT-телеметрии из 60+ публичных фидов на одну карту: самолёты (ADS-B), суда (AIS), спутники, зоны конфликтов, CCTV, GPS-глушение, police scanners, mesh-радио, малварь/C2 + CISA KEV, сейсмика, Telegram OSINT (геопарсинг публичных каналов). 40+ переключаемых слоёв, режимы DEFAULT/SATELLITE/FLIR/NVG/CRT. Правый клик по точке Земли → досье страны, глава государства, entity-graph, снимок Sentinel-2. Серверный recon-тулкит (DNS, WHOIS, санкции, BGP, IP-sweep, Shodan). Агентский канал «OpenClaw» — подключение AI-агента к recon-бэкендам.

Стек: Next.js + MapLibre GL (фронт), FastAPI + Python (бэк). Деплой: git clonedocker compose pulldocker compose up -d.

Почему НЕ на forge (решено 2026-08-02)

  1. RAM: backend лимит по умолчанию 4G (BACKEND_MEMORY_LIMIT), frontend 512M. У forge свободно ~1.2G + своп уже 100% → задушил бы боты/n8n/RAG/Hermes или словил OOM.
  2. Репутация IP: проект включает активный recon (IP-sweep, Shodan, port-scan, BGP). Гонять это с IP forge (82.39.215.94, где живёт личный VPN для Anthropic + боты + автопостинг) → риск жалоб хостера и блокировок. Мешать OSINT-сканы с рабочим IP нельзя.

Требования к VPS (под заказ)

  • CPU: 2 ядра
  • RAM: 4–6 GB (Сергей берёт из этого диапазона, 04.08). 6 GB — комфортно, все слои, без тюнинга. 4 GB — рабочий минимум, но с оговорками: срезать BACKEND_MEMORY_LIMIT до ~2.5–3G (дефолт 4G = весь сервер → OOM), накинуть 2G своп, включать НЕ все 60+ фидов, а выборочно. 2 GB — не брать (backend+frontend+ОС+docker не влезут, пики geoparsing/Telegram-скрейпинга уронят).
  • Диск: 40+ GB (образы Next.js/Python + backend_data + кэш фидов/тайлов)
  • ОС: Ubuntu 22.04/24.04 + Docker
  • Локация: НЕ РФ (чистый неблокируемый выход для фидов и recon)
  • Хостер: отдельный/одноразовый под recon-нагрузку, не привязывать к основному аккаунту (IP будет светиться сканами)

Деплой (ГОТОВО 04.08) — работает на http://194.34.238.184:3000

  • Статус: 🟢 поднят. shadowbroker-backend healthy (127.0.0.1:8000, наружу закрыт — проверено HTTP 000), shadowbroker-frontend healthy (0.0.0.0:3000, снаружи HTTP 200). Базовый набор, mesh off.
  • Грабли деплоя: docker compose мержит списки ports, не заменяет. Первый override 0.0.0.0:3000 слился с базовым 127.0.0.1:3000 → конфликт биндинга (address already in use). Фикс — тег !override в override.yml (заменяет список; требует compose 2.24+, на periscope v5.4.0 ок):
    services:
      frontend:
        ports: !override
          - "0.0.0.0:3000:3000"
  • Репо клонирован: /opt/shadowbroker на periscope (commit 4c461a2). Управление: cd /opt/shadowbroker && docker compose ps/logs/up -d.
  • Порты: backend ${BIND:-127.0.0.1}:8000, frontend ${BIND:-127.0.0.1}:3000 — по умолчанию оба на localhost. План: frontend наружу (0.0.0.0:3000 + ufw allow), backend оставить на 127.0.0.1 (recon-API не торчит в интернет, доступен только фронту по docker-сети). Реализовать через docker-compose.override.yml.
  • mesh/P2P ОТКЛЮЧЁН (решение Сергея 04.08): MESH_INFONET_FLEET_JOIN=false в .env → нода = «private solo node» (официальный режим, README:111). Из коробки было =true — вступление в чужую P2P-сеть «Infonet fleet» через Tor onion-seed (синк разведданных с чужими узлами, governance/голосования/стейкинг). Прочие mesh-фичи (MQTT, Arti/Tor, clearnet-sync) и так off by default.
    • Важно про источники данных: mesh — это НЕ источник телеметрии, а социальный слой (мессенджинг/Dead Drop между операторами). Вся картинка (40+ слоёв) тянется НАПРЯМУЮ публичными API самим бэкендом независимо от mesh: ADS-B/OpenSky (самолёты), AIS (суда), Sentinel-2/Copernicus + NASA FIRMS (спутники/пожары), Windy/OSM (CCTV), KiwiSDR/Meshtastic/APRS (радио), t.me/s скрейпинг (Telegram OSINT), OSM Nominatim (геокод), Shodan InternetDB (recon). Отключение mesh картинку не ломает.
  • Архитектура портов (безопасная): frontend (Next.js) имеет server-side proxy BACKEND_URL=http://backend:8000 — браузер ходит ТОЛЬКО во frontend, тот проксирует к backend по docker-сети. Поэтому наружу открыт только frontend (docker-compose.override.yml: 0.0.0.0:3000, ufw allow 3000/tcp), backend остаётся на 127.0.0.1 — recon-API не торчит в интернет. Доступ: http://194.34.238.184:3000.
  • ADMIN_KEY сгенерён (защита recon/admin-действий от анонимов), значение — в ~/.claude/secrets/periscope-root.txt. Полноценно закрыть фронт за reverse-proxy + auth — на «потом» (решение Сергея по доступу).
  • Базовый набор: фиды с API-ключами (OpenSky/AIS/GFW/Windy/Telegram OSINT) пустые = слои деградируют/пустые, основа работает. GT_ANALYTICS (Louvain, тяжёлая) off by default — оставить off. Ключи и тяжёлые/recon-слои подключаем потом.

План деплоя (когда будет VPS)

  1. git clone репо → docker compose pullup -d
  2. Проверить backend/frontend поднялись, healthcheck
  3. Пройтись по слоям, recon-функции включать аккуратно
  4. Опц.: подключить AI-агента через OpenClaw-канал

Открытые вопросы

  • Какие слои/фиды реально нужны (60+ — не все включать, часть прожорлива: hourly Telegram-скрейпинг, adaptive polling)
  • Нужны ли ключи для части фидов (Shodan и т.п. — уточнить при деплое)