Instalar Claude Code y ChatGPT Codex en un servidor Linux: paso a paso

Publicado el Actualizado el 15 min de lectura

De una instalación recién hecha de Debian o Ubuntu a un agente de IA operativo: usuario y lista blanca de sudo, Node.js 22, instalación e inicio de sesión de Claude Code, Codex CLI y Gemini CLI, archivos de reglas, tareas cron, primeros encargos y los errores típicos.

Esta guía te lleva de un servidor Debian o Ubuntu recién instalado a un agente de IA operativo que analiza registros, revisa configuraciones y ejecuta tareas de mantenimiento. Configuramos Claude Code (Anthropic) y Codex CLI (OpenAI, la herramienta de línea de comandos detrás de ChatGPT), ambos bajo un usuario propio con permisos limitados, y presentamos Gemini CLI (Google) como tercera opción. Todos los comandos se probaron en un servidor root KVM de KernelHost con Debian 13 y Ubuntu 24.04. Qué es en esencia un servidor gestionado por IA y qué arquitecturas existen lo explica el artículo Servidor gestionado por IA: conectar agentes de IA de forma segura.

Actualizado a septiembre de 2026. Las herramientas evolucionan rápido; en caso de duda, comprueba las opciones con claude --help, codex --help o gemini --help, según la herramienta.

Requisitos

  • Un servidor root con Debian 12 o 13, o con Ubuntu 22.04 o 24.04, y acceso root por SSH. En AlmaLinux y Rocky Linux los pasos son los mismos; solo cambian los comandos de paquetes, que usan dnf en lugar de apt.
  • La seguridad básica ya configurada: inicio de sesión SSH con clave, cortafuegos y actualizaciones de seguridad automáticas. La lista de comprobación para nuevos servidores root cubre todo esto.
  • Una cuenta de Anthropic (Claude Pro, Max o Team) o una clave API, o bien una cuenta de ChatGPT (Plus, Pro o Team) o una clave API de OpenAI. Si solo quieres configurar una herramienta, te basta con una de ellas.
  • HTTPS saliente hacia api.anthropic.com y api.openai.com. En los servidores de KernelHost viene habilitado de serie; un cortafuegos propio restrictivo tiene que permitirlo.

¿Qué servidor basta para un agente de IA?

Un agente de IA no necesita hardware especial ni GPU en el servidor, porque el modelo de lenguaje se ejecuta en los servidores del proveedor. En el servidor solo corren la herramienta de línea de comandos y Node.js, que durante una sesión suelen ocupar juntos unos pocos cientos de megabytes de memoria. Para un servidor que apenas ejecuta nada más, bastan 2 vCPU y 4 GB de RAM. Si el servidor aloja además sitios web, bases de datos o servidores de juego, reserva alrededor de 1 GB de memoria para el agente. Un servidor root KVM de KernelHost está listo en unos 30 segundos y se factura en modalidad PrePaid, sin permanencia mínima, así que también sirve como sistema de pruebas en el que probar primero el agente.

Paso 1: crear un usuario propio y limitar sudo

El agente nunca se ejecuta como root. Recibe su propia cuenta y, mediante una lista blanca de sudo, exactamente los comandos que necesita. Empieza con unos pocos comandos de solo lectura y amplía la lista cuando una tarea lo requiera de verdad.

sudo adduser --disabled-password --gecos "KI-Agent" aiagent
sudo tee /etc/sudoers.d/aiagent >/dev/null <<'EOF'
aiagent ALL=(root) NOPASSWD: /usr/bin/journalctl *, /usr/bin/systemctl status *, /usr/bin/systemctl restart nginx, /usr/bin/apt-get update, /usr/bin/apt-get upgrade -y, /usr/bin/tail *, /usr/bin/df *, /usr/bin/ss *
EOF
sudo chmod 440 /etc/sudoers.d/aiagent
sudo visudo -cf /etc/sudoers.d/aiagent

La última línea comprueba la sintaxis. Un error en un archivo sudoers puede bloquear sudo para todos, por eso esta comprobación no debe faltar nunca. --disabled-password garantiza que nadie pueda iniciar sesión como aiagent con una contraseña; más adelante cambiarás a esa cuenta con sudo -iu aiagent. Cómo funcionan en general los usuarios con sudo lo explica el artículo Crear un usuario sudo en Linux.

