Hosting
Hetzner
Objetivo
Ejecutar un OpenClaw Gateway 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 fiable más sencilla. Los precios de Hetzner cambian; elige el VPS Debian/Ubuntu más pequeño y escala si encuentras errores de falta de memoria.
Recordatorio del modelo de seguridad:
- Los agentes compartidos por la empresa están bien cuando todos están dentro del mismo límite de confianza y el entorno de ejecución es solo empresarial.
- Mantén una separación estricta: VPS/runtime dedicado + cuentas dedicadas; no perfiles personales de Apple/Google/navegador/gestor de contraseñas en ese host.
- Si los usuarios son adversarios entre sí, sepáralos por Gateway/host/usuario del sistema operativo.
Consulta Seguridad y Alojamiento de VPS.
¿Qué estamos haciendo (en términos simples)?
- Alquilar un pequeño servidor Linux (VPS de Hetzner)
- Instalar Docker (runtime de app aislado)
- Iniciar el OpenClaw Gateway en Docker
- Persistir
~/.openclaw+~/.openclaw/workspaceen el host (sobrevive a reinicios/recompilaciones) - Acceder a la interfaz de control desde tu portátil mediante un túnel SSH
Ese estado montado de ~/.openclaw incluye openclaw.json, por agente
agents/<agentId>/agent/auth-profiles.json y .env.
Se puede acceder al Gateway mediante:
- Reenvío de puertos SSH desde tu portátil
- Exposición directa de puertos si gestionas tú mismo el firewall y los tokens
Esta guía presupone Ubuntu o Debian en Hetzner.
Si estás en otro VPS Linux, adapta los paquetes según corresponda.
Para el flujo genérico de Docker, consulta Docker.
Ruta rápida (operadores con experiencia)
- Aprovisionar el VPS de Hetzner
- Instalar Docker
- Clonar el repositorio de OpenClaw
- Crear directorios persistentes en el host
- Configurar
.envydocker-compose.yml - Integrar los binarios requeridos en la imagen
docker compose up -d- Verificar la persistencia y el acceso al Gateway
Qué necesitas
- VPS de Hetzner con acceso root
- Acceso SSH desde tu portátil
- Comodidad 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
Aprovisionar el VPS
Crea un VPS Ubuntu o Debian en Hetzner.
Conéctate como root:
ssh root@YOUR_VPS_IP
Esta guía presupone que el VPS es con estado. No lo trates como infraestructura desechable.
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
Clonar el repositorio de OpenClaw
git clone https://github.com/openclaw/openclaw.git
cd openclaw
Esta guía presupone que compilarás una imagen personalizada para garantizar la persistencia de los binarios.
Crear directorios persistentes en el host
Los contenedores Docker son efímeros. Todo estado de larga duración debe vivir en el host.
mkdir -p /root/.openclaw/workspace
# Set ownership to the container user (uid 1000):
chown -R 1000:1000 /root/.openclaw
Configurar variables de entorno
Crea .env en la raíz del repositorio.
OPENCLAW_IMAGE=openclaw:latest
OPENCLAW_GATEWAY_TOKEN=
OPENCLAW_GATEWAY_BIND=lan
OPENCLAW_GATEWAY_PORT=18789
OPENCLAW_CONFIG_DIR=/root/.openclaw
OPENCLAW_WORKSPACE_DIR=/root/.openclaw/workspace
GOG_KEYRING_PASSWORD=
XDG_CONFIG_HOME=/home/node/.openclaw
Define OPENCLAW_GATEWAY_TOKEN cuando quieras gestionar el token estable del gateway
mediante .env; de lo contrario, configura gateway.auth.token antes de
depender de clientes entre reinicios. Si ninguna de las dos fuentes existe, OpenClaw usa
un token solo de runtime para ese arranque. Genera una contraseña de llavero y pégala
en GOG_KEYRING_PASSWORD:
openssl rand -hex 32
No confirmes este archivo en git.
Este archivo .env es para env de contenedor/runtime, como OPENCLAW_GATEWAY_TOKEN.
La autenticación OAuth/clave API de proveedores almacenada vive en el archivo montado
~/.openclaw/agents/<agentId>/agent/auth-profiles.json.
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:
# Recommended: keep the Gateway loopback-only on the VPS; access via SSH tunnel.
# To expose it publicly, remove the `127.0.0.1:` prefix and firewall accordingly.
- "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 para facilitar el arranque inicial, no sustituye una configuración de Gateway adecuada. Aun así, configura la autenticación (gateway.auth.token o contraseña) y usa ajustes de enlace seguros para tu despliegue.
Pasos compartidos del runtime de VM Docker
Usa la guía de runtime compartido para el flujo común de host Docker:
Acceso específico de Hetzner
Después de los pasos compartidos de compilación y lanzamiento, completa la siguiente configuración para abrir el túnel:
Requisito previo: Asegúrate de que la configuración de sshd de tu VPS permite el reenvío TCP. Si has
reforzado tu configuración de SSH, revisa /etc/ssh/sshd_config y define:
AllowTcpForwarding local
local permite reenvíos locales ssh -L desde tu portátil y bloquea
reenvíos remotos desde el servidor. Configurarlo en no hará que el túnel falle
con:
channel 3: open failed: administratively prohibited: open failed
Después de confirmar que el reenvío TCP está habilitado, reinicia el servicio SSH
(systemctl restart ssh) y ejecuta el 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 el secreto compartido configurado. Esta guía usa el token del gateway de forma predeterminada; si cambiaste a autenticación por contraseña, usa esa contraseña en su lugar.
El mapa de persistencia compartido está en Runtime de VM Docker.
Infraestructura como código (Terraform)
Para equipos que prefieren flujos de trabajo 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 mediante cloud-init
- Scripts de despliegue (bootstrap, despliegue, copia de seguridad/restauración)
- Refuerzo de seguridad (firewall, UFW, acceso solo por SSH)
- Configuración de túnel SSH para acceso al gateway
Repositorios:
- Infraestructura: openclaw-terraform-hetzner
- Configuración de Docker: openclaw-docker-config
Este enfoque complementa la configuración de Docker anterior con despliegues reproducibles, infraestructura versionada y recuperación automatizada ante desastres.
Siguientes pasos
- Configurar canales de mensajería: Canales
- Configurar el Gateway: Configuración de Gateway
- Mantener OpenClaw actualizado: Actualización