☰
15分钟自托管天气API:Open-Meteo部署与调用指南
2026/9/26 3:04:30 网站建设 项目流程

15分钟自托管天气API:Open-Meteo部署与调用指南

【免费下载链接】open-meteoFree Weather Forecast API for non-commercial use项目地址: https://gitcode.com/GitHub_Trending/op/open-meteo

如果你的应用需要展示温度与降水,又不想申请 API Key、不想按次付费,Open-Meteo 值得看一下:这是一个可用 Docker 部署的开源天气 API,聚合 ECMWF、NOAA 等官方气象机构的预报数据,无需密钥即可调用,适合非商业项目与个人开发者。

一个免密钥的免费天气 API:它击中哪三个痛点

Open-Meteo 是一个开源的天气 API 服务,只做一件事:把各国气象机构发布的数值天气预报,变成你能直接调用的 REST 接口。源码以 AGPLv3 发布,数据以 CC BY 4.0 发布(需要署名),非商业用途免费,无需注册。它击中的是三个具体痛点:

  • 费用与配额:非商业用途免费,不按请求计费,无需注册即可获取 Key
  • 集成门槛:一条 curl 直接拿数据,原生支持 CORS,无广告、无跟踪
  • 数据不透明:模型来源公开标注,处理流程完整可审查,可自行部署接管

能拿到什么:从 16 天预报到 80 年历史

功能与数据:覆盖面有多广

  • 16 天逐小时预报:temperature_2m、降水、风速等小时变量,另有 daily、weekly、monthly 聚合接口
  • 80 年历史数据:历史天气 API 可回溯约 80 年的观测与再分析资料
  • 双档模型分辨率:全球模型 11 公里,区域模型细至 1.5 公里
  • 权威模型来源:NOAA GFS 与 HRRR、DWD ICON、MeteoFrance Arome&Arpege、ECMWF IFS、JMA、GEM HRDPS、MET Norway
  • 周边 API:仓库 openapi/ 目录同时定义 Marine、空气质量、地理编码、高程、洪水等接口

性能:响应快不快

  • 低于 10 毫秒:官方公开 API 的响应时间
  • 逐小时更新:欧洲与北美地区的模型每小时刷新一次
  • 每天 5 TB:每天从多家气象机构下载并处理超过 5 TB 数据
  • 双区部署:服务器位于欧洲与北美,用 GeoDNS(按访问者位置路由的 DNS 服务)就近接入

成本与使用条款

  • 非商业免费:全部端点免费开放,无隐藏付费档,仅要求合理使用
  • 用量阈值:应用超过 10,000 次/天时先联系官方即可,默认不限制请求
  • 无跟踪:无广告、无 Cookie、无第三方分析,不收集个人数据

📦 3 步用 Docker 跑起来,拿到第一份预报

Docker 是最快的路径。硬件门槛不低:CPU 需带 AVX2 这类 SIMD 指令,内存 8 GB 起步(建议 16 GB),存储约 100 GB。想省麻烦,Ubuntu 22.04 有预编译的 APT 包,细节见部署指南。

第 1 步:创建数据卷并启动容器。指定远程数据目录与缓存大小后,服务监听 8080 端口:

docker volume create --name open-meteo-data docker run -d --rm --name open-meteo \ -v open-meteo-data:/app/data \ -e REMOTE_DATA_DIRECTORY=https://openmeteo.s3.amazonaws.com/data/ \ -e CACHE_SIZE=8GB -p 8080:8080 ghcr.io/open-meteo/open-meteo

第 2 步:发起一次真实调用。首次请求要等几秒(从 S3 拉数据并写入本地缓存),之后就是毫秒级响应:

curl "http://127.0.0.1:8080/v1/forecast?latitude=47.1&longitude=8.4&models=ecmwf_ifs025&hourly=temperature_2m"

第 3 步(可选):建本地气象数据库。不想依赖远程数据源时,用内置 sync 命令直接从气象机构下载模型,见模型下载文档:

