Claude Code und ChatGPT Codex auf dem Linux-Server einrichten: Schritt für Schritt

Veröffentlicht am 8 Min. Lesezeit

Von der frischen Debian- oder Ubuntu-Installation zum arbeitsfähigen KI-Agenten: Benutzer und sudo-Allowlist, Node.js 22, Installation und Anmeldung von Claude Code und Codex CLI, CLAUDE.md und AGENTS.md, erste Aufgaben und die typischen Fehler.

Diese Anleitung führt von einem frisch installierten Debian- oder Ubuntu-Server zu einem arbeitsfähigen KI-Agenten, der Logs auswertet, Konfigurationen prüft und Wartungsaufgaben ausführt. Wir richten Claude Code (Anthropic) und Codex CLI (OpenAI, das Kommandozeilenwerkzeug hinter ChatGPT) ein, beide unter einem eigenen Benutzer mit begrenzten Rechten. Alle Befehle wurden auf einem KernelHost-KVM-Rootserver mit Debian 13 und Ubuntu 24.04 durchgespielt. Was ein AI Managed Server grundsätzlich ist und welche Architekturen es gibt, steht im Beitrag AI Managed Server: KI-Agenten sicher verbinden.

Stand September 2026. Die Werkzeuge entwickeln sich schnell; prüfen Sie Schalter im Zweifel mit claude --help beziehungsweise codex --help.

Voraussetzungen

  • Ein Rootserver mit Debian 12 oder 13 beziehungsweise Ubuntu 22.04 oder 24.04 und Root-Zugriff per SSH. Auf AlmaLinux und Rocky Linux sind die Schritte gleich, nur die Paketbefehle heißen dnf statt apt.
  • Grundabsicherung erledigt: SSH-Login per Schlüssel, Firewall, automatische Sicherheitsupdates. Die Checkliste für neue Rootserver deckt das ab.
  • Ein Konto bei Anthropic (Claude Pro, Max oder Team) oder ein API-Schlüssel, ein ChatGPT-Konto (Plus, Pro oder Team) oder ein OpenAI-API-Schlüssel. Sie brauchen nur eines davon, wenn Sie nur ein Werkzeug einrichten wollen.
  • Ausgehendes HTTPS zu api.anthropic.com und api.openai.com. Auf KernelHost-Servern ist das ab Werk der Fall, eine restriktive eigene Firewall muss es erlauben.

Schritt 1: Eigenen Benutzer anlegen und sudo begrenzen

Der Agent läuft nie als root. Er bekommt ein eigenes Konto und über eine sudo-Allowlist genau die Befehle, die er braucht. Beginnen Sie mit wenigen, lesenden Befehlen und erweitern Sie die Liste, wenn eine Aufgabe es wirklich erfordert.

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

Die letzte Zeile prüft die Syntax. Ein Fehler in einer sudoers-Datei kann sudo für alle sperren, deshalb gehört die Prüfung immer dazu. --disabled-password sorgt dafür, dass sich niemand mit Passwort als aiagent anmelden kann; Sie wechseln später mit sudo -iu aiagent in das Konto.

Soll der Agent Dateien in /etc ändern, geben Sie ihm nicht nano per sudo frei (damit ließe sich jede Datei editieren, auch /etc/sudoers), sondern arbeiten Sie mit einer Gruppe und gezielten Schreibrechten, zum Beispiel setfacl -m u:aiagent:rw /etc/nginx/sites-available/meine-seite.conf. Für den Anfang reicht es völlig, wenn der Agent Änderungen vorschlägt und Sie sie übernehmen.

Schritt 2: Node.js 22 installieren

Beide Werkzeuge laufen mit Node.js. Claude Code verlangt mindestens Version 18, Codex CLI mindestens 22, deshalb installieren wir 22 LTS. Die Paketquellen von Debian 12 liefern eine zu alte Version; NodeSource liefert die aktuelle:

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