Permisos de escritura concretos en lugar de un editor con sudo

Si el agente debe modificar archivos en /etc, no le autorices nano mediante sudo (con eso podría editar cualquier archivo, incluido /etc/sudoers); trabaja en su lugar con un grupo y permisos de escritura concretos, por ejemplo setfacl -m u:aiagent:rw /etc/nginx/sites-available/meine-seite.conf. Para empezar, basta de sobra con que el agente proponga los cambios y tú los apliques.

Lo mismo vale para los comandos con comodines en la lista blanca. /usr/bin/tail * permite al agente leer cualquier archivo al que tenga acceso root, incluidos los que contienen credenciales. Si no quieres eso, escribe explícitamente las rutas permitidas, por ejemplo /usr/bin/tail -n 200 /var/log/nginx/error.log.

Paso 2: instalar Node.js 22

Ambas herramientas funcionan con Node.js. Claude Code exige como mínimo la versión 18 y Codex CLI como mínimo la 22, así que instalamos la 22 LTS. Los repositorios de Debian 12 traen una versión demasiado antigua; NodeSource ofrece la actual:

curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
node --version
npm --version

Alternativa sin permisos de root: nvm

Si no quieres ejecutar scripts de internet con permisos de root, usa nvm en el directorio personal del usuario del agente; así no necesitas permisos de root en ningún momento. Copia el comando de instalación de nvm del README del proyecto; después bastan tres líneas:

nvm install 22
nvm alias default 22
node --version

Encontrarás más detalles y otras vías en la guía de Node.js en Debian.

Paso 3: instalar Claude Code e iniciar sesión

A partir de aquí trabajamos en la cuenta del agente:

sudo -iu aiagent
curl -fsSL https://claude.ai/install.sh | bash
claude --version

El instalador nativo coloca Claude Code en ~/.local/bin y se mantiene actualizado por sí solo. Como alternativa, puedes instalarlo con npm mediante npm install -g @anthropic-ai/claude-code; si falla con EACCES, consulta la sección de solución de errores más abajo.

Inicio de sesión en un servidor sin navegador

La primera vez que arrancas claude, la herramienta te pide iniciar sesión. Con una cuenta de Claude normalmente abre el navegador; en un servidor sin navegador muestra una dirección y un código que confirmas en el portátil o en el smartphone. A partir de ese momento, la sesión queda iniciada para este usuario en este servidor hasta que la cierres.

Clave API para scripts y tareas cron

Para scripts y tareas cron, una clave API es la mejor opción:

echo 'export ANTHROPIC_API_KEY="sk-ant-..."' >> ~/.bashrc
chmod 600 ~/.bashrc
source ~/.bashrc
claude -p "Responde solo con OK" 

Así, la clave solo está en el directorio personal del usuario del agente, que los demás usuarios no pueden leer. Créala en la consola de Anthropic con un límite de gasto mensual; de este modo, una sesión que se descontrole no podrá salir cara. La clave en sí no debe aparecer nunca en una tarea que encargues al agente ni en un archivo cuyo contenido deba mostrar.

Paso 4: configurar Claude Code para el servidor

El archivo de reglas CLAUDE.md

Al arrancar, Claude Code lee un archivo CLAUDE.md en el directorio actual. En él están las reglas que se aplican a cada sesión. Crea en el directorio personal del agente un directorio de trabajo con este archivo:

mkdir -p ~/server && cd ~/server
cat > CLAUDE.md <<'EOF'
# Reglas para este servidor
- Este es un servidor de producción (Debian 13, nginx, PHP-FPM, MariaDB).
- Los comandos de lectura (journalctl, systemctl status, tail, df, ss) están permitidos en todo momento.
- Antes de cada comando de escritura, explicar brevemente qué cambia y esperar la aprobación.
- Nunca eliminar paquetes, nunca borrar archivos bajo /var/lib, nunca crear ni eliminar usuarios.
- Nunca repetir contraseñas, claves ni datos de clientes en las salidas.
- Al final de cada tarea, entregar un resumen en tres frases.
EOF

