HNに表示: 15のライブグローバルフィードを取得するリアルタイムOSINTダッシュボードを作成しました
46日前原文(github.com)
概要
ShadowBrokerは、リアルタイム地政学・地理情報を統合表示するダッシュボード
航空機・船舶・衛星・地震・紛争・CCTV等を一画面で可視化
Next.js・MapLibre GL・FastAPI・Pythonで構築
Docker・ZIP版・ソースからの起動が可能
分析・研究・趣味用途に最適なグローバル監視ツール
ShadowBroker — リアルタイム地政学インテリジェンスダッシュボード
- 複数のOSINTフィードを統合し、ダークオプス風マップUIで可視化
- 航空機・船舶・衛星・地震・紛争・CCTV・GPS妨害・金融指標をリアルタイム追跡
- 分析者・研究者・愛好者向けの「シングルペイン」世界監視環境
主なユースケース
- 億万長者のプライベートジェット追跡
- 上空を通過する衛星の監視
- 世界中の海上交通の把握
- GPSジャミング発生エリアの検出
- 地震・災害の即時追跡
クイックスタート(Docker)
- リポジトリのクローン
git clone https://github.com/BigBodyCobain/Shadowbroker.git - ディレクトリ移動
cd Shadowbroker - Docker Composeで起動
docker-compose up -d - http://localhost:3000 でダッシュボード閲覧(Docker必須)
主な機能一覧
🛩️ 航空機トラッキング
- 商用・プライベート・軍用機のリアルタイム追跡
- OpenSky Network(5,000+機)・adsb.lol(軍用機)利用
- 航空機分類・SVGアイコン表示
- ホールディングパターン自動検出
- 飛行経路トレイル・地上判定
🚢 海上トラッキング
- **AIS WebSocket(aisstream.io)**で25,000+隻をリアルタイム追跡
- 船種分類・色分けアイコン
- 米海軍空母打撃群のOSINT推定位置自動追跡
- クラスター表示・地域別マッピング
🛰️ 衛星トラッキング
- CelesTrak TLE・SGP4による2,000+衛星の位置推定
- 任務タイプ別カラー分類(偵察・SAR・SIGINT・航法・早期警戒・商用・宇宙ステーション)
🌍 地政学・紛争
- GDELTによる世界の紛争・事件速報(直近8時間・約1,000件)
- ウクライナ戦線(DeepState Map連携)
- SIGINT/RISINTニュースフィード(複数RSS集約)
- 地域ドシエ:地図右クリックで国情報・首脳・Wikipedia要約
📷 監視カメラネットワーク
- 2,000+台のライブCCTV(ロンドン・オースティン・NYC・シンガポール等)
- 自動フィード検出・動画/画像/タイル対応
- クラスター表示
📡 シグナルインテリジェンス
- GPSジャミング検出:航空機NAC-P値のリアルタイム分析
- グリッド集約・ジャミング強度表示
- ラジオインターセプトパネル:通信傍受UI
🌐 追加レイヤー
- 地震情報(USGS)
- 昼夜サイクル表示
- グローバル金融指標ティッカー
- 距離・方位測定ツール
システムアーキテクチャ
- フロントエンド:Next.js + MapLibre GL(2Dマップ描画・パネル・フィルタ)
- バックエンド:FastAPI(データ取得・スケジューリング・API提供)
- 主要データソース:OpenSky・adsb.lol・aisstream.io・CelesTrak・USGS・GDELT・DeepState Map・各種CCTV API
- キャッシュ・自動更新:各種データは適宜キャッシュ&定期更新
データソースとAPI
- OpenSky Network:商用・プライベート航空機(60秒更新・匿名利用可)
- adsb.lol:軍用航空機(60秒・APIキー不要)
- aisstream.io:AIS船舶位置(リアルタイム・APIキー必須)
- CelesTrak:衛星軌道(60秒・APIキー不要)
- USGS:地震(60秒・APIキー不要)
- GDELT:世界紛争(6時間・APIキー不要)
- DeepState Map:ウクライナ前線(30分・APIキー不要)
- 各都市CCTV:5分更新(一部APIキー必要)
- RestCountries・Wikidata・Wikipedia:国情報・画像(オンデマンド)
起動方法
🐳 Docker利用(推奨)
- docker-compose.yml作成(公式イメージ利用)
- .envファイルにAPIキー記載
docker-compose up -dで起動し、http://localhost:3000へアクセス
📦 クイックスタート(ノーコード)
- GitHubのReleasesタブからShadowBroker_v0.3.zipダウンロード
- 解凍後、Windowsはstart.bat、Mac/Linuxはstart.sh実行
- 自動インストール&ダッシュボード起動
💻 開発者向けセットアップ
- Node.js 18+・Python 3.10+・npm/pip必須
- **aisstream.io(必須)・opensky-network.org(任意)・lta.gov.sg(任意)**APIキー取得
- リポジトリクローン・backend/frontendセットアップ
- npm run devでフロント・バックエンド同時起動
- Next.js(http://localhost:3000)
- FastAPI(http://localhost:8000)
データレイヤー(左パネルでON/OFF可)
- 商用・プライベート・軍用機・高額ジェット・特定航空機
- 衛星・空母/軍用/貨物船・民間船舶・クルーズ/旅客船
- 地震・CCTV・ウクライナ前線・世界紛争・GPSジャミング・昼夜サイクル
パフォーマンス最適化
- Gzip圧縮:APIペイロード約92%圧縮
- ETagキャッシュ:304レスポンスでJSONパース回避
- ビューポートカリング:表示範囲+20%のみ描画
- クラスター描画:船舶・CCTV・地震で機能
- デバウンス更新:300ms遅延でGeoJSON再構築抑制
- 位置補間:10秒アニメーションでスムーズ表示
- React.memo:不要な再レンダリング防止
- 座標精度:小数点5桁(約1m)でJSONサイズ削減
プロジェクト構成
- backend/:FastAPI本体・データ取得・API管理
- services/:各種データ取得・キャッシュ・解析モジュール
- frontend/src/:Next.jsアプリ・MapLibre・各種パネル・UIコンポーネント
- .env:APIキー管理
環境変数例(backend/.env)
- AIS_API_KEY=your_aisstream_key
- OPENSKY_CLIENT_ID=your_opensky_client_id
- OPENSKY_CLIENT_SECRET=your_opensky_secret
補足・開発裏話
- Flightradar・MarineTraffic・Twitter等を横断しなくて済む統合ダッシュボードとして開発
- 映画ハッカー風UIだが、実際のOSINTパイプラインを構築
- GeoJSON大量描画によるブラウザ負荷対策(カリング・圧縮・デバウンス等)
- リアルタイムGPSジャミング検出は特にユニークな機能
- 最適化・MapLibre改善案歓迎
まとめ
- ShadowBrokerはグローバルなリアルタイム地政学・地理情報を一元集約
- 自己ホスト・カスタマイズ・拡張性に優れたオープンソースOSINTプラットフォーム
- 分析・研究・危機管理・趣味など多様な用途に活用可能