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 clone → docker compose pull → docker compose up -d.
Почему НЕ на forge (решено 2026-08-02)
- RAM: backend лимит по умолчанию 4G (
BACKEND_MEMORY_LIMIT), frontend 512M. У forge свободно ~1.2G + своп уже 100% → задушил бы боты/n8n/RAG/Hermes или словил OOM. - Репутация 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-backendhealthy (127.0.0.1:8000, наружу закрыт — проверено HTTP 000),shadowbroker-frontendhealthy (0.0.0.0:3000, снаружи HTTP 200). Базовый набор, mesh off. - Грабли деплоя: docker compose мержит списки
ports, не заменяет. Первый override0.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 картинку не ломает.
- Важно про источники данных: mesh — это НЕ источник телеметрии, а социальный слой (мессенджинг/Dead Drop между операторами). Вся картинка (40+ слоёв) тянется НАПРЯМУЮ публичными API самим бэкендом независимо от mesh: ADS-B/OpenSky (самолёты), AIS (суда), Sentinel-2/Copernicus + NASA FIRMS (спутники/пожары), Windy/OSM (CCTV), KiwiSDR/Meshtastic/APRS (радио),
- Архитектура портов (безопасная): 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)
git cloneрепо →docker compose pull→up -d- Проверить backend/frontend поднялись, healthcheck
- Пройтись по слоям, recon-функции включать аккуратно
- Опц.: подключить AI-агента через OpenClaw-канал
Открытые вопросы
- Какие слои/фиды реально нужны (60+ — не все включать, часть прожорлива: hourly Telegram-скрейпинг, adaptive polling)
- Нужны ли ключи для части фидов (Shodan и т.п. — уточнить при деплое)