Anexo I: OpenClaw + Telegram (Abacombot) - De 0 a Avanzado

Asistente Sysadmin por chat con pairing, allowlists y sesiones aisladas

Author

Diego Saavedra

Published

February 8, 2026

Anexo I: OpenClaw + Telegram (Abacombot) - De 0 a Avanzado

Introducción

Este anexo te guía para montar un asistente tipo Sysadmin por Telegram, usando OpenClaw (Gateway + canales + sesiones + skills) en Docker.

El bot de Telegram se llama por defecto Abacombot (configurable en BotFather). En este documento, Abacombot se refiere solo al bot de Telegram (no a un usuario Linux).

Enfoque de seguridad:

  • DMs protegidos con pairing.
  • Grupos con mention gating (requireMention: true) por defecto.
  • Control de acceso por allowlists (DM y grupos).

Ubuntu Server LTS recomendado: 22.04 o 24.04.


Objetivos

  • Clonar OpenClaw y levantar el Gateway en Docker.
  • Conectar Telegram al Gateway con un token de BotFather.
  • Aplicar postura minima de seguridad (pairing + mention gating + allowlists).
  • Verificar salud, logs y troubleshooting basico.

Requisitos

En Telegram

  • Una cuenta de Telegram.
  • Token del bot creado con @BotFather.

En el servidor (Ubuntu Server LTS)

  • Acceso SSH.
  • Docker Engine + Docker Compose v2.
  • Espacio en disco para imágenes y logs.

Paso 1: Crear el bot en Telegram (BotFather)

  1. Abre Telegram y busca @BotFather.
  2. Ejecuta /newbot y define:
    • Nombre: Abacombot (o el que prefieras)
    • Username: debe terminar en bot (ej: abacom_sysadmin_bot)
  3. BotFather te entregará un token tipo: 123456789:AA...REDACTED...xyz
WarningADVERTENCIA CRÍTICA

No pegues el token en repositorios ni capturas publicas.

Lo que podría salir mal: - Un atacante toma control del bot. - Se filtran datos del servidor por chat.

Cómo prevenirlo: 1. Guarda el token como secreto (archivo root-only o secret manager). 2. Usa dmPolicy: "pairing". 3. Usa allowlists (DM y grupos) y mention gating en grupos.


Paso 2: Clonar OpenClaw

BASH
1$ git clone https://github.com/openclaw/openclaw.git
2$ cd openclaw
1
git clone descarga el repo oficial de OpenClaw.
2
cd openclaw entra al directorio donde viven docker-setup.sh y docker-compose.yml.

Paso 3: Levantar OpenClaw en Docker (recomendado)

BASH
1$ ./docker-setup.sh
1
docker-setup.sh construye la imagen, ejecuta onboarding y deja el gateway listo vía Docker Compose (además escribe .env).
Note📝 NOTA

Nuevas opciones de docker-setup.sh (v2.0+):

El script ahora soporta flags adicionales: - --skip-onboard: Solo construye la imagen sin ejecutar el wizard - --production: Configura el gateway para producción (sin volúmenes de desarrollo) - --with-monitoring: Incluye contenedores de Prometheus y Grafana

Si necesitas levantar el gateway manualmente (sin el script), la ruta de referencia es:

BASH
1$ docker build -t openclaw:local -f Dockerfile .
2$ docker compose run --rm openclaw-cli onboard
3$ docker compose up -d openclaw-gateway

1
docker build crea una imagen local para el gateway.
2
openclaw-cli onboard corre el wizard dentro del contenedor CLI.
3
docker compose up -d openclaw-gateway inicia el gateway en segundo plano.

Paso 4: Conectar Telegram al Gateway (token)

BASH
1$ docker compose run --rm openclaw-cli channels add --channel telegram --token "<token>"
1
channels add (telegram) registra el bot token para que el gateway pueda hacer polling al Bot API.

Paso 5: Postura mínima de seguridad (recomendada)

Config mínima (conceptual) para Telegram:

JSON5
{
  channels: {
    telegram: {
      enabled: true,
      dmPolicy: "pairing",
      groups: { "*": { requireMention: true } },
    },
  },
}
1
dmPolicy + requireMention evita que DMs desconocidos o mensajes en grupos sin mencion activen el bot.

Nota importante sobre grupos:

  • En OpenClaw, channels.telegram.groupPolicy por defecto es “allowlist”. Si vas a usar grupos, define groupAllowFrom (quiénes pueden escribir) o cambia explícitamente a groupPolicy: "open" si tu objetivo es permitir a cualquiera del grupo.

Paso 6: Verificación (salud + logs)

BASH
1$ docker compose exec openclaw-gateway node dist/index.js health --token "$OPENCLAW_GATEWAY_TOKEN"
2$ docker compose logs -n 200 openclaw-gateway
1
health ejecuta el probe oficial del gateway usando el token.
2
docker compose logs muestra logs recientes del gateway (errores de token, red, Bot API, etc.).

Paso 7: Pairing (primer DM)

Con dmPolicy: "pairing", el primer DM requiere aprobación.

BASH
1$ docker compose run --rm openclaw-cli pairing list telegram
2$ docker compose run --rm openclaw-cli pairing approve telegram **CODE**
1
pairing list lista solicitudes pendientes para Telegram.
2
pairing approve aprueba el código y habilita el DM.

Troubleshooting

El bot no responde

Checklist rápido:

  • El gateway esta arriba: docker compose ps
  • Hay token configurado y red a api.telegram.org.
  • Si es DM: pairing pendiente.
  • Si es grupo: requiere mención y (si aplica) allowlist de grupo/senders.
BASH
1$ docker compose ps
2$ docker compose logs -n 200 openclaw-gateway
3$ docker compose run --rm openclaw-cli channels status

1
docker compose ps confirma contenedores y estado.
2
logs entrega el error real (token, DNS, 401/429, etc.).
3
channels status muestra estado del canal Telegram y warnings de config.

Skills (Habilidades) de OpenClaw

Las Skills extienden las capacidades del bot permitiéndole ejecutar acciones específicas.

Instalar Skills

BASH
1$ docker compose run --rm openclaw-cli skills list
2$ docker compose run --rm openclaw-cli skills install system-monitor
3$ docker compose run --rm openclaw-cli skills enable system-monitor

1
skills list muestra skills disponibles en el registro
2
skills install descarga e instala una skill específica
3
skills enable activa la skill para el gateway

Skills recomendadas para Sysadmin

Skill Descripción Comando de ejemplo
system-monitor Monitorización básica del sistema @bot status
docker-manager Gestión de contenedores @bot docker ps
log-viewer Visualización de logs @bot logs nginx
security-audit Auditoría de seguridad básica @bot audit ssh

Crear una Skill personalizada

Estructura básica de una skill:

YAML
# skills/mi-skill.yaml
name: mi-skill
version: 1.0.0
description: Mi skill personalizada para administración
triggers:
  - regex: "^status (\w+)$"
    action: check_service
actions:
  check_service:
    command: "systemctl status {{group.1}} --no-pager"
    response_template: "Estado de {{group.1}}: {{output}}"
Tip💡 RECOMENDACIÓN

Gestión de Skills: - Usa skills oficiales del registro para funciones comunes - Crea skills personalizadas solo para casos específicos de tu infraestructura - Documenta las skills personalizadas en tu equipo


Referencias

Code Appendix