docker run -it --rm -v open-meteo-data:/app/data ghcr.io/open-meteo/open-meteo sync ecmwf_ifs025 temperature_2m

谁已经在用 Open-Meteo 的数据

项目 README 里列了几十个下游应用,按人群分一下:

移动端天气应用

Breezy Weather、Cirrus、Rain 等开源天气 App 都把它作为数据源。对 App 开发者来说,天气功能的成本是零,也不用替用户处理按量计费。

智能家居与物联网

Home Assistant 提供官方 Open-Meteo 集成,配置几行即可把实时天气接进自动化场景;OpenKNX 模块还能把气象数据直接发布到 KNX 智能家居总线。

垂直行业工具

无人机飞手用 DroneWeather 查 KP 指数与飞行条件,solXpect 预测家用太阳能发电量,Heat Rules 用温度湿度计算职业高温作业的工休安排。这些场景的共同点是:数据够准,而且免费。

学术研究与数据分析

80 年历史数据加 CC BY 4.0 授权,让它可以直接充当气候分析的免费底座;Open-Meteo 天气数据库还通过 AWS Open Data 计划重新分发,研究者无需经过 API 就能取数。

架构一览:Swift、Vapor 与 OM 二进制格式

整个服务用 Swift 编写,基于 Vapor 框架(一个 Swift 的 Web 服务器框架),编译为单个二进制。代码大致分三层:

  • 下载器:源码目录下按机构划分(Gfs/、Icon/、Ecmwf/、Era5/ 等),各机构一个子目录,负责抓取 GRIB、NetCDF 等原始文件
  • 处理层:把源格式转成自研的 OM 二进制格式,该格式为"单点位置的时间序列压缩读取"优化,取一个地点的几天温度只需读取很小的数据切片
  • 服务层:Controllers/ 下的 API 解析查询、做网格插值,输出 JSON 等格式

性能上,release 构建开启 -Ounchecked 与跨模块优化,x86 默认 -march=skylake 以吃满 SIMD 指令(单条指令并行处理多个数值)。分布式也支持:一台服务器下载模型,多台 API 节点通过 HTTP 定期拉取数据库保持同步,见多节点同步文档。内置 /metrics 端点仅对 localhost 开放,可看请求计数与缓存命中统计。

部署成功后的 5 条优化建议

  • 按需调大 CACHE_SIZE:默认 8 GB,变量多或历史跨度长时调大,官方支持多 TB 级缓存
  • 与数据源同区部署:公开数据位于 AWS us-west-2,自托管实例放在同区域,冷缓存时的读取延迟才可控
  • 利用请求局部性:重复请求与邻近坐标请求会命中缓存,多个点位尽量合并成一次批量调用
  • 接上监控:/metrics 只对 localhost 响应,可经反向代理暴露给 Prometheus 抓取
  • 前置反向代理:Ubuntu 包默认只绑 127.0.0.1:8080,生产环境用 nginx 补上 TLS 与访问控制

4 种参与方式:代码、文档、SDK 与案例

  1. 提交代码:bug 走 issue,改动提 PR;源码在 Sources/,测试在 Tests/
  2. 完善文档:docs/ 目录覆盖部署、下载、同步等 5 个主题,补上缺口也是贡献
  3. 开发 SDK:README 已列出 Python、TypeScript、Go、Rust、PHP 等十余种语言的社区客户端,更多语言受欢迎
  4. 分享案例:用 Open-Meteo 做了应用或网站,README 有专门清单,提 PR 加入即可

项目后续方向仍是持续接入新的气象模型并扩展分布式部署;商业使用与企业级支持可邮件联系 info@open-meteo.com,官方明确不提供小规模部署支持。

回到开头的场景:你只需要一个稳定的天气数据源,不必再评估商业 API。把仓库拉下来、按上面 3 步启动容器、用 curl 验证响应,再在客户端加一层缓存策略,天气功能就算跑通了。

【免费下载链接】open-meteoFree Weather Forecast API for non-commercial use项目地址: https://gitcode.com/GitHub_Trending/op/open-meteo

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询