Wer keine Skripte aus dem Internet mit Root-Rechten ausführen möchte, nimmt nvm im Home-Verzeichnis des Agent-Benutzers; das ist dann komplett ohne Root-Rechte möglich. Details und Alternativen stehen in der Anleitung zu Node.js auf Debian.

Schritt 3: Claude Code installieren und anmelden

Ab hier arbeiten wir im Konto des Agenten:

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

Der native Installer legt Claude Code unter ~/.local/bin ab und hält sich selbst aktuell. Alternativ geht es über npm mit npm install -g @anthropic-ai/claude-code; schlägt das mit EACCES fehl, hilft der Abschnitt zur Fehlerbehebung weiter unten.

Beim ersten Start von claude fragt das Werkzeug nach der Anmeldung. Mit einem Claude-Konto öffnet es normalerweise den Browser; auf einem Server ohne Browser zeigt es eine Adresse und einen Code an, den Sie auf Laptop oder Smartphone bestätigen. Für Skripte und Cronjobs ist ein API-Schlüssel die bessere Wahl:

echo 'export ANTHROPIC_API_KEY="sk-ant-..."' >> ~/.bashrc
chmod 600 ~/.bashrc
source ~/.bashrc
claude -p "Antworte nur mit OK" 

Der Schlüssel liegt damit nur im Home-Verzeichnis des Agent-Benutzers, das andere Benutzer nicht lesen können. Legen Sie ihn in der Anthropic-Konsole mit einem monatlichen Ausgabenlimit an, dann kann eine Sitzung, die aus dem Ruder läuft, nicht teuer werden.

Schritt 4: Claude Code für den Server konfigurieren

Claude Code liest beim Start eine Datei CLAUDE.md im aktuellen Verzeichnis. Dort stehen die Regeln, die für jede Sitzung gelten. Legen Sie im Home-Verzeichnis des Agenten ein Arbeitsverzeichnis mit dieser Datei an:

mkdir -p ~/server && cd ~/server
cat > CLAUDE.md <<'EOF'
# Regeln für diesen Server
- Dies ist ein Produktionsserver (Debian 13, nginx, PHP-FPM, MariaDB).
- Lesende Befehle (journalctl, systemctl status, tail, df, ss) sind jederzeit erlaubt.
- Vor jedem schreibenden Befehl kurz erklären, was er ändert, und auf Freigabe warten.
- Nie Pakete entfernen, nie Dateien unter /var/lib löschen, nie Benutzer anlegen oder löschen.
- Passwörter, Schlüssel und Kundendaten nie in Ausgaben wiederholen.
- Am Ende jeder Aufgabe eine Zusammenfassung in drei Sätzen liefern.
EOF

Dazu kommt eine Allowlist der Werkzeuge, damit Claude Code lesende Befehle ohne Rückfrage ausführt und alles andere anfragt. Die Datei ~/.claude/settings.json gilt für den Benutzer:

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

Jetzt die erste Aufgabe, interaktiv:

cd ~/server && claude
> Fasse die Fehler aus journalctl der letzten 24 Stunden zusammen und nenne die drei häufigsten Ursachen.

Und dieselbe Aufgabe unbeaufsichtigt, etwa als täglicher Cronjob um 7 Uhr, dessen Ergebnis per E-Mail kommt:

0 7 * * * cd /home/aiagent/server && /home/aiagent/.local/bin/claude -p "Fasse Fehler und Warnungen aus journalctl der letzten 24 Stunden zusammen. Nenne Dienst, Uhrzeit und wahrscheinliche Ursache." --allowedTools "Bash(sudo journalctl:*)" 2>&1 | mail -s "Tagesbericht Server" admin@example.com

Der Schalter -p startet Claude Code ohne interaktive Sitzung, --allowedTools begrenzt die Werkzeuge auf genau das, was der Lauf braucht. Schreibende Aktionen gehören nicht in unbeaufsichtigte Läufe.

Schritt 5: Codex CLI (ChatGPT) installieren und anmelden