El archivo crece con el uso. Cada vez que el agente haga algo de forma distinta a como tú quieres, añade la corrección como regla nueva. Al cabo de unas semanas, refleja con bastante precisión cómo se trabaja en tu servidor.

La lista blanca en settings.json

A esto se suma una lista blanca de herramientas, para que Claude Code ejecute los comandos de lectura sin preguntar y pida aprobación para todo lo demás. El archivo ~/.claude/settings.json se aplica al usuario:

mkdir -p ~/.claude
cat > ~/.claude/settings.json <<'EOF'
{
  "permissions": {
    "allow": [
      "Bash(sudo journalctl:*)",
      "Bash(sudo systemctl status:*)",
      "Bash(sudo tail:*)",
      "Bash(df:*)",
      "Bash(free:*)",
      "Bash(ss:*)"
    ],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(sudo rm:*)",
      "Bash(dd:*)",
      "Bash(mkfs:*)"
    ]
  }
}
EOF

La lista de denegación es una red de seguridad adicional, no un muro: un mismo comando se puede escribir de muchas maneras. El límite real lo marca la lista blanca de sudo del paso 1, porque lo que el usuario no puede hacer tampoco lo puede hacer el agente.

La primera tarea, en modo interactivo

Ahora, la primera tarea de forma interactiva:

cd ~/server && claude
> Resume los errores de journalctl de las últimas 24 horas e indica las tres causas más frecuentes.

Sin supervisión, con una tarea cron

Y la misma tarea sin supervisión, por ejemplo como tarea cron diaria a las 7:00, cuyo resultado te llega por correo:

0 7 * * * cd /home/aiagent/server && /home/aiagent/.local/bin/claude -p "Resume los errores y avisos de journalctl de las últimas 24 horas. Indica el servicio, la hora y la causa probable." --allowedTools "Bash(sudo journalctl:*)" 2>&1 | mail -s "Informe diario del servidor" admin@example.com

La opción -p inicia Claude Code sin sesión interactiva, y --allowedTools limita las herramientas exactamente a lo que necesita la ejecución. Las acciones de escritura no tienen cabida en ejecuciones sin supervisión. Cómo se configuran las tareas cron en general lo explica el artículo Configurar un cron job en Linux.

Paso 5: instalar Codex CLI (ChatGPT) e iniciar sesión

Instalación e inicio de sesión

Codex CLI es la herramienta de OpenAI que lleva a la línea de comandos los modelos que hay detrás de ChatGPT. Se instala en la misma cuenta de usuario:

npm install -g @openai/codex
codex --version

El inicio de sesión se hace con la cuenta de ChatGPT (Plus, Pro o Team): inicia codex, elige «Sign in with ChatGPT» y abre la dirección que aparece en un dispositivo con navegador. Para scripts, define en su lugar una clave API de la plataforma de OpenAI:

echo 'export OPENAI_API_KEY="sk-..."' >> ~/.bashrc
source ~/.bashrc

Sandbox y modo de aprobación en config.toml

Codex trae su propio sandbox y un modo de aprobación. Ambos se definen en ~/.codex/config.toml; para un servidor de producción tiene sentido esta combinación:

mkdir -p ~/.codex
cat > ~/.codex/config.toml <<'EOF'
approval_policy = "on-request"
sandbox_mode = "workspace-write"
EOF

workspace-write solo permite escribir en el directorio de trabajo actual, y on-request hace que el agente pida permiso para todo lo que vaya más allá. El nivel danger-full-access anula ambas cosas y no tiene cabida en un sistema de producción.

Reglas en AGENTS.md

Codex lee reglas como las de CLAUDE.md desde un archivo AGENTS.md en el directorio de trabajo; puedes usar el mismo contenido:

cp ~/server/CLAUDE.md ~/server/AGENTS.md
cd ~/server && codex "Comprueba si todos los servicios de systemd habilitados están en ejecución y enumera los que han fallado con su último mensaje de error."

Para ejecuciones sin supervisión existe codex exec "Aufgabe", el equivalente de claude -p.

