Open-Meteo 自托管免费天气 API:Docker 两条命令跑通 7 家气象数据源的完整指南
【免费下载链接】open-meteoFree Weather Forecast API for non-commercial use项目地址: https://gitcode.com/GitHub_Trending/op/open-meteo
假设你正在写一个天气小工具,不想为每家商业气象 API 分别注册、计费、担心配额——Open-Meteo 就是为这个场景准备的开源项目:一个免费的天气数据 API,把 NOAA、德国 DWD、ECMWF 等 7 家国家级气象机构的预报数据整合成一套简单的 HTTP 接口。无需 API Key,curl一行就能拿到某坐标点未来 16 天的逐小时预报;也支持用 Docker 在你自己机器上跑一套完整的私有气象服务。
一句话说清它是什么
Open-Meteo 是一个用 Swift 编写的开源天气 API 服务器:它每天从各国气象机构下载并处理超过 5 TB 的数值预报数据,转换成一套为"压缩时间序列"优化的自有文件格式,再通过 HTTP 接口对外提供数据。三个可以记住的数字:
- 7 家气象数据源:NOAA GFS(含 HRRR 高分辨率)、DWD ICON、MétéoFrance、ECMWF IFS、日本 JMA、加拿大 GEM、MET Norway,全球模型 11 km 分辨率,区域模型最细到 1.5 km;
- < 10 ms 响应:官方服务在欧洲和北美部署服务器,配合 GeoDNS 就近路由;
- 80 年历史数据:历史天气 API 可回溯到约 1940 年的记录,数据按 CC BY 4.0 协议免费开放(非商业用途,代码 AGPLv3)。
上手前先看对比
| 维度 | 商业天气 API | Open-Meteo 公共服务 | 自托管 Open-Meteo |
|---|---|---|---|
| 费用 | 按调用量计费,常用包月起步 | 免费(非商业用途) | 免费,只花自己的服务器成本 |
| 注册门槛 | 注册账号、申请 Key、配置账单 | 无 Key,直接调用 | 无 Key,本地 8080 端口 |
| 数据时效 | 取决于其采购的上游数据 | 欧美区域模型每小时更新 | 默认每 2 分钟检查一次数据更新并预载 |
| 数据范围 | 各家长短不一 | 16 天逐小时预报 + 80 年历史 | 同公共服务,可自定义本地数据库 |
| 隐私 | 请求经过对方服务器 | 不收集个人数据、无 Cookie 追踪 | 数据流完全在自己手里 |
| 硬件要求 | 无 | 无 | 8 GB 内存起(建议 16 GB)、100 GB 存储 |
注意自托管的一个现实前提:官方文档明确说,单用户偶尔调用时自建实例不如直接用公共服务快(冷缓存下首次请求要读几个 MB 的压缩数据),它更适合有大量重复调用的场景。
三步跑起来
- 克隆仓库——拿到
docker-compose.yml和预构建配置:
git clone https://gitcode.com/GitHub_Trending/op/open-meteo cd open-meteo- 一条命令启动——compose 文件里已经配好了数据卷、API 服务和同步任务:
docker compose up -d- 验证接口——调用本地 8080 端口,首次请求需要几秒缓存预热,之后就是毫秒级返回:
curl "http://127.0.0.1:8080/v1/forecast?latitude=52.52&longitude=13.41&hourly=temperature_2m"不想用 Docker 的话,docs/getting-started.md 还提供了 Ubuntu 22.04 的 APT 预构建包安装方式,配置同样是两步:改环境变量、重启服务。
它实际能用来做什么
🌱 农户和灌溉系统:按时段精确到小时的降水预报
用它的:做智慧农业监控的开发者。问题:灌溉计划如果按天做,要么浪费水要么漏掉雨。结果:按"坐标 + 逐小时降水"拉取 16 天预报,灌溉脚本可以在预报降雨前 2 小时自动停泵,同时结合温度数据估算作物生长期。
⚡ 光伏和风电运维:用辐射与风速序列预测发电
用它的:solXpect 等开源太阳能出力预测应用。问题:电网调度需要提前知道光伏电站明天各时段能发多少电。结果:直接取shortwave_radiation(短波辐射)、wind_speed_10m等变量的时间序列,喂进出力模型即可,不用自己对接任何气象机构。
🏃 运动与健康类 App:零成本做出可商用的天气层
用它的:BusyRunner(按天气规划周跑量)、CycleWeather(骑行 7 天逐时预报)、Home Assistant(智能家居天气集成)等 40 多个开源应用。问题:小团队付不起商业天气数据的钱,也不想让用户注册。结果:非商业用途完全免费、无配额焦虑(公平使用即可)、无 Cookie 追踪,隐私敏感型应用可以直接引用,或干脆自托管把数据留在内网。
进阶功能速览
- 海洋预报 API:浪高、海表温度、海况评分,适合冲浪和航海场景(接口定义见 marine.yml);
- 空气质量 API:PM2.5、臭氧、花粉等污染物浓度,基于 CAMS 数据;
- 洪水 API:河流洪水预报,见 flood.yml;
- 历史天气 API:80 年逐时/逐日历史数据,可查 1940 年以来的温度趋势;
- 多模型集合预报:同一坐标可一次返回多个气象模型的结果,做不确定性分析(ensemble.yml);
- 地理编码与海拔 API:地名转坐标、坐标取海拔,补齐天气应用的两块常见短板;
- 官方 OpenAPI 规范:8 份接口描述文件在 openapi/ 目录,可直接导入 Postman 等工具生成客户端;
- 多语言 SDK:Python、TypeScript、Go、Rust、C#、Kotlin 等社区 SDK 在 README 中列出了入口;
- 多节点分布式部署:
sync命令在多机间同步已处理好的数据库,见 docs/sync-command.md。
文档、测试与协议
- docs/getting-started.md——自托管入门,Docker 与 Ubuntu APT 两种路径,含硬件要求(8 GB 内存起、100 GB 存储、建议 NVMe);
- docs/downloading-datasets.md——如何从各气象机构直接下载原始模型数据、维护本地气象库;
- docs/sync-command.md与 docs/cronjobs.md**——多节点同步和定时任务运维;
- Sources/App/——API 服务器与下载器源码,按气象机构分目录(
Gfs/、Icon/、Ecmwf/等),方便你查每个变量是怎么处理的; - Tests/AppTests/——单元测试与集成测试,约 20 个测试文件覆盖 API 输出、插值、偏置校正等;
- LICENSE——源码 AGPLv3;数据 CC BY 4.0,展示数据时需在旁边给出来源署名。
从克隆仓库到第一条curl返回温度序列,整个过程不超过三分钟——现在就docker compose up -d起来,给你的下一个应用接上免费的气象数据。
【免费下载链接】open-meteoFree Weather Forecast API for non-commercial use项目地址: https://gitcode.com/GitHub_Trending/op/open-meteo
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考