kitakitsune0x/bigbossbot

GitHub: kitakitsune0x/bigbossbot

一个自托管的实时OSINT仪表板,用于聚合多源公开情报并监控冲突与市场。

Stars: 26 | Forks: 0

# BIG BOSS BOT ![BIG BOSS BOT Dashboard](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/02408e5e18182246.png) 实时OSINT指挥中心,用于监控中东冲突。聚合来自50多个来源的开源情报,涵盖新闻、电台、军事追踪、金融市场等,并整合到单个仪表板中。 基于 Next.js、TypeScript、Tailwind CSS、Leaflet、Prisma 和 Postgres 构建。无需API密钥即可获取上游情报源。 ## 多用户访问 该项目现在作为一个受保护的多用户应用程序运行: - 用户名 + 密码认证 - 认证器应用TOTP设置(默认可选,可全局强制) - 账户恢复用的恢复码 - 管理员/成员角色 - 每用户仪表板偏好设置 - 每用户代理访问令牌(用于MCP客户端) - 管理员工具(用户管理、密码重置、2FA重置、会话吊销) ## 功能 - **实时情报流** — 20+个RSS新闻来源,带关键词相关性过滤 - **电报OSINT** — 27个频道实时抓取,支持自动翻译(希伯来语/阿拉伯语/波斯语),包括GCC来源 - **战区地图** — 交互式Leaflet地图,显示军事飞机、海军舰艇、打击标记、导弹轨迹弧线、射程圈和距离测量 - **以色列警报状态** — 实时Pikud HaOref / Tzeva Adom导弹警报,带音频通知和地图上循环导弹轨迹弧线 - **冲突监控** — 分类事件(打击、防御、外交、核) - **导弹/打击追踪器** — 武器类型分类和严重程度评估 - **区域威胁监控** — 10个国家的威胁等级 - **军事空域** — 通过adsb.lol实时追踪军用飞机 - **海军追踪器** — 波斯湾和东地中海舰船监控 - **国防与市场** — 国防承包商股票、指数、VIX、黄金、美元(通过Yahoo Finance) - **加密货币市场** — 比特币、以太坊、Solana、BNB的24小时价格变化 - **预测市场** — 中东冲突结果的实时Polymarket赔率 - **能源市场** — WTI、布伦特原油、天然气、取暖油、汽油(通过Yahoo Finance) - **卫星热探测** — NASA FIRMS火灾/爆炸检测 ## 数据来源 所有数据源均为免费,无需API密钥。 ### 新闻RSS源 | 来源 | 地区 | 源 | |--------|--------|------| | BBC中东 | 国际 | `feeds.bbci.co.uk` | | 纽约时报中东 | 美国 | `rss.nytimes.com` | | 半岛电视台 | 卡塔尔/海湾 | `aljazeera.com` | | 路透社世界 | 国际 | `feeds.reuters.com` | | CNN中东 | 美国 | `rss.cnn.com` | | 福克斯新闻世界 | 美国 | `moxie.foxnews.com` | | 华尔街日报 | 美国 | `feeds.content.dowjones.io` | | 以色列时报 | 以色列 | `timesofisrael.com` | | 耶路撒冷邮报 | 以色列 | `jpost.com` | | Ynet新闻 | 以色列 | `ynetnews.com` | | N12 (Mako) | 以色列 | `rcs.mako.co.il` | | Walla新闻 | 以色列 | `rss.walla.co.il` | | Haaretz | 以色列 | `haaretz.com` | | PressTV | 伊朗 | `presstv.ir` | | The National | 阿联酋/海湾 | `thenationalnews.com` | | Drop Site News | 独立 | `dropsitenews.com` | | Google News | 聚合器 | `news.google.com`(3个与冲突相关的搜索) | | Breaking Defense | 美国国防 | `breakingdefense.com` | | Long War Journal | 美国国防 | `longwarjournal.org` | | Military Times | 美国国防 | `militarytimes.com` | | War on the Rocks | 美国国防/分析 | `warontherocks.com` | | CENTCOM | 美国军事 | `centcom.mil` | | DoD | 美国军事 | `defense.gov` | ### 电报频道 | 频道 | 视角 | |---------|------------| | @IDFofficial | IDF官方 | | @RocketAlert | 以色列火箭警报 | | @Alertisrael | 警报以色列 | | @TimesofIsrael | 以色列时报 | | @AbuAliExpress | Abu Ali Express(以色列OSINT) | | @OSINTdefender | OSINT Defender | | @warfareanalysis | 战争分析 | | @rnintel | RN 情报 | | @GeoPWatch | GeoPol Watch | | @middle_east_spectator | 中东观察员 | | @Middle_East_Spectator | 中东观察员 2 | | @HAMASW | 哈马斯-以色列战争更新 | | @PressTV | PressTV(伊朗) | | @iranintl_en | 伊朗国际 | | @FarsNews_EN | 法尔斯新闻(伊朗) | | @TasnimNewsEN | Tasnim新闻(伊朗) | | @SaberinFa | Saberin(IRGC附属) | | @defapress_ir | DefaPress(伊朗国防部) | | @sepah | IRGC官方 | | @FotrosResistancee | Fotros Resistance | | @QudsNen | 库德新闻 | | @Alsaa_plus_EN | Al-Saa EN | | @thecradlemedia | The Cradle | | @dropsitenews | Drop Site News | | @france24_en | France 24 | | @wamnews_en | WAM - 阿联酋新闻社(阿联酋) | | @gulfnewsUAE | Gulf News(阿联酋/海湾) | ### API | 服务 | 数据 | 提供方 | 成本 | |---------|------|----------|------| | Yahoo Finance | 股票价格、指数、大宗商品、原油期货 | Yahoo | 免费,无需密钥 | | Tzeva Adom | 以色列导弹/火箭警报 | Pikud HaOref的社区镜像 | 免费,无需密钥 | | NASA FIRMS | 火灾/热检测卫星数据 | NASA | 免费,无需密钥 | | adsb.lol | 军用飞机ADS-B追踪 | 社区ADS-B网络 | 免费,无需密钥 | | GDELT | 全球事件数据 | GDELT项目 | 免费,无需密钥 | | CoinGecko | 加密货币价格(BTC、ETH、SOL、BNB) | CoinGecko | 免费,无需密钥 | | Polymarket | 预测市场赔率(中东冲突) | Polymarket | 免费,无需密钥 | | Google Translate | 希伯来语/阿拉伯语/波斯语自动翻译 | Google(非官方) | 免费,无需密钥 | ### 轮询间隔 | 源 | 间隔 | |------|----------| | 以色列警报(Pikud HaOref) | 5秒 | | 电报频道 | 60秒 | | 新闻RSS | 90秒 | | 打击 | 2分钟 | | 冲突 | 3分钟 | | 市场、原油、加密货币与Polymarket | 5分钟 | | 火灾(NASA FIRMS) | 10分钟 | ## 快速开始 ``` cp .env.example .env openssl rand -hex 32 ``` 将生成的值粘贴到 `.env` 中的 `AUTH_ENCRYPTION_KEY`,然后设置 `BOOTSTRAP_ADMIN_USERNAME` 和 `BOOTSTRAP_ADMIN_PASSWORD`。 ``` npm run db:up npm install npm run db:migrate npm run bootstrap:admin npm run dev ``` 捆绑的 Docker Postgres 实例监听 `127.0.0.1:${POSTGRES_PORT:-54329}`。 打开 [http://localhost:3000](http://localhost:3000)。 ## Docker Compose 你可以在 Docker 中运行完整堆栈: ``` cp .env.example .env openssl rand -hex 32 ``` 将生成的值粘贴到 `.env` 中的 `AUTH_ENCRYPTION_KEY`,然后设置 `BOOTSTRAP_ADMIN_USERNAME` 和 `BOOTSTRAP_ADMIN_PASSWORD`。 如果 `54329` 或 `3000` 在你的机器上已被占用,请在启动堆栈之前在 `.env` 中设置 `POSTGRES_PORT` 和/或 `APP_PORT`。 现在如果 `AUTH_ENCRYPTION_KEY` 或 `BOOTSTRAP_ADMIN_PASSWORD` 仍使用示例占位值,容器将拒绝启动。 这将启动: - `postgres`,默认监听 `127.0.0.1:${POSTGRES_PORT:-54329}` - `app`,默认访问 [http://localhost:3000](http://localhost:3000) 如果你还需要 Docker 中的捆绑 MCP 侧车,请使用 `docker compose --profile mcp up --build` 并传递 `BIG_BOSS_API_TOKEN` 到 `.env`。 应用容器会自动: - 等待 Postgres 变为健康状态 - 应用 Prisma 迁移 - 当 `BOOTSTRAP_ADMIN_USERNAME` 和 `BOOTSTRAP_ADMIN_PASSWORD` 设置时,引导第一个管理员账户 实用脚本: - `npm run docker:up` — 在后台启动完整堆栈 - `npm run docker:down` — 停止完整堆栈 - `npm run docker:logs` — 跟踪应用和数据库日志 - `npm run db:up` — 仅启动 Postgres 用于本地非 Docker 应用开发 ## GHCR 镜像 GitHub 将应用镜像发布到 `ghcr.io/kitakitsune0x/bigbossbot`。 - `main` 更新 `latest` 和 `main` 标签 - 每个发布的构建也会获得基于构建日期的 `YYYY.MM.DD` 标签 - 标记的发布将发布匹配的版本标签 - 如果你想从公共 VM 匿名 `docker pull`,请在首次发布后将 GHCR 包设为公开 - Docker Compose 使用 `BIG_BOSS_IMAGE` 并默认为上述 GHCR 镜像名称 ## 构建版本 - `npm run build` 为每个构建打上 `YYYY.MM.DD` 格式的日期版本 - 构建版本会保存在 `.build-version` 中,以便 MCP 服务器在构建完成后报告相同版本 - 如果需要覆盖自动生成的日期以进行确定性重建,请在 `npm run build` 或 `docker compose build` 前设置 `APP_VERSION=YYYY.MM.DD` ## 自托管 对于公共仓库,将顶层的 [docker-compose.yml](./docker-compose.yml) 文件视为本地开发和单机测试。 对于暴露在互联网上的虚拟机,请结合使用 [docs/vps-deploy.md](./docs/vps-deploy.md) 和 [docker-compose.vps.yml](./docker-compose.vps.yml)。该路径专为公共仓库设计,支持 Docker 基础自托管、GHCR 镜像更新、Caddy 管理的 HTTPS 以及仅存在于服务器上的私有运行时密钥。 1. 在服务器上克隆仓库并进入项目目录。 ``` git clone https://github.com/kitakitsune0x/bigbossbot.git cd bigbossbot ``` 2. 复制生产环境环境模板并仅在服务器上编辑。 ``` cp .env.production.example .env.production ``` 3. 在 `.env.production` 中替换每个占位值。最低要求设置: - `APP_DOMAIN` 指向你的虚拟机的 DNS 主机名 - `BIG_BOSS_IMAGE=ghcr.io/kitakitsune0x/bigbossbot:YYYY.MM.DD` 固定确切构建,或保留 `:latest` 使用移动默认值 - `AUTH_ENCRYPTION_KEY` 为长随机密钥 - `AUTH_REQUIRE_2FA=false` 如果你想在注册时保持可选 2FA,或 `true` 强制全局启用 - `BOOTSTRAP_ADMIN_USERNAME` 和 `BOOTSTRAP_ADMIN_PASSWORD` 为要创建的第一个管理员账户 - `POSTGRES_PASSWORD` 和 `DATABASE_URL` 用于捆绑的 Postgres 服务 4. 拉取发布的容器并启动生产堆栈。 ``` docker compose --env-file .env.production -f docker-compose.vps.yml up -d ``` 5. 将 DNS 的 `A` 或 `AAAA` 记录指向虚拟机,打开端口 `80` 和 `443`,并让 Caddy 自动获取证书。 6. 遵循 [docs/vps-deploy.md](./docs/vps-deploy.md) 中的完整虚拟机部署指南,了解自动更新、回滚和 Caddy 设置详情。 推荐生产环境设置: - 保持捆绑的 Postgres 卷挂载,以便数据在容器重启后保留 - 通过将 `BIG_BOSS_IMAGE` 更新为更新的 `YYYY.MM.DD` 标签来更新,然后运行 `docker compose --env-file .env.production -f docker-compose.vps.yml up -d` - 稍后在 Docker 工具更新后启用 Watchtower:`docker compose --profile watchtower --env-file .env.production -f docker-compose.vps.yml up -d watchtower` - 如果你在本地重建并希望在镜像元数据中固定日期标签,请在 `docker compose build` 前导出 `APP_VERSION=YYYY.MM.DD` ## 认证设置说明 - `npm run db:up` 启动 [docker-compose.yml](./docker-compose.yml) 中定义的 Docker Postgres 服务 - `npm run db:migrate` 将已提交的 Prisma 迁移应用到运行的数据库 - `npm run bootstrap:admin` 使用 `BOOTSTRAP_ADMIN_USERNAME` 和 `BOOTSTRAP_ADMIN_PASSWORD` 创建第一个管理员账户 - `AUTH_REQUIRE_2FA=true` 强制每个账户在访问 `/dashboard` 前完成认证器设置;默认配置为可选 2FA - `AUTH_ENCRYPTION_KEY` 应为长随机密钥,且位于可丢弃的本地开发环境之外 ## MCP 访问 BIG BOSS BOT 包含一个用于需要实时只读情报的代理的本地 stdio MCP 服务器。 - 在「账户 → 设置 → 代理访问令牌」中创建只读令牌 - 启动 Web 应用:`npm run dev` - 启动 MCP 侧车:`npm run mcp` - 使用 `BIG_BOSS_BASE_URL` 和 `BIG_BOSS_API_TOKEN` 配置客户端 - Docker 用户可以运行相同的侧车:`docker compose --profile mcp run --rm mcp` 完整的设置说明、客户端配置代码片段以及捆绑的 Codex 技能位于 [docs/mcp.md](./docs/mcp.md)。 ## 技术栈 - **框架:** Next.js 16(App Router) - **语言:** TypeScript - **样式:** Tailwind CSS - **地图:** Leaflet / React-Leaflet - **XML 解析:** @xmldom/xmldom ## 法律声明 ### 目的与范围 本项目严格提供用于**教育和研究目的**。它展示了使用现代 Web 技术聚合公开可用的开源情报(OSINT)的技术。它不用于商业用途、转售数据或任何违反适用法律或第三方服务条款的活动。 ### 数据来源 所有数据均来自公开可访问的端点。没有绕过付费墙,没有规避认证,也没有完整复制受版权保护的内容 —— 仅显示标题、链接和公开可用的元数据。 ### 非官方端点 某些数据源依赖**非官方或未记录的公共端点**,包括但不限于:Yahoo Finance 图表数据、Google Translate、Telegram 频道嵌入和 Google News RSS 源。这些端点: - 不是官方支持的 API,可能违反相应提供商的服务条款 - 可能会停止工作、更改或被屏蔽而无需通知 - 仅在此用于非商业教育演示 - 如果你要用于商业或生产环境,应替换为官方 API ### 第三方内容 新闻内容、电报帖子、金融数据、警报数据及其他所有第三方内容均归其各自的发布者、组织和数据提供者所有。本项目不声称拥有任何第三方内容。市场数据可能受到上游数据许可方的额外再分发限制。 ### 用户责任 使用本软件时,你同意: - **你全权负责** 确保你的使用符合所有适用法律和第三方服务条款 - 作者和贡献者不对任何滥用、服务条款违规、法律索赔或因使用本软件造成的损害负责 - 你**不会使用**本软件进行商业数据再分发、自动化交易或任何违反底层数据提供者条款的行为 - 本软件按“原样”提供,不附带任何形式的担保 ### ADS-B 数据归属 军事飞机追踪数据由 [adsb.lol](https://www.adsb.lol) 提供,遵循 [开放数据库许可(ODbL 1.0)](https://opendatacommons.org/licenses/odbl/1-0/)。 ### 不予背书 本项目不与、也不受任何数据提供者、新闻组织、政府或军事实体的关联、认可或赞助。 ## 星标历史 [![星标历史图表](https://api.star-history.com/chart?repos=kitakitsune0x/bigbossbot&type=date&legend=top-left)](https://www.star-history.com/?repos=kitakitsune0x%2Fbigbossbottype=date&legend=top-left) ## 许可证 [MIT](LICENSE)
标签:Leaflet 地图, PostgreSQL, Prisma ORM, RSS 聚合, SEO, SSO, Tailwind CSS, Telegram 爬虫, TOTP双因素认证, TypeScript, 中东冲突, 仪表盘个性化, 会话管理, 军事飞机追踪, 冲突追踪, 加密货币, 国防股票, 地理可视化, 多用户, 多语言翻译, 威胁情报, 安全插件, 实时情报, 密钥恢复, 导弹轨迹, 市场数据, 广告跟踪, 开发者工具, 开源情报 OSINT, 海军舰艇追踪, 用户权限管理, 监控仪表板, 管理员角色, 自动化攻击, 自托管, 防空警报, 预测市场