Cómo ejecutar Claude Code en un servidor VPS (y controlarlo desde el móvil)
Hoy casi todos usamos un agente de IA que corre dentro de nuestra computadora: abrimos la laptop, lanzamos Claude Code o Codex, trabajamos, cerramos la terminal y ahí termina todo. ¿Pero qué pasa si ese agente vive en un servidor y se queda escuchando 24/7?
Esa es la idea de esta guía: instalar Claude Code dentro de un VPS, mantenerlo vivo aunque cierres la sesión SSH, y poder mandarle tareas desde la app móvil o la app de escritorio. El resultado es un entorno de desarrollo en la nube, privado y personalizado.
Y aquí está la razón principal de hacerlo por esta ruta: usas tu suscripción actual. No pagas API por token, no pagas un servicio adicional de agentes. La suscripción que ya tienes, corriendo 24/7 en un servidor. Ese es todo el punto.
Existen proyectos pensados específicamente para esto —Hermes, OpenClaw— y al final de la guía te comento cuándo conviene cada uno. Pero primero vamos con la ruta directa.
Antes de empezar: ¿esto es para ti?
Voy a ser honesto, porque este flujo no le sirve a todo el mundo.
No lo necesitas si:
- Recién estás aprendiendo a programar.
- Trabajas en una empresa con un solo proyecto asignado.
- Te alcanza cómodamente con una máquina y una suscripción.
En esos casos el flujo local de toda la vida —escribes código, lo pruebas, lo subes a GitHub, se despliega— funciona perfecto y no hay razón para complicarlo.
Sí te sirve si:
- Llevas varios proyectos a la vez (freelancer, agencia, estudio de desarrollo).
- Tienes clientes que piden modificaciones constantes y pequeñas, y quieres poder resolverlas sin estar frente a la computadora.
- Quieres tareas programadas: un bot que scrapee sitios, revise X, Hacker News o newsletters, y te deje un resumen todos los días.
- Necesitas prototipos listos para demo: generas el código con IA, lo ejecutas en el mismo servidor y le mandas la URL al cliente para que lo pruebe.
- Quieres un asistente 24/7 conectado a tus datos (Gmail, Drive, etc.) que además pueda generar reportes y sitios dentro del mismo servidor.
Ese último punto es donde se nota la diferencia real. Claude Desktop o Codex Desktop se conectan a tus cuentas, sí, pero un agente que vive dentro de un servidor puede además instalar programas, ejecutar código y servirlo. Es otra liga.
Cómo funciona la arquitectura
El cambio conceptual es simple: tu laptop deja de ser el entorno de desarrollo y pasa a ser un cliente.
[Móvil / Laptop / Desktop] ──► [VPS con el agente] ──► [GitHub]
(cliente) (entorno de dev) │
│ ▼
└──────────► [Producción]
El agente —Claude Code, Codex, OpenCode, el que uses— vive dentro del servidor. Desde cualquier dispositivo le mandas instrucciones. Y como está en un Linux completo, puede clonar un repo privado, arreglarlo, mandarte un pull request y, lo más útil en mi opinión, darte un preview corriendo en una URL para que revises el cambio desde donde estés.
El problema: estos agentes no están hechos para esto
Aquí viene la parte honesta. Claude Code, Codex, OpenCode y similares no están diseñados para correr como servicio 24/7. Los puedes instalar sin problema en Linux, pero no tienen mecanismos para mantenerse ejecutando de forma permanente. Están pensados para una sesión interactiva que abres y cierras.
Por eso se les añade tmux (terminal multiplexer): un proyecto open source que permite lanzar varias terminales a la vez y, sobre todo, mantener procesos vivos en segundo plano aunque cierres la terminal o se caiga tu conexión SSH.
Es un hack. Lo digo claramente: estamos usando una herramienta para algo distinto a su propósito original. Pero funciona, y funciona lo suficientemente bien.
El tema de las suscripciones (importante)
Aquí hay una limitación que conviene conocer antes de gastar dinero:
| Herramienta | ¿Puedes usar tu suscripción con agentes externos (Hermes, OpenClaw)? |
|---|---|
| Claude Code | ❌ No. Anthropic no permite usar tu suscripción desde herramientas que no sean las suyas. |
| Codex (OpenAI) | ✅ Sí. Puedes usar tu suscripción con agentes externos. |
| OpenCode | ✅ Tiene suscripción por API que puedes conectar. |
Esto define tu ruta:
- Si quieres usar tu suscripción de Claude Code, tienes que quedarte dentro del ecosistema de Anthropic → esta guía (Claude Code + tmux + Remote Control).
- Si quieres un entorno más terminado, con interfaz gráfica, bots de Telegram/Discord/WhatsApp y ejecución como servicio real → Hermes u OpenClaw con Codex.
¿Y usar la API directamente? Se puede, pero es caro. Muy caro. Es exactamente la razón por la que varias empresas se dieron cuenta este último año de que estaban quemando presupuesto: el costo por uso vía API, cuando lo usas al mismo ritmo que una suscripción, no se parece en nada al precio de la suscripción.
¿Y Anthropic no tiene algo oficial para esto?
Sí: se llama Claude Channels. Permite instalar Claude Code en un servidor y comunicarte desde fuera vía MCP, es decir, delegarle tareas desde tu computadora o desde una aplicación externa. Suena exactamente a lo que necesitamos.
El problema es que está en research preview —modo beta— y lleva meses así, sin mucho movimiento aparente. Mi lectura: no parece haber demasiado incentivo para empujar por ese camino, porque en ese escenario el usuario termina pagando bastante menos por el mismo uso.
Así que la opción existe, pero no confiaría en ella para algo que necesitas que funcione hoy.
Arquitecturas recomendadas
Antes de tocar la terminal, dos formas de organizar esto.
Opción A: servidor de desarrollo + staging + producción
[VPS de desarrollo con IA] ──► [Staging] ──► [Producción]
Este es el flujo de desarrollo de toda la vida. Lo único que estamos haciendo es meter un modelo en el medio. El servidor de staging es una copia de producción donde pruebas los cambios antes de que salgan a producción.
Lo interesante es que este enfoque te obliga a tener un entorno de pruebas, que siempre debió existir. Y lo puede operar una sola persona: hace tres años esto requería varias personas —quienes escriben código, quienes revisan, y un especialista solo para producción.
Producción puede ser AWS, Vercel, tu propio VPS. Staging puede ser otro VPS, otro proyecto en Vercel, o incluso una máquina que tengas en tu casa encendida todo el tiempo. Da igual mientras esté disponible.
Opción B: un solo servidor para todo
Para proyectos pequeños y medianos, pagar varios servidores no siempre tiene sentido. Puedes usar uno solo instalando Dokploy, Coolify o Dokku, que funcionan como un "Vercel propio": cada proyecto se despliega aislado, sin interferir con los demás.
Para proyectos grandes no lo recomendaría. Para la mayoría de apps web típicas —frontend, API, base de datos— es más que suficiente.
Práctica: montando el entorno
1. Elegir el VPS
Puedes usar cualquier proveedor, o incluso una computadora en casa encendida 24/7. En mi caso uso Hostinger: si quieres adquirir uno con 10% de descuento, puedes entrar a hostinger.com/fazt o usar el código FAZT al momento de pagar.
Lo que más importa es la RAM. Y no es un detalle menor: vas a delegar múltiples tareas que corren en paralelo, cada sesión del agente consume memoria, y encima vas a estar levantando la aplicación para probarla. La RAM se llena rápido.
- RAM: lo más crítico. 8 GB es un punto de partida razonable.
- Disco: con 100 GB sobra.
- CPU: importa, pero menos que la RAM en este caso.
- Ancho de banda: poco relevante, porque la mayor parte del tráfico eres tú hablando con el agente.
Empieza con un plan estándar. Si lo ves lento o necesitas correr más cosas en paralelo, subes de plan en cualquier momento.
2. Conectarse y actualizar
ssh root@TU_IP_DEL_SERVIDOR
Como es un servidor en blanco, lo primero es actualizar:
sudo apt update && sudo apt upgrade -y
3. Crear un usuario (no uses root)
Esto no es opcional: Claude Code no se ejecuta como root.
sudo adduser dev
Te va a pedir contraseña y luego datos como nombre y dirección; puedes dejarlos en blanco. Confirma con Y al final.
Ahora le damos permisos de administrador:
sudo usermod -aG sudo dev
Verificamos:
su - dev
sudo whoami # debe responder: root
Y a partir de ahora nos conectamos con ese usuario:
ssh dev@TU_IP_DEL_SERVIDOR
4. Instalar Claude Code
Desde la documentación oficial, la instalación para Linux:
curl -fsSL https://claude.ai/install.sh | bash
Después hay que recargar el PATH para que el sistema reconozca el comando (el instalador te muestra la línea exacta a ejecutar). Verifica con:
claude --version
Ahora lo lanzamos:
claude
Elige la opción por defecto, selecciona tu suscripción, y te va a dar una URL. La copias, la abres en tu navegador, autorizas, y te devuelve un código que pegas de vuelta en la terminal. Cuando veas el mensaje de login satisfactorio, presiona Enter.
Te va a pedir varias confirmaciones sobre confiar en la carpeta actual. Acéptalas.
5. Arreglar el problema del sudo
Aquí te vas a topar con algo apenas le pidas al agente que instale cualquier cosa: Claude no puede ejecutar sudo porque queda esperando una contraseña que no puede escribir.
La solución es permitir que este usuario específico use sudo sin contraseña. Sal de Claude con Ctrl+C y ejecuta:
echo 'dev ALL=(ALL) NOPASSWD:ALL' | sudo tee /etc/sudoers.d/dev
sudo chmod 0440 /etc/sudoers.d/dev
Tres detalles importantes:
- Reemplaza
devpor el nombre de usuario que creaste en el paso anterior (en mi caso,fazt). Tiene que coincidir en los dos lugares. - El texto va entre comillas simples para que Bash no lo interprete.
- El
chmod 0440deja el archivo legible solo para root, que es lo correcto para un archivo de sudoers.
Ten claro lo que estás haciendo: le estás dando a este usuario acceso administrativo sin fricción, y por extensión al agente que corre bajo él. En un servidor dedicado a desarrollo es un trade-off razonable. En producción, no.
Ahora reanuda la sesión:
claude -c
Y ya puede instalar Docker, PostgreSQL o lo que necesite sin trabarse.
6. Primera prueba: que instale nginx
Una buena primera tarea para comprobar que todo funciona es pedirle que instale un servidor web:
"Instala nginx en este servidor"
Por defecto vas a ver abajo manual mode on, que significa que tienes que aprobar cada comando. Es incómodo. Cámbialo con Shift + Tab hasta llegar a auto mode on.
Cuando termine, entra a la IP de tu servidor en el navegador y deberías ver la página de bienvenida de nginx.
7. Activar Remote Control
Hasta aquí, esto es básicamente lo mismo que trabajar desde tu computadora. La magia empieza ahora.
Dentro de Claude Code, ejecuta:
/rc
(o /remote-control). Te pregunta si quieres habilitar el control remoto, aceptas, y vas a ver aparecer RC Active en la esquina inferior derecha.
Con eso, desde la app móvil o la app de escritorio de Claude, entras a la sección de código y vas a ver esa sesión activa. Puedes escribirle desde ahí.
Prueba algo como:
"Crea un landing básico de reservas de tickets de concierto en HTML y muévelo dentro de nginx"
En un par de minutos, refrescas el sitio y ahí está.
Esto es idéntico para cualquier agente: Kimi Code, Codex, OpenCode, el que prefieras.
8. tmux: mantener la sesión viva
El problema es que si cierras la terminal, la sesión muere y ya no puedes mandar nada desde el móvil. Aquí entra tmux.
sudo apt install -y tmux
tmux -V
Ahora la configuración. Puedes pegar este bloque directamente en la terminal, o dárselo a Claude y pedirle "crea esta configuración de tmux" —que es lo que hago en el video, porque son varios puntos sencillos pero tediosos de escribir uno por uno:
cat > ~/.tmux.conf << 'EOF'
# Increase scrollback buffer (default is 2000 lines)
set -g history-limit 50000
# Enable mouse support for scrolling and pane selection
set -g mouse on
# Start window numbering at 1
set -g base-index 1
# Reduce escape time for faster key response
set -sg escape-time 10
# Status bar with session name and time
set -g status-right '%H:%M %d-%b'
# Keep sessions alive if the shell exits unexpectedly
set -g remain-on-exit on
EOF
¿Por qué cada cosa?
history-limit 50000: a medida que el agente va respondiendo, necesitas poder desplazarte hacia arriba y leer lo anterior. Con las 2000 líneas por defecto te quedas corto rapidísimo.mouse on: permite scroll e interacción con el mouse dentro de la sesión.escape-time 10: respuesta más rápida de las teclas, que se nota bastante en una TUI como la de Claude Code.status-right: hora y fecha en la barra, útil cuando vuelves a una sesión que dejaste corriendo hace horas.remain-on-exit on: si el proceso muere de forma inesperada, el panel no desaparece y puedes ver qué pasó en vez de quedarte sin rastro.
Una aclaración técnica: la sesión sobrevive al detach por el diseño mismo de tmux, no por una línea de esta config. tmux corre un servidor en segundo plano y las sesiones viven ahí, independientes de tu conexión SSH. Esta configuración no es lo que da la persistencia; es lo que hace que trabajar dentro de esa sesión sea tolerable.
Acuérdate de tener el auto mode activado para que no te pida aprobar cada cambio.
9. El flujo diario con tmux
Crear una sesión:
tmux new -s claude
Vas a ver aparecer una barra abajo. Dentro de esa sesión lanzas el agente:
claude -c
Reactiva el remote control con /rc (no se hereda automáticamente) y luego haz detach:
Ctrl+B luego D
Listo. Ya puedes cerrar tu terminal completamente. Claude sigue corriendo.
Desde el móvil ahora puedes pedirle, por ejemplo:
"Añade soporte para light/dark theme y un botón para cambiar de tema"
Y va a ejecutar la tarea aunque no tengas ninguna terminal abierta ni conexión SSH activa.
Un tip: sé específico con el proyecto. Si dices "cambia el tema" dentro de una sesión llamada tmux, el modelo puede pensar que te refieres a tmux. Dile "al proyecto que está en nginx" o dale la ruta.
Para volver a conectarte:
tmux ls # lista las sesiones activas
tmux attach -t claude # te reconecta a la sesión
Puedes lanzar múltiples sesiones en el mismo servidor y controlar distintos proyectos por separado. Incluso renombrarlas: server-dev, cliente-x, lo que te sirva.
10. GitHub CLI: subir el código
Para que el agente pueda subir repos a tu cuenta necesitas autenticarte. Instala GitHub CLI (ojo con copiar el comando de Windows en vez del de Linux, es un error fácil de cometer en su página):
sudo apt install gh -y
Y autentícate:
gh auth login
Elige GitHub.com y dale Enter a prácticamente todo. Te va a dar una URL y un código: abres la URL en el navegador, pegas el código, autorizas, y listo.
Ahora puedes pedirle directamente:
"Sube el código de este proyecto a mi cuenta de GitHub en un repo privado usando gh"
Un detalle que me pareció interesante: el modelo se da cuenta de que no debe inicializar el repo dentro de la carpeta de nginx, y lo crea en el directorio del usuario antes de subirlo.
También puedes ir al revés:
"Clona en este servidor el proyecto task-cli-ai y ejecuta el proyecto web"
Y va a detectar que necesita Docker, Node, lo que sea, e instalarlo solo.
11. Monitorear recursos
Conviene revisar que no estés ahogando el servidor:
htop
Vas a ver el uso de RAM en tiempo real. En un VPS de 8 GB con una sesión activa apenas se usa menos de 1 GB, pero eso cambia rápido conforme sumas sesiones, bases de datos y aplicaciones corriendo.
Herramientas que le dan superpoderes al entorno
Aquí es donde este setup empieza a diferenciarse de usar Claude Desktop. Como el agente vive en un Linux completo, cada CLI o MCP que instales se convierte en una capacidad nueva.
CLIs
- GitHub CLI (
gh) — clonar repos privados, crear repos, abrir pull requests. Es el mínimo indispensable. - Playwright CLI — permite que el agente navegue sitios, tome screenshots y verifique visualmente lo que acaba de construir. Muy útil si le pides que revise su propio trabajo.
- CLIs de despliegue: Railway, Coolify, Dokploy, AWS, el que uses.
MCPs
Conectar servidores MCP le da acceso a tus herramientas de trabajo reales:
- Notion — leer y escribir documentación, tareas, bases de datos.
- Linear / Trello — leer tickets, actualizar estados, crear tareas a partir de lo que acaba de resolver.
El combo interesante es cuando se juntan: el agente lee un ticket de Linear, clona el repo con gh, hace el cambio, lo verifica con Playwright, y actualiza el ticket. Todo dentro del mismo servidor.
Plataformas de despliegue
- Coolify y Dokploy — si quieres el enfoque de "un solo servidor para todo", estos te dan un panel tipo Vercel donde cada proyecto corre aislado en su propio contenedor.
Recuerda que si despliegas en otro servidor, tu VPS de desarrollo solo necesita las credenciales: claves SSH o el login del CLI correspondiente.
Previews temporales con Cloudflare Tunnel
Este es probablemente el truco más útil de todos. Cuando el agente levanta una app en el servidor y quieres enseñársela a un cliente sin configurar dominio, DNS ni certificados, instalas cloudflared y le pides directamente:
"Dame una URL temporal con cloudflared para probar la app"
Te devuelve una URL pública .trycloudflare.com que apunta al puerto local donde está corriendo el proyecto. Perfecto para demos, y desaparece cuando cierras el túnel.
Acceso privado con Tailscale
La contraparte del punto anterior. Si prefieres que el servidor no esté expuesto a internet, Tailscale te arma una red privada entre tu laptop, tu móvil y el VPS. Te conectas por IP interna, sin abrir puertos y sin exponer nada públicamente.
Mi recomendación: Tailscale para tu acceso diario, cloudflared solo cuando necesitas mostrarle algo a alguien externo.
Limitaciones (y qué usar en su lugar)
Seamos claros sobre qué es esto: un entorno hackeado. Funciona, pero no está diseñado para funcionar así.
Las limitaciones concretas:
- No tienes acceso cómodo a los archivos desde fuera; todo pasa por la terminal o por el agente.
- Claude Code no corre como servicio real; depende de tmux para sobrevivir.
- Sigue siendo arriesgado dejar esto tocando producción directamente. Para modificaciones pequeñas y de bajo riesgo va bien; para cambios drásticos, no.
- No tiene interfaz gráfica ni integración nativa con bots.
Si esto te gustó, la evolución natural es Hermes con Codex. Hermes sí te da interfaces gráficas, un entorno de escritorio, el programa se ejecuta por sí solo como servicio, y puedes conectarlo a Telegram, Discord, WhatsApp o múltiples bots a la vez. Y como OpenAI sí permite usar tu suscripción de Codex desde herramientas externas, es la combinación que hoy sale más económica para tener un agente 24/7 real.
¿El trade-off? Para generación de código puro, el modelo más potente ahora mismo sigue viniendo del lado de Anthropic con Fable 5. El modelo de OpenAI en Codex está bastante cerca —en algunos benchmarks incluso lo supera en ciertas tareas— pero en generación de código Fable 5 sigue siendo la referencia.
Así que la decisión final es un intercambio bastante concreto: el mejor modelo con un entorno hackeado, o un modelo muy decente con un entorno bien construido. Depende de qué te duela más.
Resumen de comandos
# Conexión y actualización
ssh root@TU_IP
sudo apt update && sudo apt upgrade -y
# Usuario
sudo adduser dev
sudo usermod -aG sudo dev
ssh dev@TU_IP
# Claude Code
curl -fsSL https://claude.ai/install.sh | bash
claude --version
claude
# Sudo sin contraseña
echo 'dev ALL=(ALL) NOPASSWD:ALL' | sudo tee /etc/sudoers.d/dev
sudo chmod 0440 /etc/sudoers.d/dev
# tmux
sudo apt install -y tmux
tmux new -s claude
claude -c
# /rc → activar remote control
# Ctrl+B luego D → detach
tmux ls
tmux attach -t claude
# GitHub CLI
sudo apt install gh -y
gh auth login
# Monitoreo
htop
Recursos
- Hostinger — 10% de descuento con el código FAZT
- GitHub CLI
- Tailscale
- Coolify · Dokploy
- Cómo mantener Claude Code corriendo después de desconectar SSH (virtua.cloud)
Si tienes dudas o quieres que cubra otro tipo de entorno de este estilo, déjamelo en los comentarios. Y si necesitas ayuda con tu caso específico, puedes reservar una asesoría personalizada en fazt.dev.