Paso 6: Gemini CLI como tercera opción

Gemini CLI es la herramienta de línea de comandos de Google y sigue el mismo principio. También se ejecuta con Node.js y se instala en la misma cuenta de usuario:

npm install -g @google/gemini-cli
gemini --version

Al arrancar gemini por primera vez, inicias sesión con una cuenta de Google; para scripts, defines una clave API en la variable de entorno GEMINI_API_KEY. Gemini CLI lee las reglas de un archivo GEMINI.md en el directorio de trabajo, y aquí también puedes reutilizar el contenido de CLAUDE.md. Las ejecuciones sin supervisión se inician con gemini -p "Aufgabe". Cuál de las tres herramientas uses depende sobre todo de la cuenta que ya tengas: la forma de trabajar en el servidor es la misma en las tres, y puedes usar varias en paralelo.

Alternativa: el agente se ejecuta en tu equipo y trabaja por SSH

Si no quieres instalar nada en el servidor, inicia Claude Code o Codex en tu portátil y deja que el agente lance los comandos por SSH. Para ello, el servidor recibe una clave SSH propia del usuario del agente, y en CLAUDE.md figura la regla de anteponer ssh aiagent@server a todos los comandos del servidor. Esto funciona bien para un mantenimiento ocasional, pero las tareas largas y las tareas cron van mejor directamente en el servidor. Cómo se configura en detalle la conexión SSH con clave propia, alias de host y aprobaciones, y qué proceso sigue después el agente para desplegar en sistemas de producción, lo muestra el artículo práctico Conectar la IA con el servidor.

Paso 7: asegurar y fijar límites

  • Snapshot o copia de seguridad antes de cada sesión en la que se vaya a cambiar algo. La estrategia de copias de seguridad para servidores muestra cómo automatizarlo.
  • Dejar activado el modo de aprobación. --dangerously-skip-permissions en Claude Code y danger-full-access en Codex están pensados para máquinas virtuales desechables.
  • Secretos fuera de su alcance. El usuario del agente no debe poder leer archivos .env, contraseñas de bases de datos ni datos de clientes. Todo lo que lee va al proveedor.
  • Límite de coste para cada clave API, fijado en la consola del proveedor.
  • Trazabilidad: instalar etckeeper para que cada cambio en /etc quede registrado en Git, y guardar los resúmenes del agente.
  • Nada cambia en el tráfico entrante. Ambas herramientas solo necesitan HTTPS saliente. El cortafuegos, Fail2ban y la protección DDoS del proveedor de hosting siguen igual.

Las primeras tareas: cinco encargos útiles

Las mejores primeras tareas son las que implican mucha lectura y ningún riesgo. Muestran rápido con qué rigor trabaja el agente y aportan utilidad desde el primer momento:

  • Informe de registros: «Resume los errores y avisos de las últimas 24 horas, agrupados por servicio y con la causa probable».
  • Revisar servicios: «Enumera todos los servicios de systemd que han fallado con su último mensaje de error y explica qué habría que hacer en cada caso. No cambies nada».
  • Espacio en disco: «Muestra qué directorios ocupan más espacio y propón qué se puede limpiar sin riesgo». Más contexto en el artículo Disco lleno en Linux.
  • Actualizaciones: «¿Qué paquetes tienen actualizaciones de seguridad pendientes y qué servicios hay que reiniciar después?».
  • Servidor web: «Revisa la configuración de nginx en busca de errores y ajustes obsoletos, y explica cada hallazgo».

Solo cuando estos análisis sean acertados merece la pena confiar al agente tareas de escritura, empezando por un sistema de pruebas.

Errores típicos y soluciones

