Cómo instalar Open-Meteo en un VPS
Open-Meteo ofrece APIs meteorológicas basadas en modelos numéricos, pero autoalojarlo se parece más a operar un pipeline de datos que a desplegar una web pequeña. Esta guía prepara el storage y usa las instrucciones oficiales actuales sin inventar una instalación ligera.
Requisitos previos
Open-Meteo autoalojado requiere hardware significativo: 8 GB de RAM como mínimo, 16 GB recomendados, una CPU moderna con soporte AVX2, y al menos 150 GB de almacenamiento NVMe SSD para conjuntos completos de datos de pronóstico. Una configuración limitada a un solo modelo puede caber en 32-48 GB. Esto NO es adecuado para VPS de gama baja.
Aviso: Para la mayoría de desarrolladores, la API alojada (api.open-meteo.com) es gratuita, no requiere API key, y es más simple de usar. Autoalojarlo se recomienda solo para soberanía de datos, entornos aislados o procesamiento de modelos personalizados.
Planifica descargas grandes, actualizaciones de modelos, caché y una política de rate limit. Conserva espacio para el modelo anterior y poder hacer rollback. Si solo necesitas datos meteorológicos para una app, considera mejor el endpoint alojado.
Paso 1, Conectarte a tu servidor
Actualiza el host y separa carpetas para API, modelos y cache:
ssh root@SERVER_IP
apt update && apt upgrade -y
apt install -y ca-certificates curl git
mkdir -p /opt/open-meteo/{app,models,cache,backups}
cd /opt/open-meteo
chmod 750 /opt/open-meteoUsa un volumen que sobreviva a recrear contenedores. No guardes modelos en una partición pequeña del sistema. Restringe SSH y mantén los ficheros fuera del web root.
Paso 2, Instalar Docker y Docker Compose
Instala Docker y Compose con las instrucciones oficiales para Ubuntu:
docker --version
docker compose version
systemctl enable --now docker
free -hEl despliegue oficial puede requerir herramientas nativas o un runtime concreto. Sigue ese requisito si el build del modelo no soporta Docker.
Paso 3, Ejecutar el build oficial de Open-Meteo
Descarga el source, assets y build actual desde el proyecto oficial de Open-Meteo. No inventes una imagen Docker ni uses un mirror aleatorio. Fuentes y versiones de modelos afectan directamente a la corrección del producto.
Si el release ofrece una imagen, guarda su nombre verificado en .env:
OPEN_METEO_IMAGE=REPLACE_WITH_THE_CURRENT_OFFICIAL_IMAGE
MODEL_DATA_PATH=/opt/open-meteo/models
CACHE_PATH=/opt/open-meteo/cacheUn wrapper de despliegue puede tener esta forma:
services:
api:
image: ${OPEN_METEO_IMAGE}
restart: unless-stopped
environment:
MODEL_DATA_PATH: /models
CACHE_PATH: /cache
ports:
- "127.0.0.1:8080:8080"
volumes:
- /opt/open-meteo/models:/models
- /opt/open-meteo/cache:/cacheUsa puertos, variables, health checks y rutas reales del release oficial. Valida solo después de sustituir placeholders:
docker compose config
docker compose pull
docker compose up -d
docker compose psDescarga los datos meteorológicos inmediatamente. Sin este paso la API devuelve resultados vacíos:
docker exec -it <container> sync ecmwf_ifs025 temperature_2mReemplaza <container> con el nombre real de tu contenedor. Registra la versión y fechas de origen para poder reproducir previsiones.
Los datos de modelos meteorológicos deben actualizarse regularmente. Programa una tarea cron o un timer de systemd para ejecutar el comando sync periódicamente (ej. cada 6 horas):
crontab -e
# Añadir: 0 */6 * * * docker exec <container> sync ecmwf_ifs025 temperature_2mPaso 4, Configurar el proxy inverso
Dirige weather.example.com al puerto localhost privado con Nginx o Caddy. Termina HTTPS, define límites de tamaño de cuerpo y añade cabeceras de caché. Ejemplo de configuración Nginx:
server {
listen 443 ssl;
server_name weather.example.com;
client_max_body_size 1m;
proxy_buffering off;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache openmeteo;
proxy_cache_valid 200 30s;
proxy_cache_use_stale error timeout updating;
}
}Mantén privados los modelos y endpoints administrativos. Prueba health, una previsión pequeña y una petición con datos cacheados. No expongas un endpoint ilimitado de descargas o debugging.
Paso 5, Primer acceso y configuración inicial
Abre la API HTTPS y envía una petición pequeña usando parámetros soportados por los modelos instalados. Comprueba timezone, coordenadas, unidades y metadata. Compara una respuesta con la referencia oficial antes de integrarla.
Añade monitoring de freshness. Una API puede devolver 200 y servir datos antiguos o incompletos, así que el health check debe comprobar la fecha de modelos.
Mantenimiento
Programa refreshes de modelos aparte de upgrades de aplicación. Descarga el nuevo modelo en staging, valídalo y cambia de forma atómica cuando el proceso oficial lo permita. Conserva el anterior para rollback y haz backup de configuración y metadata.
Implementa tareas cron de limpieza — borra archivos comprimidos de más de 10 días, archivos de superficie de más de 90 días. Monitorea el uso de disco, ya que los datos meteorológicos crecen continuamente.
Monitoriza disco, CPU, freshness, latencia y errores. Si el VPS se queda corto, mueve el procesamiento a compute dedicado o usa el servicio gestionado, no desactives la validación.
Herramientas mencionadas
Open-Meteo
↗API meteorológica open source y gratuita con modelos globales, histórico y predicción por hora.
Gratuito para uso no comercial, sin registro y sin límite declarado de peticiones.