Codex CLI ist das Werkzeug von OpenAI, das die Modelle hinter ChatGPT auf die Kommandozeile bringt. Installation im selben Benutzerkonto:

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

Die Anmeldung läuft mit dem ChatGPT-Konto (Plus, Pro oder Team): codex starten, „Sign in with ChatGPT" wählen und die angezeigte Adresse auf einem Gerät mit Browser öffnen. Für Skripte setzen Sie stattdessen einen API-Schlüssel aus der OpenAI-Plattform:

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

Codex bringt eine eigene Sandbox und einen Genehmigungsmodus mit. Beides wird in ~/.codex/config.toml festgelegt; für einen Produktionsserver ist diese Kombination sinnvoll:

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

workspace-write erlaubt Schreibzugriffe nur im aktuellen Arbeitsverzeichnis, on-request lässt den Agenten für alles darüber hinaus um Erlaubnis fragen. Die Stufe danger-full-access hebt beides auf und gehört nicht auf ein Produktionssystem. Regeln wie in CLAUDE.md liest Codex aus einer Datei AGENTS.md im Arbeitsverzeichnis; Sie können denselben Inhalt verwenden:

cp ~/server/CLAUDE.md ~/server/AGENTS.md
cd ~/server && codex "Prüfe, ob alle aktivierten systemd-Dienste laufen, und liste die fehlgeschlagenen mit der letzten Fehlermeldung auf."

Für unbeaufsichtigte Läufe gibt es codex exec "Aufgabe", das Gegenstück zu claude -p.

Alternative: Der Agent läuft auf Ihrem Rechner und arbeitet per SSH

Wer nichts auf dem Server installieren möchte, startet Claude Code oder Codex auf dem Laptop und lässt den Agenten Befehle über SSH absetzen. Dafür bekommt der Server einen eigenen SSH-Schlüssel des Agent-Benutzers, und in CLAUDE.md steht die Regel, alle Serverbefehle mit ssh aiagent@server voranzustellen. Das funktioniert für gelegentliche Wartung gut, längere Aufgaben und Cronjobs laufen aber besser direkt auf dem Server.

Schritt 6: Absichern und Grenzen setzen

  • Snapshot oder Backup vor jeder Sitzung, in der etwas geändert werden soll. Die Backup-Strategie für Server zeigt, wie das automatisch läuft.
  • Genehmigungsmodus anlassen. --dangerously-skip-permissions bei Claude Code und danger-full-access bei Codex sind für Wegwerf-VMs gedacht.
  • Geheimnisse außerhalb des Zugriffs. Der Agent-Benutzer darf .env-Dateien, Datenbankpasswörter und Kundendaten nicht lesen können. Was er liest, geht zum Anbieter.
  • Kostenlimit für jeden API-Schlüssel in der Konsole des Anbieters setzen.
  • Nachvollziehbarkeit: etckeeper installieren, damit jede Änderung unter /etc in Git landet, und die Zusammenfassungen des Agenten aufheben.
  • Eingehend ändert sich nichts. Beide Werkzeuge brauchen nur ausgehendes HTTPS. Firewall, Fail2ban und der DDoS-Schutz des Hosters bleiben unverändert.

Typische Fehler und Lösungen

MeldungUrsache und Lösung
EACCES: permission denied bei npm install -gnpm will in ein Systemverzeichnis schreiben. Benutzerpräfix setzen: npm config set prefix ~/.npm-global, dann export PATH=~/.npm-global/bin:$PATH in ~/.bashrc eintragen und erneut installieren.
Node.js version ... is not supportedZu alte Version aus den Distributionsquellen. Schritt 2 wiederholen und mit node --version prüfen, dass 22.x aktiv ist.
Anmeldung öffnet keinen BrowserErwartet auf einem Server. Die angezeigte Adresse auf einem anderen Gerät öffnen und den Code eingeben, oder auf einen API-Schlüssel umstellen.
ECONNREFUSED oder Zeitüberschreitung beim StartAusgehendes HTTPS ist blockiert. Firewall-Regeln für Port 443 nach außen prüfen; auf KernelHost-Servern ist ausgehender Verkehr ab Werk frei.
429 rate limit oder overloadedKontingent des Abos oder der API erschöpft beziehungsweise Anbieter ausgelastet. Kurz warten, unbeaufsichtigte Läufe mit einer Wiederholung nach einigen Minuten versehen.
Der Agent fragt bei jedem Befehl nachAllowlist in ~/.claude/settings.json beziehungsweise approval_policy in config.toml ergänzen, aber nur um lesende Befehle.