MensajeCausa y solución
EACCES: permission denied con npm install -gnpm intenta escribir en un directorio del sistema. Definir un prefijo de usuario: npm config set prefix ~/.npm-global, después añadir export PATH=~/.npm-global/bin:$PATH a ~/.bashrc y volver a instalar.
Node.js version ... is not supportedVersión demasiado antigua de los repositorios de la distribución. Repetir el paso 2 y comprobar con node --version que la 22.x está activa.
claude: command not foundEl instalador nativo coloca el programa en ~/.local/bin, que todavía no está en el PATH. Añadir export PATH=$HOME/.local/bin:$PATH a ~/.bashrc y recargar el shell.
El inicio de sesión no abre ningún navegadorEs lo esperado en un servidor. Abrir la dirección mostrada en otro dispositivo e introducir el código, o cambiar a una clave API.
ECONNREFUSED o tiempo de espera agotado al arrancarEl HTTPS saliente está bloqueado. Revisar las reglas del cortafuegos para el puerto 443 de salida; en los servidores de KernelHost el tráfico saliente está permitido de serie.
429 rate limit u overloadedCuota de la suscripción o de la API agotada, o proveedor saturado. Esperar un poco y hacer que las ejecuciones sin supervisión reintenten al cabo de unos minutos.
El agente pregunta antes de cada comandoAmpliar la lista blanca en ~/.claude/settings.json o la approval_policy en config.toml, pero solo con comandos de lectura.
La tarea cron envía correos vacíosEn cron faltan las variables de entorno del shell. Definir la clave API en el crontab o en un archivo de entorno que cargue la tarea, y usar la ruta completa del programa.

Mantener las herramientas actualizadas

Claude Code se actualiza solo si lo instalaste con el instalador nativo. Las herramientas instaladas con npm se ponen al día con un solo comando:

npm update -g @openai/codex @google/gemini-cli
codex --version
gemini --version

Las versiones nuevas cambian de vez en cuando opciones o valores predeterminados. Tras una actualización, lee por encima las notas de la versión antes de dejar que las ejecuciones sin supervisión sigan en marcha, y revisa el siguiente informe diario por si hay algo fuera de lo normal.

Conclusión

Un agente de IA en el servidor se configura en una hora: usuario, lista blanca de sudo, Node.js, herramienta y reglas. El verdadero trabajo está en los límites, y aquí se han trazado estrechos a propósito. Amplíalos paso a paso cuando una tarea lo exija, nunca en bloque. En un servidor root de KernelHost o en un servidor dedicado no hay que activar nada para ello: el acceso root, la libre elección de distribución y las conexiones salientes vienen de serie.

Cómo despliega después un agente en sistemas de producción, con copia de seguridad, vuelta atrás y aprobaciones, lo describe el artículo práctico Conectar la IA con el servidor.

En resumen

  • Claude Code, Codex CLI y Gemini CLI funcionan en cualquier servidor Linux con Node.js 22; no hace falta GPU.
  • El agente recibe un usuario propio con lista blanca de sudo y nunca se ejecuta como root.
  • Las reglas van en CLAUDE.md, AGENTS.md o GEMINI.md; los comandos de lectura entran en la lista blanca y todo lo demás requiere aprobación.
  • Para tareas cron y scripts, la vía más limpia es una clave API con límite de gasto, y las ejecuciones sin supervisión se limitan a leer.
  • Copia de seguridad antes de cada sesión, secretos fuera de su alcance y modo de aprobación activado.
  • En los servidores de KernelHost, el acceso root, la libre elección de distribución y las conexiones salientes vienen de serie.

Preguntas frecuentes

