OpenClaw (Clawdbot) en un VPS en 5 minutos
¿Te imaginas tener tu propio “ChatGPT personal” y que recuerda lo que habláis y además puedes escribirle por Telegram?
Eso es OpenClaw (hasta el 27 de enero de 2026: Clawdbot): un asistente AI autoalojado que corre en tu infraestructura y se integra con tus apps de mensajería.
En este post te llevo de cero a funcionando con un VPS de Hetzner (también lo puedes hacer en OVH; es cuestión de preferencias o dónde ya tengas alojamientos) y una configuración básica con Telegram + Anthropic (Claude).
Tiempo estimado: 15–20 min
Coste aproximado: ~€5/mes + suscripción de Claude
Nivel: principiante
Nota: OpenClaw requiere Node.js 22+
Qué vas a conseguir al final
- Un servidor en Hetzner con Ubuntu.
- OpenClaw instalado y corriendo en segundo plano como servicio/daemon.
- Un bot de Telegram que te responde con tu asistente.
- OpenClaw autenticado contra Claude vía API Key (formato
sk-ant-...).
Paso 1: Crear tu servidor en Hetzner u OVH
Entra en Hetzner Cloud
Ve a hetzner.com/cloud, pulsa Get started y crea cuenta si no tienes.
OJO: Si creas una cuenta nueva Hetzner te va a pedir un primer pago de 20 EUR para verificar tu identidad y posiblemente que subas copia de tu DNI.
Crea un proyecto
En la consola, + New Project y llámalo openclaw (o similar).
Crea el servidor
Dentro del proyecto, botón grande + Create Server.

Elige ubicación y tipo
Recomendación para empezar con el menor coste:
- Location: Alemania (por coste)
- Image: Ubuntu 24.04
- Type: Shared vCPU → CX33 (4 vCPU, 8GB RAM)
- IPv4: ON
El plan CX33 aparece habitualmente alrededor de €5.49/mes + IVA con 4 vCPU y 8GB RAM en Alemania.

El precio de OVH es algo inferior y funciona igual:

