World Monitor 是一个开源全球态势看板,可以聚合新闻、地缘事件、灾害、金融、能源、航空、航运与基础设施数据。它既能作为网页和桌面应用使用,也提供 REST API、CLI 与 MCP 接口。
项目地址:
https://github.com/koala73/worldmonitor
如果只是体验界面,运行前端开发服务器即可;如果要长期自建,应使用项目提供的 Docker Compose 完整栈。完整栈不只是一个静态页面,还包括 Node.js API、Redis、Redis REST 代理和 AIS 船舶数据中继。
自托管前需要什么
官方自托管文档当前要求:
- Docker 或 Podman;
- Docker Compose 或
podman-compose; - Node.js 22 或更高版本,用于在宿主机执行数据初始化脚本;
- 足够的磁盘空间保存镜像、依赖和 Redis 数据。
Windows 用户适合在 WSL2 中执行后续命令。虽然 Docker Desktop 能启动容器,但官方初始化脚本是 Shell 脚本,直接在普通 PowerShell 中运行并不顺手。
Docker Compose 完整部署
先克隆项目并安装依赖:
|
|
新版完整栈必须设置三个随机密钥,否则部分容器会直接退出:
|
|
然后启动容器:
|
|
第一次启动后还要执行数据初始化:
|
|
最后访问:
|
|
如果页面能打开但健康检查显示 0/55 OK,通常不是前端故障,而是还没有运行 seeders。
哪些数据源不需要 API Key
不配置第三方密钥也能看到地震、天气、自然事件、部分冲突与迁徙、稳定币、加密货币、气候异常、海底电缆和网络安全等公共数据。
更多数据需要单独申请 API Key,例如:
| 数据类型 | 常见配置 |
|---|---|
| LLM 分析 | GROQ_API_KEY、OPENROUTER_API_KEY 或本地 OpenAI 兼容接口 |
| 市场和经济 | FINNHUB_API_KEY、FRED_API_KEY、EIA_API_KEY |
| 冲突事件 | ACLED 账号或令牌 |
| 火灾监测 | NASA_FIRMS_API_KEY |
| 航空和航运 | AviationStack、AISStream |
| 网络中断 | Cloudflare Radar 相关令牌,可能需要付费权限 |
建议将额外配置写进 docker-compose.override.yml。项目默认忽略这个文件,能降低密钥误提交到 Git 的风险。
接入 Ollama 或其他本地模型
World Monitor 能连接任何兼容 OpenAI Chat Completions 的服务,包括 Ollama、vLLM 和 llama.cpp server。
可在 docker-compose.override.yml 中加入:
|
|
如果 Ollama 运行在 Docker 宿主机上,容器里的 localhost 指向容器自身,不能直接写 http://localhost:11434。Docker Desktop 通常可尝试:
|
|
Linux 主机则可以使用宿主机局域网地址,或给 Compose 配置 host-gateway。同时确认 Ollama 已监听容器可访问的地址,并用防火墙限制来源。
MCP 怎么接入 Agent
官方公共 MCP 地址为:
|
|
它使用 Streamable HTTP。公开的 tools/list 可以列出工具,但调用部分能力需要 World Monitor API Key 或 OAuth。自托管时不要因为看见 MCP 入口就默认所有数据都在本机:Agent 最终访问的是你配置的 MCP 地址,公共地址仍会连接官方服务。
接入 Codex、Claude Code 或其他 Agent 前,先确认:
- MCP 服务指向官方实例还是自己的实例;
- API Key 会保存到哪个配置文件;
- Agent 能调用哪些查询工具;
- 返回的新闻和风险判断是否保留来源;
- 是否允许把内部查询条件发送到外部服务。
数据刷新与持久化
Redis 数据会保存在 redis-data volume 中。普通容器重启不会清空数据,但下面的命令会删除 volume:
|
|
删除后需要重新执行:
|
|
长期运行可以用 cron 定期刷新:
|
|
上游接口可能限流或暂时不可用,刷新频率不是越高越好。应根据 API 配额、数据时效和服务器负载调整。
常见问题排查
容器启动后马上退出
先检查 .env 是否同时存在 RELAY_SHARED_SECRET、REDIS_PASSWORD 和 REDIS_TOKEN,再查看:
|
|
旧版公开默认令牌已经被移除,不应为了省事恢复固定弱口令。
没有船舶或火灾数据
船舶数据需要在主应用和 AIS relay 中配置 AISSTREAM_API_KEY;火灾数据需要 NASA_FIRMS_API_KEY。只填一处可能导致页面存在但数据为空。
Ollama 连接失败
依次检查:
- Ollama 的
/v1/chat/completions是否能从宿主机访问; - 容器能否解析并连接宿主机地址;
LLM_MODEL是否与已下载模型名称完全一致;- 防火墙是否拦截容器网段;
- 是否错误地把容器内的
localhost当成宿主机。
Redis 数据一直为空
确认 Redis REST 代理已经启动,并优先用官方包装脚本:
|
|
手动执行单个 seeder 时,还要正确提供 UPSTASH_REDIS_REST_URL 和 UPSTASH_REDIS_REST_TOKEN。
隐私和安全边界
自托管并不等于完全离线。World Monitor 会从大量外部数据源抓取内容;如果配置 Groq、OpenRouter、第三方市场接口或公共 MCP,查询和上下文仍可能离开服务器。
部署前至少处理这些问题:
- 不把 Redis、Redis REST 代理和 AIS relay 直接暴露到公网;
- 使用随机密钥,不提交
.env和 override 文件; - 通过反向代理启用 HTTPS 和访问控制;
- 限制 Ollama 或其他模型接口的监听地址;
- 定期更新镜像和依赖;
- 对新闻、金融、冲突与风险判断保留来源并交叉验证。
World Monitor 适合帮助人更快发现信号,不应被当成已经核实的情报结论或投资建议。
AGPL 许可证要注意什么
项目源码使用 AGPL-3.0-only。个人研究、自托管和修改通常可以按许可证进行;如果修改后通过网络向用户提供服务,通常需要向这些用户提供相应源码。闭源商业部署、官方品牌使用或不想承担 AGPL 义务的团队,应在上线前检查许可证原文并咨询专业意见,必要时联系项目方获取商业授权。
对大多数个人用户,最稳妥的路线是先在局域网部署,确认数据源、LLM、MCP 和刷新任务都符合预期,再决定是否开放公网访问。