¿Necesito una suscripción para Claude Code o basta con una clave API?
Ambas opciones funcionan. Con una cuenta de Claude (Pro, Max o Team) inicias sesión mediante el navegador en el primer arranque; en un servidor sin navegador, mediante un código en otro dispositivo. Para tareas automatizadas sin nadie delante, una clave API en la variable de entorno ANTHROPIC_API_KEY es la vía más limpia, porque no está ligada a ninguna persona y se le puede poner un tope de gasto.
¿Cómo inicio sesión en Codex CLI en un servidor sin navegador?
O bien con el inicio de sesión de la cuenta de ChatGPT, en el que Codex muestra una dirección que abres en el portátil o en el smartphone, o bien mediante la variable de entorno OPENAI_API_KEY con una clave de la plataforma de OpenAI. Para tareas cron y scripts, la clave API es la opción más fiable.
¿Qué versión de Node.js necesito?
Claude Code exige como mínimo Node.js 18, y Codex CLI como mínimo Node.js 22. Por eso, instala directamente Node.js 22 LTS desde el repositorio de NodeSource o con nvm en el directorio personal del usuario del agente. La versión de los repositorios de Debian 12 es demasiado antigua. Después de la instalación, comprueba con node --version qué versión está activa: si el comando sigue mostrando una versión principal anterior, la versión de la distribución aparece antes en el PATH.
¿Por qué falla npm install -g con EACCES?
Porque npm intenta escribir globalmente en un directorio del sistema sobre el que el usuario no tiene permisos. Define un prefijo de usuario con npm config set prefix ~/.npm-global, añade ~/.npm-global/bin al PATH y vuelve a instalar. Como alternativa, usa nvm o, para Claude Code, el instalador nativo, que no necesita npm.
¿Puedo ejecutar Claude Code en una tarea cron?
Sí, con claude -p, la tarea en forma de texto y una lista blanca de las herramientas permitidas. Usa para ello una clave API, limita las herramientas a comandos de lectura y redirige la salida a un archivo o a un correo electrónico. Las acciones intrusivas no tienen cabida en ejecuciones sin supervisión.
¿Funciona también en los servidores Windows de KernelHost?
Sí. Claude Code y Codex CLI funcionan en Windows de forma nativa con Node.js o en el Subsistema de Windows para Linux. Los pasos del usuario y de la lista blanca de sudo equivalen en ese caso a un usuario de Windows propio sin permisos de administrador. KernelHost ofrece Windows Server en modalidad Bring Your Own License, y las reglas sobre aprobaciones, copias de seguridad y secretos se aplican allí igual que en Linux.
¿Puedo usar Claude Code, Codex CLI y Gemini CLI en paralelo en un mismo servidor?
Sí. Las tres herramientas funcionan una junto a otra en la misma cuenta de usuario y comparten los mismos permisos. Cada una lee su propio archivo de reglas en el directorio de trabajo: Claude Code lee CLAUDE.md, Codex CLI lee AGENTS.md y Gemini CLI lee GEMINI.md. Lo más sencillo es mantener el contenido en un solo sitio y copiarlo en los tres archivos. Qué herramienta uses suele depender de la cuenta que ya tengas.
¿Cuánta memoria RAM necesita un agente de IA en el servidor?
Poca, porque el modelo de lenguaje se ejecuta en los servidores del proveedor. La herramienta de línea de comandos y Node.js suelen ocupar solo unos pocos cientos de megabytes durante una sesión. Para un servidor que apenas ejecuta nada más, bastan 2 vCPU y 4 GB de RAM. Si en paralelo corren sitios web, bases de datos o servidores de juego, reserva alrededor de 1 GB para el agente. No hace falta GPU.
¿Cómo actualizo Claude Code, Codex CLI y Gemini CLI?
Si lo instalaste con el instalador nativo, Claude Code se actualiza solo. Codex CLI y Gemini CLI se ponen al día con npm update -g @openai/codex @google/gemini-cli; después, comprueba las versiones con codex --version y gemini --version. Tras una actualización, lee las notas de la versión antes de que las ejecuciones sin supervisión sigan en marcha, porque las opciones pueden cambiar.
¿Cómo configuro Gemini CLI en el servidor?
Con npm install -g @google/gemini-cli en la cuenta del usuario del agente; después, arranca gemini e inicia sesión con una cuenta de Google o, para scripts, define una clave API en la variable de entorno GEMINI_API_KEY. Gemini CLI lee las reglas de un archivo GEMINI.md en el directorio de trabajo, y las ejecuciones sin supervisión se lanzan con gemini -p y la tarea en forma de texto.
¿Por qué el agente de IA no debe ejecutarse como root?
Porque un agente que malinterpreta una instrucción puede, con permisos de root, dañar en el peor de los casos todo el servidor, por ejemplo con un comando de borrado equivocado. Con un usuario propio y una lista blanca de sudo, solo puede ejecutar los comandos que hayas autorizado expresamente. Así, el posible daño queda limitado a esos comandos, y en los registros se ve en todo momento lo que ha hecho el agente.

Claude Code Codex CLI Gemini CLI ChatGPT Agente de IA Node.js Debian Ubuntu Administración de servidores