Añade tu clave SSH
En tu Mac (o Linux), crea una clave si no tienes:
ssh-keygen -t ed25519 -C "tu@email.com"
Pulsa Enter para aceptar la ruta por defecto. Luego muestra la clave pública:
cat ~/.ssh/id_ed25519.pub
Copia el contenido y pégalo en el campo de SSH keys de Hetzner.
Crea el servidor y guarda la IP
Ponle nombre (por ejemplo openclaw), crea el servidor, espera a que arranque y copia su IPv4.
Paso 2: Conectar e instalar OpenClaw
Entra por SSH
ssh root@TU_IP_DEL_SERVIDOR
Si guardaste la clave en otra ruta:
ssh -i ~/ruta/a/tu_clave root@TU_IP_DEL_SERVIDOR
Actualiza el sistema
apt update && apt upgrade -y
Instala Node.js 22
Una forma común es usar NodeSource (tal como en tu borrador):
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
apt install -y nodejs
Comprueba:
node -v
Deberías ver v22.x.x.
Alternativa: usar el instalador de OpenClaw “quick install”, que detecta requisitos (incluye Node 22+ en Linux) y ejecuta onboarding. [docs.openclaw.ai],
Instala OpenClaw
npm install -g openclaw@latest
Ejecuta el asistente de configuración (onboarding)
openclaw onboard --install-daemon
Este comando está indicado como “siguiente paso” cuando instalas OpenClaw y te deja el proceso corriendo en segundo plano.
Paso 3: Configurar Telegram y Whatsapp
Crea un bot en Telegram
- Abre Telegram y busca @BotFather
- Teclea
/newbot - Ponle:
- Nombre (ej. “My Assistant”)
- Usuario (ej.
tuusuario_openclaw)
- Copia el bot token que te entrega BotFather
Obtén tu Telegram user ID
Busca @userinfobot, envíale cualquier mensaje y copia tu ID numérico.
Introduce credenciales en el configurador
Cuando OpenClaw lo pida en el onboarding:
- Pega el bot token
- Configura
allowFromcon tu user ID (para que solo tú puedas hablar con el bot)
Recomendación: mantener
allowFrombien cerrado es una buena práctica de seguridad.
- Ejecuta:
openclaw login
- Cuando el wizard lo pida, verás un QR en tu terminal
- En el móvil: WhatsApp > Settings > Linked Devices > Link a Device
- Escanea el QR
- Conectado: lo que te envíes a ti (o lo que recibas, según ajustes) pasa por tu IA
Seguridad (Pairing / Emparejamiento)
Por defecto, OpenClaw no responde a cualquiera. Usa un sistema de pairing para verificar quién puede hablar con el bot.
Cuando alguien nuevo escribe, recibe un código de emparejamiento. Tú debes aprobarlo.
Ver solicitudes pendientes:
openclaw pairing list whatsapp
Aprobar a alguien:
openclaw pairing approve whatsapp ABC123
Ver aprobados:
openclaw pairing show whatsapp
Esto evita que desconocidos usen tu IA (y consuman tus créditos/tokens).
Paso 4: Añade tu clave de Anthropic (Claude)
Crea tu API Key de Anthropic
Entra en el panel de Anthropic (Console) y genera una API key. Normalmente empiezan por sk-ant-....
Configúrala en el wizard
Cuando el asistente de OpenClaw pregunte por autenticación de Anthropic, elige API Key y pégala.
Paso 5: Probar
Completa el configurador
Contesta las preguntas restantes (en general, aceptar suele ser suficiente).
Verifica que funciona
openclaw status
Pruébalo
Abre Telegram, busca tu bot y envíale un “Hello”. Si todo está OK, te responderá 🎉
Paso 6: Configura la memoria del bot
Tu bot, al principio, no sabe nada de ti: preferencias, horarios, estilo… nada. La buena noticia: puede aprender.
OpenClaw guarda memorias en archivos de texto simples:
MEMORY.md→ hechos a largo plazo (“prefiere reuniones entre 9 y 14”)memory/2026-01-24.md→ contexto y notas del día
Todo vive dentro de tu workspace (por defecto ~/openclaw).
Cómo “entrenarlo”
- Díselo explícitamente: “Recuerda que prefiero reuniones de 9 a 14”
- O edita el archivo directamente:
~/openclaw/MEMORY.md
Ejemplo:
# Sobre mí
- Prefiero reuniones entre 9:00 y 14:00
- Me gusta que la tecnología “simplemente funcione”
- Prefiero listas con viñetas frente a párrafos largos
Paso 7: Añade Skills (superpoderes)
Las skills convierten tu bot de “chat” a “automatización real”.
Ver skills disponibles:
openclaw skills list
Ejemplos típicos:
- Web Search (búsqueda en Internet)
- GitHub (repos, issues, PRs)
- Gmail (leer/enviar emails)
- Discord/Slack (publicar en canales)
- Weather (previsión)
- Calendar (agenda)
Para activar una skill, edita ~/.openclaw/openclaw.json:
{
"skills": {
"entries": {
"web-search": { "enabled": true },
"github": {
"enabled": true,
"env": { "GITHUB_TOKEN": "your_token_here" }
}
}
}
}
Algunas skills necesitan API keys (como GitHub). Revisa la documentación de cada una.
Paso 8: El secreto de la memoria (búsqueda semántica)
Los modelos tienen “ventana de contexto”: no pueden tener todo en mente para siempre. Con el tiempo, detalles antiguos se pierden del contexto de conversación.
La solución es la búsqueda semántica: en lugar de buscar por palabras exactas (“meeting”), entiende la intención. Por ejemplo: “¿Cuándo me gusta tener reuniones?” y encuentra el dato aunque no uses el término exacto.
Para habilitarla necesitas un proveedor de embeddings (OpenAI suele ser barato y eficaz). Ejemplo de configuración:
{
"agents": {
"defaults": {
"memorySearch": {
"provider": "openai",
"model": "text-embedding-3-small",
"remote": {
"apiKey": "your_openai_key"
}
}
}
}
}
Cuando esto está activo, tu bot puede “recordar” semanas de historial con precisión, porque busca significado, no keywords.
Paso 9: Securiza tu instalación de OpenClaw
Resultados después de aplicar esta configuración:
- ✅ Sin SSH público
- ✅ Sin puertos web públicos
- ✅ Acceso al servidor únicamente vía Tailscale
- ✅ El bot responde solo al propietario
- ✅ Servidor de IA privado y listo para jugar
Requisitos previos
- Una cuenta en Tailscale (gratuita para uso personal).
Consejo: mantén dos sesiones abiertas al VPS mientras sigues la guía. Si algo se corta, la sesión secundaria te puede salvar.
Cierra SSH a cal y canto
Objetivo: solo claves, sin contraseñas ni root directo.
Edita la configuración de SSH:
sudo nano /etc/ssh/sshd_config
Asegúrate de establecer explícitamente:
PasswordAuthentication no
PermitRootLogin no
Valida y recarga:
sudo sshd -t && sudo systemctl reload ssh
Opcional recomendado: limitar usuarios permitidos: Añade AllowUsers tu_usuario para restringir aún más el acceso.
Firewall “denegar por defecto”
Objetivo: bloquear todo el tráfico entrante salvo lo que permitas explícitamente.
sudo apt update
sudo apt install ufw -y
🔒 Evita el autobloqueo: permite SSH antes de activar UFW.
sudo ufw allow OpenSSH
Configura política por defecto y activa:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
Protección anti fuerza bruta
Objetivo: banear IPs tras varios intentos fallidos.
sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban
Extra: puedes ajustar /etc/fail2ban/jail.local para sshd con maxretry, bantime, etc.
Instala Tailscale
Objetivo: crear tu VPN privada.
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
Verifica:
tailscale status
Toma nota de tu IP privada de Tailscale (rango 100.64.0.0/10).
SSH solo por Tailscale
Objetivo: dejar de exponer SSH al público.
Permite SSH únicamente desde la red de Tailscale y retira la regla genérica:
# Verifica antes que Tailscale funciona
tailscale status
# Abre SSH solo para Tailscale
sudo ufw allow from 100.64.0.0/10 to any port 22 proto tcp
# Retira la regla de SSH público
sudo ufw delete allow OpenSSH
Haz privados los puertos web
Objetivo: que tu app sea accesible solo desde tus dispositivos unidos a Tailscale.
sudo ufw allow from 100.64.0.0/10 to any port 443 proto tcp
sudo ufw allow from 100.64.0.0/10 to any port 80 proto tcp
Nota: si usas un reverse proxy (Nginx/Caddy/Traefik), esta regla mantiene HTTP/HTTPS privado en tu red.
Desactiva IPv6
Objetivo: reducir superficie de ataque si no usas IPv6.
sudo sed -i 's/IPV6=yes/IPV6=no/' /etc/default/ufw
echo "net.ipv6.conf.all.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p && sudo ufw reload
Solo si tienes claro que no necesitas IPv6. Si usas servicios que dependan de IPv6, omite este paso.
Restringe el bot al propietario
Objetivo: que solo tú puedas escribirle.
Configura la política (por ejemplo en ~/.openclaw/config.json):
{
"dmPolicy": "allowlist",
"allowFrom": ["YOUR_TELEGRAM_ID"],
"groupPolicy": "allowlist"
}
Sustituye YOUR_TELEGRAM_ID por tu ID real de Telegram.
Si quieres controlar la langosta desde Whastapp añade solo los números de teléfono que pueden hablar con el asistente:
{
"channels": {
"whatsapp": {
"dmPolicy": "allowlist",
"allowFrom": ["+34XXXXXXXXX"]
}
}
}
Arregla permisos de credenciales
Objetivo: que nadie pueda leer tus secretos.
chmod 700 ~/.openclaw/credentials
chmod 600 .env
Ajusta las rutas si tu .env está en otro directorio del proyecto.
Auditoría de seguridad del bot
Objetivo: detectar fallos que se te hayan pasado.
openclaw security audit --deep
Verificaciones rápidas
Comprueba que todo está en su sitio:
# Reglas del firewall
sudo ufw status
# Puertos en escucha
ss -tulnp
# Estado de la redVPN
tailscale status
# Salud del bot
openclaw doctor
Deberías ver:
- SSH escuchando solo en la interfaz de Tailscale.
- 80/443 accesibles únicamente desde la red 100.64.0.0/10.
- OpenClaw operativo y con políticas de DM/grupos en allowlist.
Checklist final
- ✅ No hay SSH público.
- ✅ No hay puertos web públicos.
- ✅ El servidor solo es alcanzable a través de Tailscale.
- ✅ El bot responde solo a tu usuario.
- ✅ Tienes un servidor de IA privado en ~30 minutos.
Ahora sí: puedes empezar a jugar. Antes, no. 😉
Buenas prácticas opcionales pero recomendadas
- MFA en Tailscale y revocar dispositivos que ya no uses.
- Actualizaciones automáticas en Ubuntu (
unattended-upgrades). - Logs centralizados y alertas (por ejemplo, con
journalbeat/vector). - Cambio de puerto SSH (no es seguridad real, pero reduce ruido de escaneos).
Paso 10: Backups
Tu bot no solo “sabe cosas”: acumula conocimiento útil con el tiempo. Y eso —tu configuración, tus memorias y tu historial— es un activo. Como cualquier activo, si no lo respaldas, tarde o temprano lo perderás: un error humano, una actualización desafortunada, un disco lleno, un borrado accidental… y adiós a semanas (o meses) de contexto.
En este paso vamos a dejar tu sistema preparado para que, pase lo que pase, puedas restaurar tu bot y seguir trabajando como si nada.
Qué deberías respaldar (lo importante de verdad)
Piensa en tu bot como en un “cerebro” con varias capas. Estas rutas cubren lo esencial:
~/.openclaw/openclaw.json— Tu configuración (ajustes, endpoints, preferencias).~/.openclaw/MEMORY.md— Memorias a largo plazo (lo que quieres que el bot “recuerde”).~/.openclaw/memory/— Logs diarios de conversación (útiles para auditoría y aprendizaje).~/.openclaw/agents/main/sessions/— Historial completo (sesiones, contexto y trazabilidad).
Regla práctica: si te dolería perderlo, va al backup.
Método simple y efectivo: Git en un repo privado
Si tu objetivo es “tener una copia segura y versionada”, Git es perfecto: te permite volver atrás, comparar cambios y mantener trazabilidad.
Ejemplo rápido
cd ~/.openclaw
git init
git add openclaw.json
git commit -m "Backup config"
git remote add origin your-private-repo-url
git push
Recomendación clave: que sea un repositorio privado. Tu configuración puede incluir detalles sensibles (rutas, tokens, endpoints, etc.). (Consejo editorial: si hay secretos, considera excluirlos o cifrarlos; ver “Buenas prácticas” más abajo.)
📌 Sobre el flujo git init → git remote add → git push, puedes ver una explicación de referencia en la guía de GitHub y la documentación oficial de Git. (GitHub Git Guides – git init, git-scm: git-init)
Backups automatizados: cron + rsync
Si lo que quieres es “copiar todo lo importante cada día” (carpetas incluidas), automatizar con cron y rsync es una solución sólida y ligera.
Ejemplo: copia diaria a las 03:00
0 3 * * * rsync -av ~/.openclaw/ ~/backups/openclaw/
Por qué rsync funciona bien aquí: sincroniza diferencias de forma eficiente y el modo archivo (-a) preserva metadatos (permisos, timestamps, etc.). En muchas guías se recomienda también loguear la salida y, si quieres espejo exacto, usar --delete con cuidado (porque puede borrar en destino lo que hayas borrado en origen).
Consejo práctico (opcional): añade logging para detectar fallos sin abrir la terminal:
0 3 * * * rsync -av ~/.openclaw/ ~/backups/openclaw/ >> ~/backups/openclaw/backup.log 2>&1
Restauración: vuelve a estar operativo en minutos
La restauración depende de si usaste Git, rsync o ambos:
- Si usaste Git (config): recuperas
openclaw.jsondesde tu repo y lo vuelves a colocar en~/.openclaw/. - Si usaste rsync (carpetas): copias de vuelta desde
~/backups/openclaw/hacia~/.openclaw/(y lo mismo con~/openclaw/si lo estás respaldando).
Comandos útiles
Gestión del servidor
openclaw status# estado generalopenclaw logs --follow# logs en vivoopenclaw gateway restart# reiniciaropenclaw health# checks de salud
Comandos de chat (en Telegram)
/new→ conversación nueva/model→ cambiar modelo/compact→ compactar conversaciones largasstop→ cancelar una tarea en curso
Solución de problemas
“El bot no responde”
- Mira estado:
openclaw status --all
- Revisa logs:
openclaw logs --follow
“Quiero rehacer la configuración”
openclaw reset
openclaw onboard --install-daemon
“SSH me pide password”
Tu clave SSH no se está usando. Fuerza la clave:
ssh -i /ruta/a/tu_key root@TU_IP_DEL_SERVIDOR
Qué hacer después
- Personaliza la “personalidad” del bot en
~/openclaw/SOUL.md - Añade información útil sobre ti y tu contexto en
~/openclaw/USER.md
Información basada en la publicación OpenClaw Installer, la documentación de openclaw.ai y el uso de GitHub para hacer backups (GitHub Git Guides – git init).