Fazit

Ein KI-Agent auf dem Server ist in einer Stunde eingerichtet: Benutzer, sudo-Allowlist, Node.js, Werkzeug, Regeln. Die eigentliche Arbeit steckt in den Grenzen, und die sind hier bewusst eng gezogen. Erweitern Sie sie Schritt für Schritt, wenn eine Aufgabe es verlangt, nie pauschal. Auf einem KernelHost-Rootserver oder Dedicated Server ist dafür nichts freizuschalten: Root-Zugriff, freie Distributionswahl und ausgehende Verbindungen sind Standard.

Häufige Fragen

Brauche ich für Claude Code ein Abo oder reicht ein API-Schlüssel?
Beides funktioniert. Mit einem Claude-Konto (Pro, Max oder Team) melden Sie sich beim ersten Start über den Browser an, auf einem Server ohne Browser über einen Code auf einem anderen Gerät. Für automatisierte Aufgaben ohne Menschen davor ist ein API-Schlüssel in der Umgebungsvariable ANTHROPIC_API_KEY der sauberere Weg, weil er nicht an eine Person gebunden ist und sich mit einem Budget deckeln lässt.
Wie melde ich Codex CLI auf einem Server ohne Browser an?
Entweder über die Anmeldung mit dem ChatGPT-Konto, bei der Codex eine Adresse anzeigt, die Sie auf Laptop oder Smartphone öffnen, oder über die Umgebungsvariable OPENAI_API_KEY mit einem Schlüssel aus der OpenAI-Plattform. Für Cronjobs und Skripte ist der API-Schlüssel die verlässlichere Variante.
Welche Node.js-Version brauche ich?
Claude Code verlangt mindestens Node.js 18, Codex CLI mindestens Node.js 22. Installieren Sie deshalb gleich Node.js 22 LTS über das NodeSource-Repository oder mit nvm im Home-Verzeichnis des Agent-Benutzers. Die Version aus den Debian-12-Paketquellen ist zu alt.
Warum schlägt npm install -g mit EACCES fehl?
Weil npm global in ein Systemverzeichnis schreiben will, auf das der Benutzer keine Rechte hat. Setzen Sie ein Benutzerpräfix mit npm config set prefix ~/.npm-global, ergänzen Sie ~/.npm-global/bin im PATH und installieren Sie erneut. Alternativ nutzen Sie nvm oder für Claude Code den nativen Installer, der ohne npm auskommt.
Kann ich Claude Code in einem Cronjob laufen lassen?
Ja, mit claude -p und einer Aufgabe als Text sowie einer Allowlist der erlaubten Werkzeuge. Verwenden Sie dafür einen API-Schlüssel, begrenzen Sie die Werkzeuge auf lesende Befehle und leiten Sie die Ausgabe in eine Datei oder eine E-Mail. Eingreifende Aktionen gehören nicht in unbeaufsichtigte Läufe.
Läuft das auch auf Windows-Servern von KernelHost?
Ja. Claude Code und Codex CLI laufen unter Windows nativ mit Node.js oder im Windows-Subsystem für Linux. Die Schritte zu Benutzer und sudo-Allowlist entsprechen dort einem eigenen Windows-Benutzer ohne Administratorrechte.

Claude Code Codex CLI ChatGPT KI-Agent Node.js Debian Ubuntu Serveradministration