Cómo gestiono un servidor VPS desde la terminal con Claude Code (sin ser programador)
Tengo un servidor en Alemania con 8 sitios web activos, n8n corriendo, automatizaciones generando audio con IA, y múltiples dominios en Cloudflare. Todo se gestiona desde la terminal de mi Mac, con Claude Code como copiloto permanente.
El servidor que corre el ecosistema
Uso un VPS de Contabo en Alemania — Ubuntu 22.04, acceso root por SSH. No es la infraestructura más sofisticada del mundo, pero para lo que hace una agencia digital como la mía, es exactamente lo que necesito: control total, costo fijo bajo, y la posibilidad de instalar cualquier herramienta sin pedir permiso a nadie.
En ese servidor viven: digitalglowagency.com, percivalmonge.com, orbitravels.com, hostalloschamos.com, elalphadetail.com, terrawindseguros.com, critika.com.mx (WordPress), ghost.critika.com.mx (Ghost), y los contenedores Docker de n8n, Portainer, y otros servicios.
Antes de Claude Code, gestionar todo esto desde la terminal me tomaba el doble de tiempo y cometía el doble de errores.
SSH desde la terminal: el flujo básico
Para conectarme al servidor uso SSH con sshpass — una utilidad que me permite automatizar la autenticación sin tener que escribir la contraseña cada vez. El comando base es:
sshpass -p 'contraseña' ssh -o StrictHostKeyChecking=no root@IP_del_servidor
Claude Code conoce este patrón porque está documentado en el workspace. Cuando necesito ejecutar algo en el servidor — crear directorios, cambiar permisos, mover archivos — Claude construye el comando correcto y yo lo ejecuto con un clic de aprobación.
Para copiar archivos uso SCP: sshpass -p 'contraseña' scp archivo.php root@servidor:/ruta/destino/. Es como arrastrar un archivo a una carpeta, pero la carpeta está en Alemania.
Lo que aprendí sobre la estructura del servidor
Uno de los momentos más ilustrativos de trabajar con Claude Code fue cuando intenté subir los primeros artículos al servidor y Claude asumió la estructura estándar de Apache — archivos en /var/www/html/. Conexión correcta, directorio incorrecto.
Un ls /home/ resolvió el misterio en segundos: el servidor usa directorios de usuario en /home/[nombredeldominio]/public_html/. Cada sitio tiene su usuario propio, su carpeta de archivos y sus permisos específicos.
Ese descubrimiento lo documenté en el contexto del workspace. Desde entonces Claude llega sabiendo esa estructura — no tengo que redescubrirla en cada sesión.
El sistema de audio IA en producción
Uno de los proyectos más interesantes que construimos en el servidor fue un sistema de generación automática de audio para el blog de critika.com.mx. El flujo funciona así:
- Se publica un artículo en Ghost (ghost.critika.com.mx)
- Ghost dispara un webhook a n8n
- n8n activa un script Python en el servidor (
/usr/local/bin/ghost-audio-update.py) - El script usa
edge-tts— una herramienta de texto a voz de Microsoft — para generar el audio del artículo - El audio se sube al servidor y se enlaza en el artículo automáticamente
Todo esto corre en el VPS, sin servicios de terceros, con costo de infraestructura cero (edge-tts es gratis). Claude Code me ayudó a construir y depurar el script Python y el workflow de n8n en una sola sesión de trabajo.
El patrón de permisos que no se puede olvidar
Cada vez que subo un archivo al servidor como root (el usuario administrador), ese archivo queda con propietario root. El servidor web no puede leerlo correctamente — necesita que el propietario sea el usuario del dominio correspondiente.
El comando es chown -R usuario:usuario /ruta/del/archivo. Parece un detalle técnico menor. En la práctica, olvidarlo significa que el artículo que acababas de publicar da error 500 cuando lo intentas abrir.
Claude Code nunca lo olvida. Forma parte del flujo estándar de deploy: subir el archivo con SCP → cambiar los permisos con chown → verificar que el PHP es válido. Esos tres pasos garantizan que el artículo quede live correctamente.
Python en el servidor para operaciones masivas
Cuando necesito hacer cambios en múltiples archivos al mismo tiempo — como actualizar el índice de blog de un sitio con varios artículos nuevos — usar el editor de texto línea por línea no es viable. La solución es un script Python inline que Claude construye en el momento:
python3 -c "content = open('archivo.php').read(); content = content.replace('texto_viejo', 'texto_nuevo'); open('archivo.php', 'w').write(content)"
Es una línea que Claude genera según el caso específico. Actualizar el índice de blog de DGA con 7 artículos nuevos tomó menos de un minuto de esa forma.
Lo que este flujo no puede hacer
Claude Code con acceso SSH a un servidor puede hacer muchas cosas. Pero no tiene criterio sobre qué debe hacerse. Si le pido que borre una carpeta, la borra — sin preguntarme si estoy seguro. Si le pido que modifique la configuración de Apache, lo intenta — sin saber si ese cambio va a romper algo más.
El criterio es mío. Claude ejecuta. Yo decido. Esa división de responsabilidades es lo que hace que el sistema funcione sin catástrofes.
En producción real con datos sensibles de clientes, Claude Code es un copiloto — no el piloto. La diferencia importa.
En el Método IA enseño este tipo de flujos técnicos adaptados a negocios y agencias que no tienen un equipo de desarrollo propio.
Ver Método IA →¿Qué es un VPS y por qué usar uno en lugar de hosting compartido?
Un VPS (Virtual Private Server) es un servidor virtual propio — tienes acceso root completo, puedes instalar lo que necesites y los recursos no se comparten con miles de otros sitios. Para una agencia con múltiples sitios web y herramientas como n8n, es significativamente más barato que contratar hosting individual para cada sitio, y tienes control total sobre la configuración. El trade-off es que requieres más conocimiento técnico para administrarlo.
¿Puedo gestionar un VPS sin saber programar?
Con Claude Code, sí — con condiciones. Puedes hacer operaciones de diagnóstico, verificar configuraciones, mover archivos, instalar herramientas y resolver errores comunes. Lo que no puedes hacer sin criterio técnico base es tomar decisiones de arquitectura o intervenir en situaciones de emergencia que requieren entender qué está pasando, no solo ejecutar comandos. Claude Code amplifica el conocimiento técnico que ya tienes — no lo reemplaza completamente.
¿Cómo funciona n8n en un servidor propio?
n8n es una herramienta de automatización open source que se puede instalar en tu propio servidor. En mi caso corre en el VPS detrás de un subdominio (ops.digitalglowagency.com) con SSL y autenticación. Las automatizaciones que construyo ahí — desde reportes de Telegram hasta sistemas de audio generado con IA — corren en mi infraestructura, no en la nube de n8n. Eso tiene un costo mensual fijo bajo y sin límite de workflows activos.
¿Es seguro usar sshpass para conectarse al servidor?
sshpass es una herramienta que permite pasar la contraseña SSH de forma automática en scripts. Es conveniente para flujos de trabajo automatizados pero no es la práctica más segura para producción crítica — lo ideal es usar autenticación por llaves SSH. En mi caso lo uso para operaciones de desarrollo y deploy controlado, no expuesto en scripts públicos. Para un servidor con datos sensibles de clientes, configura siempre autenticación por llave SSH.