OpenClaw en Hetzner (Docker, Guía VPS de Producción)
Objetivo
Ejecutar un Gateway de OpenClaw persistente en un VPS de Hetzner usando Docker, con estado duradero, binarios incluidos en la imagen y comportamiento seguro de reinicio.
Si quieres “OpenClaw 24/7 por ~$5”, esta es la configuración más simple y confiable. Los precios de Hetzner pueden cambiar; elige el VPS más pequeño con Debian/Ubuntu y escala si encuentras OOMs.
Recordatorio del modelo de seguridad:
- Los agentes compartidos de empresa están bien cuando todos están en el mismo límite de confianza y el runtime es solo para negocios.
- Mantén una separación estricta: VPS/runtime dedicado + cuentas dedicadas; sin perfiles personales de Apple/Google/navegador/gestor de contraseñas en ese host.
- Si los usuarios son adversarios entre sí, separa por gateway/host/usuario del SO.
Consulta Seguridad y Hosting VPS.
¿Qué vamos a hacer (en términos simples)?
- Alquilar un servidor Linux pequeño (VPS de Hetzner)
- Instalar Docker (runtime aislado de aplicaciones)
- Iniciar el Gateway de OpenClaw en Docker
- Persistir
~/.openclaw+~/.openclaw/workspaceen el host (sobrevive a reinicios/recompilaciones) - Acceder al Control UI desde tu portátil vía túnel SSH
El Gateway se puede acceder vía:
- Reenvío de puertos SSH desde tu portátil
- Exposición directa de puertos si gestionas el firewall y tokens tú mismo
Esta guía asume Ubuntu o Debian en Hetzner. Si estás en otro VPS Linux, adapta los paquetes en consecuencia. Para el flujo genérico de Docker, consulta Docker.
Ruta rápida (operadores experimentados)
- Aprovisionar VPS de Hetzner
- Instalar Docker
- Clonar el repositorio de OpenClaw
- Crear directorios persistentes en el host
- Configurar
.envydocker-compose.yml - Incluir binarios requeridos en la imagen
docker compose up -d- Verificar persistencia y acceso al Gateway
Qué necesitas
- VPS de Hetzner con acceso root
- Acceso SSH desde tu portátil
- Familiaridad básica con SSH + copiar/pegar
- ~20 minutos
- Docker y Docker Compose
- Credenciales de autenticación del modelo
- Credenciales opcionales de proveedores
- QR de WhatsApp
- Token de bot de Telegram
- OAuth de Gmail
1) Aprovisionar el VPS
Crea un VPS de Ubuntu o Debian en Hetzner.
Conéctate como root:
ssh root@YOUR_VPS_IP
Esta guía asume que el VPS es con estado. No lo trates como infraestructura desechable.
2) Instalar Docker (en el VPS)
apt-get update
apt-get install -y git curl ca-certificates
curl -fsSL https://get.docker.com | sh
Verifica:
docker --version
docker compose version
3) Clonar el repositorio de OpenClaw
git clone https://github.com/openclaw/openclaw.git
cd openclaw
Esta guía asume que vas a compilar una imagen personalizada para garantizar la persistencia de binarios.
4) Crear directorios persistentes en el host
Los contenedores Docker son efímeros. Todo el estado de larga duración debe vivir en el host.
mkdir -p /root/.openclaw/workspace
# Establecer permisos para el usuario del contenedor (uid 1000):
chown -R 1000:1000 /root/.openclaw
5) Configurar variables de entorno
Crea .env en la raíz del repositorio.
OPENCLAW_IMAGE=openclaw:latest
OPENCLAW_GATEWAY_TOKEN=change-me-now
OPENCLAW_GATEWAY_BIND=lan
OPENCLAW_GATEWAY_PORT=18789
OPENCLAW_CONFIG_DIR=/root/.openclaw
OPENCLAW_WORKSPACE_DIR=/root/.openclaw/workspace
GOG_KEYRING_PASSWORD=change-me-now
XDG_CONFIG_HOME=/home/node/.openclaw
Genera secretos fuertes:
openssl rand -hex 32
No hagas commit de este archivo.
6) Configuración de Docker Compose
Crea o actualiza 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 el Gateway en loopback en el VPS; acceder vía túnel SSH.
# Para exponerlo públicamente, quita el prefijo `127.0.0.1:` y configura el firewall.
- "127.0.0.1:${OPENCLAW_GATEWAY_PORT}:18789"
command:
[
"node",
"dist/index.js",
"gateway",
"--bind",
"${OPENCLAW_GATEWAY_BIND}",
"--port",
"${OPENCLAW_GATEWAY_PORT}",
"--allow-unconfigured",
]
--allow-unconfigured es solo una conveniencia para el bootstrap, no reemplaza una configuración adecuada del gateway. Aún así configura auth (gateway.auth.token o password) y usa configuraciones de binding seguras para tu despliegue.
7) Pasos compartidos del runtime Docker en VM
Usa la guía de runtime compartido para el flujo común de Docker en host:
8) Acceso específico de Hetzner
Después de los pasos compartidos de build y lanzamiento, crea un túnel desde tu portátil:
ssh -N -L 18789:127.0.0.1:18789 root@YOUR_VPS_IP
Abre:
http://127.0.0.1:18789/
Pega tu token del gateway.
El mapa de persistencia compartido está en Docker VM Runtime.
Infrastructure as Code (Terraform)
Para equipos que prefieren flujos de infraestructura como código, una configuración de Terraform mantenida por la comunidad proporciona:
- Configuración modular de Terraform con gestión de estado remoto
- Aprovisionamiento automatizado vía cloud-init
- Scripts de despliegue (bootstrap, deploy, backup/restore)
- Hardening de seguridad (firewall, UFW, acceso solo SSH)
- Configuración de túnel SSH para acceso al gateway
Repositorios:
- Infraestructura: openclaw-terraform-hetzner
- Config Docker: openclaw-docker-config
Este enfoque complementa la configuración Docker anterior con despliegues reproducibles, infraestructura versionada y recuperación de desastres automatizada.
Nota: Mantenido por la comunidad. Para problemas o contribuciones, consulta los enlaces de los repositorios.