news 2026/9/24 15:53:11

三步跑通 Open-Meteo 天气 API 自托管:新手从零到上线的部署指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
三步跑通 Open-Meteo 天气 API 自托管:新手从零到上线的部署指南

三步跑通 Open-Meteo 天气 API 自托管:新手从零到上线的部署指南

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

如果你想在项目里免费查询全球天气预报、又不想依赖商业 API,Open-Meteo 是可以自托管的天气数据服务:接口不需要 API key,公开 API 面向非商业用途免费,而它把同一套服务开放给你在自己的机器上完成自托管部署。硬件上准备至少 8 GB 内存、100 GB 空闲磁盘;时间上预留 10 分钟即可。

自托管替你省掉什么

官方公开 API 免费但有约定:单日请求超过 10000 次需先联系官方(见 README)。如果你的调用量更大,或者要求数据始终留在自己的机房,自托管就是出路。默认的部署方式不需要你下载任何原始模型文件:服务从开放数据仓库实时拉取预报数据库,并在本地做 LRU 缓存。整个系统说白了只有两件事:一个查询天气的 HTTP 服务,一个存放压缩时间序列数据的./data目录。内存建议 16 GB,x86-64 与 Arm 均支持。

三步让服务跑起来

第一步,启动容器。官方镜像默认走"远程数据 + 本地缓存",开箱即用:

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 127.0.0.1:8080:8080 \ ghcr.io/open-meteo/open-meteo

第二步,验证接口。首次调用冷缓存需要几秒,之后同坐标的调用会快很多:

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

第三步,圈定需要的数据。想把某个模型和变量落到本地磁盘,用 sync 命令,它只收两个参数:模型、变量(逗号分隔),实现见 SyncCommand.swift:

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

模型与变量的完整清单见数据下载文档,完整部署流程见入门指南。

Docker 还是 Ubuntu 包:路线怎么选

三条路线的差别主要在管理与目标系统:

路线适用场景资源开销
Docker验证、开发、临时部署;任何带 Docker 的 Linux8 GB+ 内存、100 GB+ 磁盘;冷缓存首查约数秒
Ubuntu 22.04 APT 包单台 22.04 机器长期生产运行硬件要求相同;systemd 管理,附带 openmeteo-sync 同步服务
源码构建需要改动代码本身额外需要 Swift 工具链;AGPLv3 要求公开改动后的源码

安装 APT 包(官方仅支持 Ubuntu 22.04):

sudo gpg --keyserver hkps://keys.openpgp.org --no-default-keyring --keyring /usr/share/keyrings/openmeteo-archive-keyring.gpg --recv-keys E6D9BD390F8226AE echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/openmeteo-archive-keyring.gpg] https://apt.open-meteo.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/openmeteo-api.list sudo apt update && sudo apt install openmeteo-api

装完打开/etc/default/openmeteo-api.env,取消REMOTE_DATA_DIRECTORYCACHE_SIZE=8GB的注释,再sudo systemctl restart openmeteo-api。自托管同样可用于商业用途,但数据仍需署名;单机自托管性能通常低于官方公共服务,对重复调用多的业务才最划算。

跑起来之后要盯什么 ⚠️

数据清理。官方示例给出两条保留规则:压力层数据(文件名含 hPa)10 天后删、地表数据 90 天后删,完整 cron 任务集见cron 任务示例:

0 * * * * find /var/lib/openmeteo-api/data/ -type f -name "chunk_*" -wholename "*hPa*" -mtime +10 -delete 5 * * * * find /var/lib/openmeteo-api/data/ -type f -name "chunk_*" -mtime +90 -delete

监控。APT 包用sudo journalctl -u openmeteo-api.service查日志;Docker 用docker logs open-meteo

安全。默认只监听 127.0.0.1:8080,外部访问不到,这本身是安全的。要开放时在/etc/default/openmeteo-api.env设置API_BIND="0.0.0.0:8080",建议再挂 nginx 反向代理提供 TLS。

性能。一次预报要从数百个压缩文件里读取小片数据,冷缓存时耗时几秒;服务约每 2 分钟检查远端新预报并预加载。查询变量多或历史数据多时,调大CACHE_SIZE。多节点部署见多节点同步文档。

常见问题速查 🔍

  • 首次调用超时——冷缓存的正常现象,等几秒重试即可;同坐标的重复调用会命中缓存。
  • 变量查不到数据——本地没有该模型/变量,先用sync <模型> <变量>补齐。
  • 外部机器连不上端口——默认绑定 127.0.0.1,改API_BIND或加反向代理。
  • 数据落在哪——Docker 是/app/data,APT 包是/var/lib/openmeteo-api/data,文件均为chunk_*.om
  • 升级——Docker 重新拉镜像并重建容器;APT 包用 apt 更新升级,再用openmeteo-api version核对版本。
  • 授权——天气数据为 CC BY 4.0,展示数据时须署名;源码为 AGPLv3,改动后以网络服务分发需公开源码。

最后跑一遍这条命令做验收:

curl -s -o /dev/null -w "%{http_code}" "http://127.0.0.1:8080/v1/forecast?latitude=47.1&longitude=8.4&models=ecmwf_ifs025&hourly=temperature_2m"

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 15:40:13

网络安全红蓝对抗全面详解

一、什么是红蓝对抗 红蓝对抗的概念源自军事演习&#xff0c;演习中通常划分为攻守双方&#xff0c;红军防守、蓝军进攻。网络安全领域的红蓝对抗沿用了这一模式&#xff0c;是网络安全攻防演练的核心形式。 其中蓝队模拟黑客、APT 攻击组织&#xff0c;扮演攻击方&#xff0c;…

作者头像 李华
网站建设 2026/9/24 15:39:43

ESP32 如何运行 WebAssembly:WAMR Runtime 原理与实操

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/24 15:39:17

无刷电机驱动电路设计:三相全桥与六颗MOSFET实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华