Run your own keyless weather API (wind + waves + elevation) so the router never hits public rate limits. Live — hosted instance below.
In the router: 1 · Weather Data → Server (advanced) → paste the URL above as the Open-Meteo server URL and pick model GFS 0.25° (self-host). The sections below explain how it's built & kept in sync.
The weather router calls Open-Meteo's free, keyless forecast/marine/elevation APIs directly from the browser. They're rate-limited per IP (≈600/min, 10k/day). Hosting your own instance removes the limit entirely; the app just points at your server.
docker pull ghcr.io/open-meteo/open-meteo
docker volume create --name open-meteo-data
# Wind — GFS global 0.25° (API derives speed/direction from u/v components)
docker run -it --rm -v open-meteo-data:/app/data ghcr.io/open-meteo/open-meteo \
sync ncep_gfs025 wind_u_component_10m,wind_v_component_10m
# Waves — GFS Wave global 0.25°
docker run -it --rm -v open-meteo-data:/app/data ghcr.io/open-meteo/open-meteo \
sync ncep_gfswave025 wave_height,wave_period,wave_direction,swell_wave_height,swell_wave_period
sync commands on a schedule (GFS updates every 6 h) to keep forecasts fresh. You do not need elevation/DEM data for US/Canada west-coast routing — that coastline is built into the app.docker run -d --rm -v open-meteo-data:/app/data -p 8080:8080 ghcr.io/open-meteo/open-meteo
curl "http://127.0.0.1:8080/v1/forecast?latitude=47.1&longitude=-126&models=ncep_gfs025&hourly=wind_speed_10m"
curl "http://127.0.0.1:8080/v1/marine?latitude=47.1&longitude=-126&hourly=wave_height"
In the router: 1 · Weather Data → Server (advanced) → set Open-Meteo server URL to your instance, and pick model GFS 0.25° (self-host). A single instance serves forecast, marine and elevation on one host.
github.com/open-meteo/open-meteo (has Dockerfile + docker-compose.yml). HTTPS note: if the app is served over https, your Open-Meteo server must be HTTPS too (browsers block mixed content).