fmhc/strategic-osint-dashboard

GitHub: fmhc/strategic-osint-dashboard

基于CesiumJS 3D地球仪的可自托管实时OSINT态势感知仪表盘,聚合约25个公开数据源并支持可选的LLM分析。

Stars: 0 | Forks: 0

# 🎯 战略 OSINT 仪表盘 一个实时、可自托管的 **OSINT (开源情报) 仪表盘**,可在交互式 3D 地球仪上呈现地缘政治和自然事件信号。它聚合了约 25 个免费/公开的数据源(航班、船舶、地震活动、灾难、网络威胁、互联网健康状况、天气、空间天气、新闻等),并可在实时态势上运行可选的 LLM 分析师。 后端:Node.js + Express + Socket.IO。前端:可自托管的 **CesiumJS** WebGL 地球仪。可选的 Prometheus + Grafana 用于指标监控。 ![status](https://img.shields.io/badge/status-operational-brightgreen) ![license](https://img.shields.io/badge/license-MIT-blue) ![战略 OSINT 仪表盘](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/f8c8947bda214750.jpg) ![demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/0a0ce3c8c4214755.gif) ## 功能 - **3D 地球仪** (CesiumJS),支持按需渲染、就地实体更新以及针对密集区域的 billboard 聚类。 - **约 25 个数据源模块**,从 `modules/` 自动发现 —— 例如: - ✈️ 航班追踪 (OpenSky)、🚢 AIS 船舶 (AISStream)、🌍 地震活动 (USGS + EMSC) - 🌋 灾难 (GDACS)、🛰️ NASA EONET 自然事件、🔥 NASA FIRMS 热特征 - 💻 网络安全 (CISA KEV 被利用的 CVE)、🌐 互联网健康状况 / IXPs / 海底电缆 - 🌤️ 天气、🌌 空间天气、☢️ 辐射、📰 新闻 (RSS),以及更多 - **可选的 LLM 分析师** —— 通过任何兼容 **OpenAI** 的 endpoint (OpenAI, vLLM, LiteLLM, LM Studio, …) 或 Ollama 生成态势评估和每个实体的情报。 - **警报推送**、威胁等级评分以及每个模块的 **`/healthz`** endpoint。 - 位于 `/metrics` 的 **Prometheus 指标**,可选的 Grafana 仪表盘。 - 优雅降级:失效/触发速率限制的数据源永远不会导致其他模块崩溃。 ## 快速开始 ``` # 安装 deps npm install # 本地 vendor CesiumJS(离线,不使用 CDN)— 约 20 MB 到 public/vendor/cesium npm run setup:cesium # 配置(所有值可选;应用合理的默认值) cp .env.example .env $EDITOR .env # 运行 npm start # → http://localhost:3333 ``` 打开 **http://localhost:3333**。 ### Docker ``` cp .env.example .env docker compose up -d # backend :3333, Grafana :3001, Prometheus :9091 ``` 在镜像构建期间会自动获取 Cesium 构建版本。 ## 配置 所有配置均通过环境变量进行(参见 **`.env.example`**): | 变量 | 用途 | |-----|---------| | `PORT` | HTTP 端口 (默认为 `3333`) | | `LLM_BASE_URL`, `LLM_API_KEY`, `LLM_MODEL` | 用于分析师的兼容 OpenAI 的 LLM endpoint (可选) | | `LLM_MODEL_FAST` | 可选的更便宜模型,用于高频的每个实体分析 | | `OLLAMA_URL`, `OLLAMA_MODEL` | 未设置 `LLM_BASE_URL` 时使用的后备方案 | | `AISSTREAM_API_KEY` | 用于实时 AIS 船舶追踪的免费密钥 | | `OPENSKY_USER` / `OPENSKY_PASS` | 可选,提升 OpenSky 免费层级的配额 | | `ALLOWED_ORIGINS` | 以逗号分隔的 CORS 白名单 (留空 = 开放) | LLM 是 **可选的** —— 没有它仪表盘也能正常运行;只是 AI 面板会保持空白。 ## HTTP endpoint | 路由 | 描述 | |-------|-------------| | `/` | 仪表盘 | | `/api/state` | 完整的当前全局状态 (所有模块) | | `/api/status` | 模块注册表 + 计数 | | `/api/` | 每个模块的数据 | | `/health` | 存活状态 (运行时间、内存、模块计数) | | `/healthz` | 每个模块的健康状况 (最后更新时间、陈旧度、错误) | | `/metrics` | Prometheus 指标 | ## 架构 ``` server.js Express + Socket.IO, cron scheduler, global state, routes modules/loader.js auto-discovers modules/, schedules updates, broadcasts deltas modules/*.js one data source each (return data via a detected update method) modules/llm-client.js shared OpenAI-compatible / Ollama client public/ the Cesium frontend (index.html, app.js, styles.css) public/vendor/cesium self-hosted CesiumJS (gitignored; run npm run setup:cesium) test/smoke.js boot + endpoint smoke test (npm test) ``` 添加数据源 = 放置一个 `modules/.js`,导出一个带有 `update()` (或类似) 方法的实例来返回数据;加载器会注册它,暴露 `/api/`,并自动广播更新。 ## 开发 ``` npm run dev # nodemon npm test # smoke test: node --check all modules + boot + assert endpoints ``` ## 许可证 MIT — 详见 [LICENSE](LICENSE)。 基于免费/公开的数据源和开源库构建 (CesiumJS, Express, Socket.IO, prom-client, …)。请遵守各上游服务提供商的条款和速率限制。
标签:3D地球, CesiumJS, ESC4, GNU通用公共许可证, HTTP/HTTPS抓包, MITM代理, Node.js, OSINT, 态势感知, 自定义脚本, 自定义请求头, 请求拦截