Cómo instalar OpenClaw en Ubuntu (servidor 24/7)

Para instalar OpenClaw en Ubuntu, corre curl -fsSL https://openclaw.ai/install.sh | bash y después openclaw onboard --install-daemon. Eso te deja el gateway instalado y registrado como servicio systemd, activo tras cada reinicio.
Ubuntu es de los mejores lugares para correrlo: lo dejas como servicio, sobrevive reinicios y queda activo sin que tengas que abrir nada. Esta guía es el camino específico para Ubuntu, con las tres cosas que se rompen de verdad en un servidor (la unidad de systemd, el acceso remoto y la memoria). Si buscas el panorama completo, está en la cómo instalar OpenClaw.
Requisitos
- Ubuntu de 64 bits (20.04, 22.04 o 24.04 LTS)
- Node.js 22.22.3+, 24.15+ o 25.9+. La documentación recomienda Node 26, y el script lo instala por ti si falta
- Al menos 4 GB de RAM (8 GB para uso intensivo)
- Una API key de tu proveedor de IA, o un modelo local
Fíjate en el número de parche: no basta con "tener Node 22", hace falta la 22.22.3. Un node --version que devuelve v22.14 parece cumplir y no cumple.
Un aviso si eres de los que usa Bun para todo: Bun no puede ejecutar OpenClaw, porque no ofrece node:sqlite. Sirve como instalador de dependencias, no como runtime.
Opción A: script automático
La forma más rápida. Detecta Ubuntu, instala Node si hace falta y deja OpenClaw listo:
curl -fsSL https://openclaw.ai/install.sh | bashAl terminar arranca el onboarding, que te pide la API key, el puerto del gateway (18789 por defecto) y los canales que quieras conectar. Si prefieres instalar ahora y configurar más tarde:
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --no-onboardOpción B: instalación manual con npm
Si prefieres controlar la versión de Node, instálalo primero. El apt de Ubuntu suele traer una versión vieja, así que lo más limpio es fnm:
curl -fsSL https://fnm.vercel.app/install | bash
exec $SHELL
fnm install 26 && fnm use 26
node --versionY después el paquete global. Ojo con el flag, que depende de tu versión de npm:
# npm 12 o npm 11.16+
npm i -g openclaw@latest --allow-scripts=openclaw
# npm 11.15 o anterior
npm i -g openclaw@latestExiste además un instalador de prefijo local que deja OpenClaw y su propio Node bajo ~/.openclaw, sin depender del Node del sistema, con curl -fsSL https://openclaw.ai/install-cli.sh | bash. Es la opción cómoda cuando el servidor ya tiene un Node que no quieres tocar.
Dejarlo corriendo 24/7 con systemd
Aquí está la ventaja de Ubuntu como servidor. Cualquiera de estas tres formas registra el servicio:
openclaw onboard --install-daemon
openclaw gateway install
openclaw configure # y eliges "Gateway service"Y aquí está el detalle que hace perder una tarde: lo que instala es una unidad de usuario, no de sistema, y se llama openclaw-gateway.service. Si buscas systemctl status openclaw te vas a encontrar un "Unit not found" y vas a pensar que la instalación falló. Los comandos correctos llevan --user:
systemctl --user status openclaw-gateway.service
systemctl --user is-enabled openclaw-gateway.service
journalctl --user -u openclaw-gateway.service -fHay una segunda trampa, y es la que rompe el "24/7" de verdad: una unidad de usuario muere cuando cierras la sesión SSH, salvo que habilites el linger para tu usuario. En un servidor headless esto no es opcional:
sudo loginctl enable-linger "$(whoami)"Para hosts compartidos o siempre activos existe también la variante de unidad de sistema, documentada en el runbook del gateway. La unidad escrita a mano funciona, pero pierdes el dimensionado adaptativo de heap que sí escribe el instalador gestionado, así que prefiere openclaw gateway install salvo que tengas una razón concreta.
Verificar la instalación
openclaw --version
openclaw doctor
openclaw gateway statusopenclaw doctor es el primer comando ante cualquier problema: revisa Node, el gateway, los puertos y la configuración, y te dice qué falta en vez de fallar en silencio. También sirve para reparar o migrar una instalación vieja.
Acceso remoto sin abrir puertos
La interfaz de control queda en http://127.0.0.1:18789/, accesible solo desde el propio servidor. Esa es la configuración segura y conviene dejarla así.
Para llegar desde tu portátil, el camino recomendado es un túnel SSH:
ssh -N -L 18789:127.0.0.1:18789 usuario@tu-servidorDespués abres http://127.0.0.1:18789/ en local y te autenticas con el secreto compartido configurado.
Si en cambio decides exponer el gateway a la red local o a tu tailnet, el gateway te va a exigir un secreto compartido (gateway.auth.token o gateway.auth.password), salvo que delegues la autenticación en un proxy de confianza. No es opcional, y está bien que no lo sea. La alternativa sin abrir nada es un túnel saliente, el mismo patrón que detallo en la guía de Raspberry Pi.
Tuning para VPS pequeños
Si los comandos se sienten lentos en una VM modesta o en un host ARM, activa la caché de compilación de módulos de Node:
export NODE_COMPILE_CACHE=/var/tmp/openclaw-compile-cache
mkdir -p /var/tmp/openclaw-compile-cache
export OPENCLAW_NO_RESPAWN=1La primera ejecución calienta la caché y las siguientes arrancan bastante más rápido. OPENCLAW_NO_RESPAWN=1 mantiene los reinicios del gateway dentro del proceso, lo que simplifica el seguimiento de PIDs en hosts pequeños.
Para que el servicio los tome, edita la unidad:
systemctl --user edit openclaw-gateway.service[Service]
Environment=OPENCLAW_NO_RESPAWN=1
Environment=NODE_COMPILE_CACHE=/var/tmp/openclaw-compile-cache
Restart=always
RestartSec=2
TimeoutStartSec=90Si el gateway se muere solo (exit 137)
Un exit 137 es el kernel matando el proceso por falta de memoria, y en VPS pequeños es el fallo más común. OpenClaw ya juega a tu favor aquí: sesga a sus procesos hijo para que el OOM killer los elija a ellos antes que al gateway, subiendo el oom_score_adj del hijo a 1000. Puedes comprobarlo:
cat /proc/<pid-del-hijo>/oom_score_adjY la unidad gestionada lleva OOMPolicy=continue, para que la muerte de un hijo transitorio no tumbe el servicio entero con todos sus canales.
Eso mitiga, no cura. Si tu VPS mata procesos de forma repetida, la respuesta es subir la memoria, bajar la concurrencia o poner límites explícitos con MemoryMax= en systemd.
Actualizar OpenClaw
npm update -g openclaw
systemctl --user restart openclaw-gateway.service
openclaw --versionSi instalaste con el script, volver a correrlo también trae la última versión. Y si quieres saltar entre el canal estable y el de desarrollo, existe openclaw update --channel dev y openclaw update --channel stable.
Esta es una de las rutas de instalación. El recorrido completo, con los requisitos, las otras plataformas y lo que suele fallar, está en la guía de OpenClaw.
Preguntas frecuentes
¿Qué versión de Ubuntu necesito?
Cualquiera de 64 bits razonablemente reciente, de 20.04 LTS en adelante. En un servidor, la versión headless va perfecta, no hace falta entorno de escritorio.
¿Server o Desktop?
Para un agente siempre activo, Ubuntu Server. Menos recursos y pensado para correr 24/7. Si quieres escritorio, existe además una app companion en formato .deb y AppImage.
¿Por qué systemctl status openclaw dice que no existe la unidad?
Porque el servicio es una unidad de usuario y se llama distinto. Usa systemctl --user status openclaw-gateway.service.
¿Por qué se detiene cuando cierro la sesión SSH?
Porque las unidades de usuario mueren con la sesión si no está habilitado el linger. Corre sudo loginctl enable-linger "$(whoami)" y vuelve a probar con un reinicio.
¿Cómo verifico que quedó bien instalado?
openclaw doctor revisa Node, el gateway, los puertos y la configuración. Suma openclaw gateway status para confirmar que está corriendo.
¿Cuánta RAM consume?
El mínimo recomendado son 4 GB, y con varios canales y skills activos conviene apuntar a 8 GB. Si ves exit 137, te quedaste corto de memoria.
Cierre
Con el script y --install-daemon, OpenClaw queda como servicio systemd de usuario en tu Ubuntu, accesible en el puerto 18789 y listo para conectarse a tus canales. Recuerda el linger si es headless, y el túnel SSH en vez de abrir el puerto. Para Docker, Windows o el panorama general, está la guía completa de OpenClaw.
Dos variantes de esto mismo, según lo que busques: si quieres que la instalación no toque el sistema, Docker Compose deja el servicio aislado y con volúmenes que persisten; y si lo que quieres es que consuma poco corriendo todo el día, la Raspberry Pi hace lo mismo con systemd por unos pocos vatios.
Fuentes
- Linux app, documentación oficial de OpenClaw
- Linux server, documentación oficial de OpenClaw
- Install, documentación oficial de OpenClaw
¿Tienes un proyecto en mente?
Trabajo con Laravel, WordPress, SEO técnico y servidores MCP. El primer paso es una llamada de descubrimiento, sin costo ni compromiso, donde me cuentas qué necesitas y te digo con honestidad si puedo ayudarte.