Instalarea Claude Code și ChatGPT Codex pe un server Linux: pas cu pas
De la un server Debian sau Ubuntu proaspăt instalat la un agent AI funcțional: utilizator și listă albă sudo, Node.js 22, instalarea și autentificarea Claude Code și Codex CLI, CLAUDE.md și AGENTS.md, primele sarcini și erorile tipice.
Acest ghid te duce de la un server Debian sau Ubuntu proaspăt instalat la un agent AI funcțional care analizează jurnale, verifică configurații și execută sarcini de întreținere. Configurăm Claude Code (Anthropic) și Codex CLI (OpenAI, instrumentul de linie de comandă din spatele ChatGPT), ambele sub un utilizator propriu cu drepturi limitate. Toate comenzile au fost testate pe un server root KVM KernelHost cu Debian 13 și Ubuntu 24.04. Ce este în general un server gestionat de AI și ce arhitecturi există descrie articolul Server gestionat de AI: conectarea sigură a agenților AI.
Situația din septembrie 2026. Instrumentele evoluează rapid; în caz de îndoială, verifică opțiunile cuclaude --help, respectivcodex --help.
Cerințe preliminare
- Un server root cu Debian 12 sau 13, respectiv Ubuntu 22.04 sau 24.04 și acces root prin SSH. Pe AlmaLinux și Rocky Linux pașii sunt aceiași, doar comenzile pentru pachete se numesc
dnfîn loc deapt. - Securizarea de bază făcută: autentificare SSH cu cheie, firewall, actualizări de securitate automate. Lista de verificare pentru servere root noi acoperă asta.
- Un cont la Anthropic (Claude Pro, Max sau Team) sau o cheie API, un cont ChatGPT (Plus, Pro sau Team) sau o cheie API OpenAI. Ai nevoie doar de unul dintre ele dacă vrei să configurezi un singur instrument.
- HTTPS de ieșire către
api.anthropic.comșiapi.openai.com. Pe serverele KernelHost este dat de la început; un firewall propriu restrictiv trebuie să permită asta.
Pasul 1: creezi un utilizator propriu și limitezi sudo
Agentul nu rulează niciodată ca root. Primește un cont propriu și, printr-o listă albă sudo, exact comenzile de care are nevoie. Începe cu câteva comenzi de citire și extinde lista atunci când o sarcină o cere cu adevărat.
sudo adduser --disabled-password --gecos "Agent AI" 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
Ultima linie verifică sintaxa. O eroare într-un fișier sudoers poate bloca sudo pentru toți, de aceea verificarea face mereu parte din proces. --disabled-password asigură că nimeni nu se poate autentifica ca aiagent cu parolă; mai târziu treci pe cont cu sudo -iu aiagent.
Dacă agentul trebuie să modifice fișiere în /etc, nu îi da nano prin sudo (astfel ar putea edita orice fișier, inclusiv /etc/sudoers), ci lucrează cu un grup și drepturi de scriere țintite, de exemplu setfacl -m u:aiagent:rw /etc/nginx/sites-available/site-ul-meu.conf. La început este pe deplin suficient ca agentul să propună modificările și tu să le aplici.
Pasul 2: instalezi Node.js 22
Ambele instrumente rulează pe Node.js. Claude Code necesită cel puțin versiunea 18, Codex CLI cel puțin 22, de aceea instalăm 22 LTS. Sursele de pachete din Debian 12 livrează o versiune prea veche; NodeSource o livrează pe cea actuală:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
node --version
npm --version
Cine nu vrea să ruleze scripturi de pe internet cu drepturi de root folosește nvm în directorul home al utilizatorului agent; merge complet fără drepturi de root. Detalii și alternative în ghidul Node.js pe Debian.
Pasul 3: instalezi Claude Code și te autentifici
De aici lucrăm în contul agentului:
sudo -iu aiagent
curl -fsSL https://claude.ai/install.sh | bash
claude --version
Instalatorul nativ pune Claude Code în ~/.local/bin și se menține singur actualizat. Alternativ merge prin npm cu npm install -g @anthropic-ai/claude-code; dacă eșuează cu EACCES, ajută secțiunea de depanare de mai jos.
La prima pornire a claude, instrumentul cere autentificarea. Cu un cont Claude deschide în mod normal browserul; pe un server fără browser afișează o adresă și un cod pe care le confirmi pe laptop sau pe telefon. Pentru scripturi și joburi cron, cheia API este alegerea mai bună:
echo 'export ANTHROPIC_API_KEY="sk-ant-..."' >> ~/.bashrc
chmod 600 ~/.bashrc
source ~/.bashrc
claude -p "Răspunde doar cu OK"
Cheia se află astfel doar în directorul home al utilizatorului agent, pe care alți utilizatori nu îl pot citi. Creeaz-o în consola Anthropic cu o limită lunară de cheltuieli, astfel încât o sesiune scăpată de sub control să nu poată deveni scumpă.
Pasul 4: configurezi Claude Code pentru server
Claude Code citește la pornire un fișier CLAUDE.md din directorul curent. În el stau regulile valabile pentru fiecare sesiune. Creează un director de lucru cu acest fișier în directorul home al agentului:
mkdir -p ~/server && cd ~/server
cat > CLAUDE.md <<'EOF'
# Reguli pentru acest server
- Acesta este un server de producție (Debian 13, nginx, PHP-FPM, MariaDB).
- Comenzile de citire (journalctl, systemctl status, tail, df, ss) sunt întotdeauna permise.
- Înaintea fiecărei comenzi de scriere: explică pe scurt ce modifică și așteaptă aprobarea.
- Nu elimina niciodată pachete, nu șterge niciodată fișiere din /var/lib, nu crea și nu șterge niciodată utilizatori.
- Nu repeta niciodată parole, chei sau date ale clienților în rezultat.
- La sfârșitul fiecărei sarcini, dă un rezumat în trei propoziții.
EOF
La aceasta se adaugă o listă albă de instrumente, astfel încât Claude Code să execute comenzile de citire fără să întrebe și să ceară aprobare pentru orice altceva. Fișierul ~/.claude/settings.json este valabil pentru utilizator:
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
Acum prima sarcină, interactiv:
cd ~/server && claude
> Rezumă erorile din journalctl din ultimele 24 de ore și numește cele trei cauze cele mai frecvente.
Și aceeași sarcină nesupravegheată, de exemplu ca job cron zilnic la ora 7, al cărui rezultat vine prin e-mail:
0 7 * * * cd /home/aiagent/server && /home/aiagent/.local/bin/claude -p "Rezumă erorile și avertismentele din journalctl din ultimele 24 de ore. Indică serviciul, momentul și cauza probabilă." --allowedTools "Bash(sudo journalctl:*)" 2>&1 | mail -s "Raport zilnic server" admin@example.com
Opțiunea -p pornește Claude Code fără sesiune interactivă, --allowedTools limitează instrumentele exact la ce are nevoie rularea. Acțiunile de scriere nu își au locul în rulări nesupravegheate.
Pasul 5: instalezi Codex CLI (ChatGPT) și te autentifici
Codex CLI este instrumentul OpenAI care aduce modelele din spatele ChatGPT în linia de comandă. Instalare în același cont de utilizator:
npm install -g @openai/codex
codex --version
Autentificarea se face cu contul ChatGPT (Plus, Pro sau Team): pornește codex, alege „Sign in with ChatGPT" și deschide adresa afișată pe un dispozitiv cu browser. Pentru scripturi setezi în schimb o cheie API de pe platforma OpenAI:
echo 'export OPENAI_API_KEY="sk-..."' >> ~/.bashrc
source ~/.bashrc
Codex are propriul sandbox și un mod de aprobare. Ambele se stabilesc în ~/.codex/config.toml; pentru un server de producție această combinație este rezonabilă:
mkdir -p ~/.codex
cat > ~/.codex/config.toml <<'EOF'
approval_policy = "on-request"
sandbox_mode = "workspace-write"
EOF
workspace-write permite scrierea doar în directorul de lucru curent, on-request îl face pe agent să ceară permisiune pentru tot ce depășește asta. Nivelul danger-full-access le anulează pe ambele și nu își are locul pe un sistem de producție. Reguli ca în CLAUDE.md Codex le citește dintr-un fișier AGENTS.md din directorul de lucru; poți folosi același conținut:
cp ~/server/CLAUDE.md ~/server/AGENTS.md
cd ~/server && codex "Verifică dacă toate serviciile systemd activate rulează și listează-le pe cele eșuate cu ultimul mesaj de eroare."
Pentru rulări nesupravegheate există codex exec "sarcină", echivalentul lui claude -p.
Alternativă: agentul rulează pe calculatorul tău și lucrează prin SSH
Cine nu vrea să instaleze nimic pe server pornește Claude Code sau Codex pe laptop și lasă agentul să trimită comenzi prin SSH. Serverul primește pentru asta o cheie SSH proprie pentru utilizatorul agent, iar în CLAUDE.md stă regula ca toate comenzile pentru server să înceapă cu ssh aiagent@server. Pentru întreținere ocazională funcționează bine, dar sarcinile mai lungi și joburile cron rulează mai bine direct pe server.
Pasul 6: securizezi și stabilești limite
- Snapshot sau backup înaintea fiecărei sesiuni în care se schimbă ceva. Strategia de backup pentru servere arată cum se face automat.
- Modul de aprobare rămâne activ.
--dangerously-skip-permissionsîn Claude Code șidanger-full-accessîn Codex sunt gândite pentru mașini virtuale de unică folosință. - Secretele în afara razei de acțiune. Utilizatorul agent nu trebuie să poată citi fișiere
.env, parole de baze de date și date ale clienților. Ce citește ajunge la furnizor. - Limită de cost pentru fiecare cheie API în consola furnizorului.
- Trasabilitate: instalează
etckeeper, astfel încât fiecare modificare din/etcsă ajungă în Git, și salvează rezumatele agentului. - La intrare nu se schimbă nimic. Ambele instrumente au nevoie doar de HTTPS de ieșire. Firewallul, Fail2ban și protecția DDoS a furnizorului rămân neschimbate.
Erori tipice și soluții
| Mesaj | Cauză și soluție |
EACCES: permission denied la npm install -g | npm vrea să scrie într-un director de sistem. Setează un prefix de utilizator: npm config set prefix ~/.npm-global, apoi export PATH=~/.npm-global/bin:$PATH în ~/.bashrc și instalează din nou. |
Node.js version ... is not supported | Versiune prea veche din sursele distribuției. Repetă pasul 2 și verifică cu node --version că 22.x este activă. |
| Autentificarea nu deschide niciun browser | Pe un server este de așteptat. Deschide adresa afișată pe alt dispozitiv și introdu codul, sau treci la o cheie API. |
ECONNREFUSED sau timeout la pornire | HTTPS de ieșire este blocat. Verifică regulile de firewall pentru portul 443 spre exterior; pe serverele KernelHost traficul de ieșire este liber de la început. |
429 rate limit sau overloaded | Cota abonamentului sau a API-ului este epuizată sau furnizorul este supraîncărcat. Așteaptă puțin, rulărilor nesupravegheate dă-le o nouă încercare după câteva minute. |
| Agentul întreabă la fiecare comandă | Extinde lista albă din ~/.claude/settings.json, respectiv approval_policy din config.toml, dar doar cu comenzi de citire. |
Concluzie
Un agent AI pe server este configurat într-o oră: utilizator, listă albă sudo, Node.js, instrument, reguli. Munca propriu-zisă stă în limite, iar acestea sunt aici în mod deliberat strânse. Extinde-le pas cu pas când o sarcină o cere, niciodată în bloc. Pe un server root KernelHost sau un server dedicat nu trebuie activat nimic pentru asta: accesul root, alegerea liberă a distribuției și conexiunile de ieșire sunt standard.
Întrebări frecvente
Am nevoie de abonament pentru Claude Code sau este suficientă o cheie API?
Cum autentific Codex CLI pe un server fără browser?
De ce versiune Node.js am nevoie?
De ce eșuează npm install -g cu EACCES?
Pot rula Claude Code într-un job cron?
Funcționează și pe serverele Windows de la KernelHost?
2026 KernelHost GmbH. Toate drepturile rezervate. Acest ghid este protejat de legea drepturilor de autor. Republicarea lui pe alte site-uri, integral, parțial sau în formă modificată, nu este permisă fără acordul nostru scris. Citatele cu indicarea sursei și cu link sunt binevenite.

