Hetzner
Ejecutar OpenClaw Gateway 24/7 en un VPS Hetzner económico (Docker) con estado duradero y binarios integrados
Objetivo
Ejecutar un Gateway de OpenClaw persistente en un VPS de Hetzner usando Docker, con estado duradero, binarios integrados y comportamiento de reinicio seguro.
Si quieres "OpenClaw 24/7 por ~$5", esta es la configuración más simple y confiable.
Los precios de Hetzner cambian; elige el VPS Debian/Ubuntu más pequeño y escala si tienes OOMs.
Qué estamos haciendo (en términos simples)?
- Rentar un pequeño servidor Linux (VPS Hetzner)
- Instalar Docker (runtime de app aislado)
- Iniciar OpenClaw Gateway en Docker
- Persistir ''~/.openclaw'' + ''~/.openclaw/workspace'' en el host (sobrevive reinicios/rebuilds)
- Acceder a la UI de Control desde tu laptop via túnel SSH
El Gateway puede ser accedido via:
- Reenvío de puertos SSH desde tu laptop
- Exposición directa de puertos si gestionas firewalling y tokens tú mismo
Esta guía asume Ubuntu o Debian en Hetzner.
Si estás en otro VPS Linux, mapea los paquetes correspondientemente.
Para flujo Docker genérico, ver ''Docker''.
Qué necesitas
- VPS Hetzner con acceso root
- Acceso SSH desde tu laptop
- Comodidad básica con SSH + copiar/pegar
- ~20 minutos
- Docker y Docker Compose
- Credenciales de auth del modelo
- Credenciales de proveedor opcionales
- QR de WhatsApp
- Token de bot de Telegram
- OAuth de Gmail
2) Instalar Docker (en VPS)
apt-get update apt-get install -y git curl ca-certificates curl -fsSL https://get.docker.com | sh
Verificar:
docker --version docker compose version
4) Crear directorios host persistentes
Los contenedores Docker son efímeros.
Todo el estado de larga duración debe vivir en el host.
mkdir -p /root/.openclaw mkdir -p /root/.openclaw/workspace chown -R 1000:1000 /root/.openclaw chown -R 1000:1000 /root/.openclaw/workspace
6) Configuración de Docker Compose
Crear o actualizar ''docker-compose.yml''.
services:
openclaw-gateway:
image: ${OPENCLAW_IMAGE}
build: .
restart: unless-stopped
env_file:
- .env
environment:
- HOME=/home/node
- NODE_ENV=production
- TERM=xterm-256color
- OPENCLAW_GATEWAY_BIND=${OPENCLAW_GATEWAY_BIND}
- OPENCLAW_GATEWAY_PORT=${OPENCLAW_GATEWAY_PORT}
- OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
- GOG_KEYRING_PASSWORD=${GOG_KEYRING_PASSWORD}
- XDG_CONFIG_HOME=${XDG_CONFIG_HOME}
- PATH=/home/linuxbrew/.linuxbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
volumes:
- ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw
- ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace
ports:
# Recomendado: mantener Gateway solo loopback en VPS; acceder via túnel SSH.
# Para exponerlo públicamente, elimina el prefijo `127.0.0.1:` y configura firewall.
- "127.0.0.1:${OPENCLAW_GATEWAY_PORT}:18789"
# Opcional: solo si ejecutas nodos iOS/Android contra este VPS y necesitas host Canvas.
# Si expones esto públicamente, lee /gateway/security y configura firewall.
# - "18793:18793"
command:
[
"node",
"dist/index.js",
"gateway",
"--bind",
"${OPENCLAW_GATEWAY_BIND}",
"--port",
"${OPENCLAW_GATEWAY_PORT}",
]8) Build y lanzamiento
docker compose build docker compose up -d openclaw-gateway
Verificar binarios:
docker compose exec openclaw-gateway which gog docker compose exec openclaw-gateway which goplaces docker compose exec openclaw-gateway which wacli
Salida esperada:
/usr/local/bin/gog /usr/local/bin/goplaces /usr/local/bin/wacli
Qué persiste dónde (fuente de verdad)
OpenClaw se ejecuta en Docker, pero Docker no es la fuente de verdad.
Todo el estado de larga duración debe sobrevivir reinicios, rebuilds y reboots.
| Componente | Ubicación | Mecanismo de persistencia | Notas |
| Config del Gateway | ''/home/node/.openclaw/'' | Montaje de volumen host | Incluye ''openclaw.json'', tokens |
| Perfiles auth modelo| ''/home/node/.openclaw/'' | Montaje de volumen host | Tokens OAuth, API keys |
| Configs de skills | ''/home/node/.openclaw/skills/'' | Montaje de volumen host | Estado a nivel de skill |
| Workspace del agente| ''/home/node/.openclaw/workspace/'' | Montaje de volumen host | Código y artefactos del agente |
| Sesión de WhatsApp | ''/home/node/.openclaw/'' | Montaje de volumen host | Preserva login QR |
| Keyring de Gmail | ''/home/node/.openclaw/'' | Volumen host + contraseña| Requiere ''GOG_KEYRING_PASSWORD'' |
| Binarios externos | ''/usr/local/bin/'' | Imagen Docker | Deben integrarse al build |
| Runtime de Node | Sistema de archivos del contenedor| Imagen Docker | Rebuild cada build de imagen |
| Paquetes del OS | Sistema de archivos del contenedor| Imagen Docker | No instalar en runtime |
| Contenedor Docker | Efímero | Reiniciable | Seguro de destruir |