search
AILinux5 min lectura

OpenClaw: cómo montar un asistente de IA self-hosted al que le hablas por Telegram

Pablo IB

TL;DR: OpenClaw es un gateway self-hosted que conecta Telegram, Discord, WhatsApp y más a modelos de IA. Lo instalé en un container Podman, configuré acceso móvil por Tailscale, y en una tarde tenía un asistente respondiéndome por Telegram. Te cuento cómo, qué falló, y cómo lo arreglé.


¿Qué es OpenClaw?

OpenClaw es un gateway de IA self-hosted. Lo instalas en tu máquina, lo conectas a tus canales de mensajería (Telegram, Discord, WhatsApp, Signal, Slack…), y configuras qué modelo de IA usa. El gateway se queda corriendo 24/7, y tú le hablas desde donde quieras.

No es un modelo. No es un wrapper. Es un middleware que gestiona sesiones, memoria, plugins, skills, y tools entre tus chats y tu proveedor de IA favorito.

¿En qué se diferencia de Claude Code o Pi? Claude Code y Pi son agentes de código — están optimizados para editar, compilar y debuggear. OpenClaw es un agente personal general-purpose. Le puedes preguntar sobre el tiempo, pedirle que redacte un email, que organice tu calendario, o que programe un script. Y le hablas por Telegram desde el metro.


Lo que monté

Tu móvil (Telegram)
OpenClaw Gateway (Podman container, puerto 18789)
Modelo IA (z.ai API → GLM-5-turbo)

El gateway corre en mi laptop (CachyOS, RTX 5080). El modelo puede ser local (Ollama) o cloud (z.ai, OpenAI, Anthropic). Yo uso z.ai como proveedor principal con GLM-5-turbo y GPT-5.4 como fallback.


Paso 1: Instalar OpenClaw

# Instalar via npm
npm install -g openclaw

# Verificar
openclaw --version

OpenClaw recomienda usar su script oficial de Podman (scripts/run-openclaw-podman.sh con --userns=keep-id). Yo ya tenía un container distrobox con Debian Bookworm, así que instalé dentro:

# Dentro del container
npm install -g openclaw
openclaw --version  # 2026.5.12

La primera piedra: permisos del container

Si usas Podman/distrobox, el gateway corre como root dentro del container pero los archivos del host son de tu usuario. Esto causa “suspicious ownership” — OpenClaw bloquea plugins cuando detecta que los archivos no pertenecen al usuario que ejecuta el proceso.

La solución más simple: ejecutar el gateway como tu usuario dentro del container.

# En el systemd service
ExecStart=/usr/bin/podman exec -u pablo openclaw bash -c '...'

Ese -u pablo ahorra horas de debugging. Lo encontré después de 3 horas de chown -R root:root que se revertían solos.


Paso 2: Configurar el gateway

# Primera configuración
openclaw configure

Esto te pregunta:

  • Modelo principal → yo elegí openai/glm-5-turbo vía z.ai
  • Modelo de compactionopenai/glm-4.7 (más barato, resume contexto)
  • API key → la de tu proveedor
  • Token del gatewaygenera uno largo (32+ caracteres). No uses “password123”.

Configurar acceso LAN (para móvil)

Por defecto el gateway solo escucha en localhost. Para acceder desde el móvil por WiFi:

# Cambiar bind de loopback a lan
openclaw config set gateway.bind lan

El archivo de config

Todo vive en ~/.openclaw/openclaw.json. Aquí está lo esencial:

{
  "gateway": {
    "mode": "local",
    "bind": "lan",
    "port": 18789
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "openai/glm-5-turbo",
        "fallbacks": ["openai/gpt-5.4-mini", "openai/glm-4.5-air"]
      },
      "compaction": {
        "model": "openai/glm-4.7"
      }
    }
  }
}

Paso 3: Acceso desde el móvil (Tailscale)

El gateway ya escucha en la red local. Pero si estás fuera de casa, necesitas acceso remoto. Tailscale lo resuelve en 2 minutos.

# Instalar Tailscale (si no lo tienes)
sudo pacman -S tailscale
sudo systemctl enable --now tailscaled
tailscale up

# Exponer el gateway con HTTPS
tailscale serve https / http://127.0.0.1:18789

Ahora puedes acceder desde el móvil en:

https://cachyos-rog.tailXXXX.ts.net

Tailscale da HTTPS automático — el navegador necesita contexto seguro para algunas features del dashboard.

Aprobar el dispositivo móvil

Cuando abres el dashboard desde el móvil, OpenClaw pide pairing. Tienes que aprobarlo desde el host:

openclaw devices approve <device-id>

El device ID aparece en el dashboard o en los logs del gateway.


Paso 4: Conectar Telegram

Telegram es el canal más rápido de configurar:

  1. Habla con @BotFather en Telegram
  2. Crea un bot nuevo: /newbot → nombre → username
  3. Copia el token que te da
  4. Configúralo en OpenClaw:
openclaw channels login telegram

Pega el token cuando te lo pida. Reinicia el gateway. Listo — ya puedes hablar con tu asistente por Telegram.


Paso 5: El systemd service

Para que el gateway arranque con el sistema:

# ~/.config/systemd/user/openclaw-gateway.service
[Unit]
Description=OpenClaw Gateway (Podman)
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/podman exec -u pablo openclaw bash -c \
  'export PATH="$PATH:/home/pablo/.npm-global/bin"; \
   openclaw gateway run --port 18789 --bind lan --force & \
   for i in $(seq 1 20); do sleep 1; \
     curl -s http://127.0.0.1:18789/health >/dev/null 2>&1 && break; \
   done; \
   while curl -s http://127.0.0.1:18789/health >/dev/null 2>&1; do sleep 5; done'
ExecStop=/usr/bin/podman exec openclaw bash -c \
  'kill $(pgrep -f openclaw-gateway) 2>/dev/null; exit 0'
Restart=on-failure
RestartSec=5

[Install]
WantedBy=default.target
systemctl --user daemon-reload
systemctl --user enable --now openclaw-gateway

Las piedras que encontré

ProblemaCausaSolución
Plugins bloqueados (“suspicious ownership”)Container corre como root, archivos son del host user-u pablo en podman exec
Dashboard dice “token mismatch”Roté el token pero el navegador lo cacheóBorrar datos del sitio en el navegador
Telegram no respondeToken mal configuradoopenclaw channels login telegram otra vez
Gateway crash en restartConfig inválido tras manual editopenclaw config validate antes de reiniciar
Permisos se reviertenContainer escribe como root-u pablo (sí, este aparece dos veces, es la lección)

El veredicto después de una semana

OpenClaw no es perfecto. La configuración tiene edges afilados (permisos, plugins, schema validation estricta). Pero una vez funciona, funciona. Mi asistente “Kiwi” me responde por Telegram, usa memoria persistente, tiene dreaming nocturno, y sabe quién soy.

El setup completo me llevó una tarde (con las piedras). Sin las piedras, habría sido 30 minutos.


Comandos de referencia

# Health check
curl http://127.0.0.1:18789/health

# Status completo
openclaw status --deep

# Security audit
openclaw security audit

# Validar config
openclaw config validate

# Logs en vivo
openclaw logs --follow

# Doctor (diagnóstico)
openclaw doctor --fix