Claude Code ve ChatGPT Codex'i Linux sunucuya kurma: adım adım

Yayınlanma tarihi 8 dk okuma

Yeni kurulmuş bir Debian veya Ubuntu sunucudan çalışan bir AI ajanına: kullanıcı ve sudo beyaz listesi, Node.js 22, Claude Code ve Codex CLI kurulumu ve oturum açma, CLAUDE.md ve AGENTS.md, ilk görevler ve tipik hatalar.

Bu rehber sizi yeni kurulmuş bir Debian veya Ubuntu sunucudan, logları analiz eden, yapılandırmaları kontrol eden ve bakım görevlerini yürüten çalışır bir AI ajanına götürür. Claude Code'u (Anthropic) ve Codex CLI'yi (OpenAI, ChatGPT'nin arkasındaki komut satırı aracı) kuruyoruz; ikisi de sınırlı yetkili ayrı bir kullanıcı altında. Tüm komutlar Debian 13 ve Ubuntu 24.04 ile bir KernelHost KVM root sunucusunda test edildi. AI ile yönetilen sunucunun genel olarak ne olduğu ve hangi mimarilerin bulunduğu AI ile yönetilen sunucu: AI ajanlarını güvenle bağlama makalesinde anlatılıyor.

Eylül 2026 itibarıyla durum. Araçlar hızla gelişiyor; şüphe halinde anahtarları claude --help veya codex --help ile kontrol edin.

Ön koşullar

  • Debian 12 veya 13 ya da Ubuntu 22.04 veya 24.04 kurulu ve SSH üzerinden root erişimi olan bir root sunucu. AlmaLinux ve Rocky Linux'ta adımlar aynıdır, yalnızca paket komutları apt yerine dnf olarak adlandırılır.
  • Temel sertleştirme yapılmış: anahtarla SSH girişi, güvenlik duvarı, otomatik güvenlik güncellemeleri. Yeni root sunucular için kontrol listesi bunu kapsar.
  • Bir Anthropic hesabı (Claude Pro, Max veya Team) veya bir API anahtarı, bir ChatGPT hesabı (Plus, Pro veya Team) veya bir OpenAI API anahtarı. Yalnızca bir aracı kurmak istiyorsanız bunlardan yalnızca birine ihtiyacınız var.
  • api.anthropic.com ve api.openai.com adreslerine giden HTTPS. KernelHost sunucularında bu baştan verilidir; kısıtlayıcı bir kendi güvenlik duvarınızın buna izin vermesi gerekir.

Adım 1: ayrı kullanıcı oluşturup sudo'yu sınırlayın

Ajan asla root olarak çalışmaz. Kendi hesabını ve bir sudo beyaz listesi üzerinden tam olarak ihtiyaç duyduğu komutları alır. Birkaç okuma komutuyla başlayın ve bir görev gerçekten gerektirdiğinde listeyi genişletin.

sudo adduser --disabled-password --gecos "AI ajani" 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

Son satır sözdizimini kontrol eder. Bir sudoers dosyasındaki hata sudo'yu herkes için kilitleyebilir, bu yüzden kontrol her zaman işin parçasıdır. --disabled-password, kimsenin aiagent olarak parolayla oturum açamamasını sağlar; hesaba daha sonra sudo -iu aiagent ile geçersiniz.

Ajan /etc altındaki dosyaları değiştirecekse ona sudo üzerinden nano vermeyin (o zaman her dosya düzenlenebilirdi, /etc/sudoers dahil); bunun yerine bir grup ve hedefli yazma yetkileriyle çalışın, örneğin setfacl -m u:aiagent:rw /etc/nginx/sites-available/sitem.conf. Başlangıçta ajanın değişiklikleri önermesi ve sizin uygulamanız tamamen yeterlidir.

Adım 2: Node.js 22 kurun

İki araç da Node.js üzerinde çalışır. Claude Code en az sürüm 18, Codex CLI en az 22 gerektirir, bu yüzden 22 LTS kuruyoruz. Debian 12'nin paket kaynakları çok eski bir sürüm sunar; NodeSource güncel olanı sunar:

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

İnternetten gelen betikleri root yetkisiyle çalıştırmak istemeyen, ajan kullanıcısının ev dizininde nvm kullanır; bu tamamen root yetkisi olmadan çalışır. Ayrıntılar ve alternatifler Debian'da Node.js rehberinde.

Adım 3: Claude Code'u kurup oturum açın

Bundan sonra ajanın hesabında çalışıyoruz:

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

Yerel yükleyici Claude Code'u ~/.local/bin altına koyar ve kendini güncel tutar. Alternatif olarak npm ile npm install -g @anthropic-ai/claude-code komutuyla da olur; EACCES ile başarısız olursa aşağıdaki sorun giderme bölümü yardımcı olur.

claude ilk başlatıldığında araç oturum açmanızı ister. Bir Claude hesabıyla normalde tarayıcıyı açar; tarayıcısız bir sunucuda bir adres ve bir kod gösterir, bunu dizüstü veya telefonda onaylarsınız. Betikler ve cron görevleri için API anahtarı daha iyi seçimdir:

echo 'export ANTHROPIC_API_KEY="sk-ant-..."' >> ~/.bashrc
chmod 600 ~/.bashrc
source ~/.bashrc
claude -p "Sadece OK diye yanıt ver" 

Anahtar böylece yalnızca diğer kullanıcıların okuyamadığı ajan kullanıcısının ev dizininde bulunur. Anthropic konsolunda aylık harcama sınırıyla oluşturun, böylece kontrolden çıkan bir oturum pahalıya mal olamaz.

Adım 4: Claude Code'u sunucu için yapılandırın

Claude Code başlangıçta geçerli dizindeki CLAUDE.md dosyasını okur. Her oturum için geçerli kurallar burada yer alır. Ajanın ev dizininde bu dosyayla bir çalışma dizini oluşturun:

mkdir -p ~/server && cd ~/server
cat > CLAUDE.md <<'EOF'
# Bu sunucu için kurallar
- Bu bir üretim sunucusudur (Debian 13, nginx, PHP-FPM, MariaDB).
- Okuma komutlarına (journalctl, systemctl status, tail, df, ss) her zaman izin verilir.
- Her yazma komutundan önce: neyi değiştirdiğini kısaca açıkla ve onayı bekle.
- Asla paket kaldırma, /var/lib altında asla dosya silme, asla kullanıcı oluşturma veya silme.
- Çıktıda asla parola, anahtar veya müşteri verisi tekrarlama.
- Her görevin sonunda üç cümlelik bir özet ver.
EOF

Buna, Claude Code'un okuma komutlarını sormadan çalıştırması ve diğer her şey için onay istemesi amacıyla bir araç beyaz listesi eklenir. ~/.claude/settings.json dosyası kullanıcı için geçerlidir:

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

Şimdi ilk görev, etkileşimli olarak:

cd ~/server && claude
> Son 24 saatin journalctl hatalarını özetle ve en sık görülen üç nedeni söyle.

Ve aynı görev gözetimsiz, örneğin sonucu e-postayla gelen, her sabah 7'de çalışan bir cron görevi olarak:

0 7 * * * cd /home/aiagent/server && /home/aiagent/.local/bin/claude -p "Son 24 saatin journalctl hatalarını ve uyarılarını özetle. Servisi, zamanı ve olası nedeni belirt." --allowedTools "Bash(sudo journalctl:*)" 2>&1 | mail -s "Günlük sunucu raporu" admin@example.com

-p anahtarı Claude Code'u etkileşimli oturum olmadan başlatır, --allowedTools araçları tam olarak çalıştırmanın ihtiyaç duyduğuyla sınırlar. Yazma işlemlerinin gözetimsiz çalıştırmalarda yeri yoktur.

Adım 5: Codex CLI'yi (ChatGPT) kurup oturum açın

Codex CLI, ChatGPT'nin arkasındaki modelleri komut satırına getiren OpenAI aracıdır. Aynı kullanıcı hesabında kurulum:

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

Oturum açma ChatGPT hesabıyla yapılır (Plus, Pro veya Team): codex komutunu başlatın, „Sign in with ChatGPT" seçeneğini seçin ve gösterilen adresi tarayıcısı olan bir cihazda açın. Betikler için bunun yerine OpenAI platformundan bir API anahtarı ayarlarsınız:

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

Codex'in kendi sandbox'ı ve bir onay modu vardır. İkisi de ~/.codex/config.toml dosyasında belirlenir; bir üretim sunucusu için bu kombinasyon makuldür:

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

workspace-write yalnızca geçerli çalışma dizinine yazmaya izin verir, on-request ajanın bunun ötesindeki her şey için izin istemesini sağlar. danger-full-access düzeyi ikisini de kaldırır ve bir üretim sisteminde yeri yoktur. CLAUDE.md içindekiler gibi kuralları Codex, çalışma dizinindeki bir AGENTS.md dosyasından okur; aynı içeriği kullanabilirsiniz:

cp ~/server/CLAUDE.md ~/server/AGENTS.md
cd ~/server && codex "Etkin tüm systemd servislerinin çalışıp çalışmadığını kontrol et ve başarısız olanları son hata mesajıyla listele."

Gözetimsiz çalıştırmalar için codex exec "görev" vardır, claude -p komutunun karşılığı.

Alternatif: ajan kendi bilgisayarınızda çalışır ve SSH üzerinden iş yapar

Sunucuya hiçbir şey kurmak istemeyen, Claude Code veya Codex'i dizüstünde başlatır ve ajanın komutları SSH üzerinden göndermesini sağlar. Bunun için sunucu, ajan kullanıcısı için ayrı bir SSH anahtarı alır ve CLAUDE.md içinde tüm sunucu komutlarının ssh aiagent@server ile başlaması kuralı yer alır. Ara sıra bakım için bu iyi çalışır, ancak daha uzun görevler ve cron görevleri doğrudan sunucuda daha iyi çalışır.

Adım 6: güvence altına alın ve sınırlar koyun

  • Bir şeyin değişeceği her oturumdan önce anlık görüntü veya yedek. Sunucular için yedekleme stratejisi bunun otomatik olarak nasıl yapılacağını gösterir.
  • Onay modu açık kalır. Claude Code'daki --dangerously-skip-permissions ve Codex'teki danger-full-access tek kullanımlık sanal makineler için düşünülmüştür.
  • Sırlar erişim dışında. Ajan kullanıcısı .env dosyalarını, veritabanı parolalarını ve müşteri verilerini okuyamamalıdır. Okuduğu şey sağlayıcıya gider.
  • Maliyet sınırı, sağlayıcının konsolunda her API anahtarı için.
  • İzlenebilirlik: /etc altındaki her değişikliğin Git'e girmesi için etckeeper kurun ve ajanın özetlerini kaydedin.
  • Gelen tarafta hiçbir şey değişmez. İki araç da yalnızca giden HTTPS'e ihtiyaç duyar. Güvenlik duvarı, Fail2ban ve sağlayıcının DDoS koruması olduğu gibi kalır.

Tipik hatalar ve çözümler

MesajNeden ve çözüm
npm install -g sırasında EACCES: permission deniednpm bir sistem dizinine yazmak istiyor. Kullanıcı öneki ayarlayın: npm config set prefix ~/.npm-global, ardından export PATH=~/.npm-global/bin:$PATH satırını ~/.bashrc dosyasına ekleyin ve yeniden kurun.
Node.js version ... is not supportedDağıtım kaynaklarından çok eski sürüm. Adım 2'yi tekrarlayın ve node --version ile 22.x'in etkin olduğunu kontrol edin.
Oturum açma tarayıcı açmıyorSunucuda beklenen durum. Gösterilen adresi başka bir cihazda açıp kodu girin ya da API anahtarına geçin.
Başlangıçta ECONNREFUSED veya zaman aşımıGiden HTTPS engelli. Dışa doğru 443 portu için güvenlik duvarı kurallarını kontrol edin; KernelHost sunucularında giden trafik baştan serbesttir.
429 rate limit veya overloadedAbonelik veya API kotası tükenmiş ya da sağlayıcı aşırı yüklü. Kısa bir süre bekleyin, gözetimsiz çalıştırmalara birkaç dakika sonra yeni bir deneme verin.
Ajan her komutta soruyor~/.claude/settings.json içindeki beyaz listeyi ya da config.toml içindeki approval_policy değerini genişletin, ama yalnızca okuma komutlarıyla.

Sonuç

Sunucuda bir AI ajanı bir saatte kurulur: kullanıcı, sudo beyaz listesi, Node.js, araç, kurallar. Asıl iş sınırlardadır ve burada bilinçli olarak dardır. Bir görev gerektirdiğinde adım adım genişletin, asla toptan değil. Bir KernelHost root sunucusunda veya dedicated sunucuda bunun için hiçbir şeyin etkinleştirilmesi gerekmez: root erişimi, serbest dağıtım seçimi ve giden bağlantılar standarttır.

Sıkça sorulan sorular

Claude Code için abonelik mi gerekir yoksa bir API anahtarı yeter mi?
İkisi de çalışır. Bir Claude hesabıyla (Pro, Max veya Team) ilk başlatmada tarayıcı üzerinden, tarayıcısız bir sunucuda ise başka bir cihazdaki bir kodla oturum açarsınız. Başında insan olmayan otomatik görevler için ANTHROPIC_API_KEY ortam değişkenindeki bir API anahtarı daha temiz yoldur, çünkü bir kişiye bağlı değildir ve bütçeyle sınırlanabilir.
Tarayıcısız bir sunucuda Codex CLI ile nasıl oturum açarım?
Ya Codex'in dizüstü veya telefonda açtığınız bir adres gösterdiği ChatGPT hesabı girişiyle ya da OpenAI platformundan alınan bir anahtarla OPENAI_API_KEY ortam değişkeni üzerinden. Cron görevleri ve betikler için API anahtarı daha güvenilir seçenektir.
Hangi Node.js sürümüne ihtiyacım var?
Claude Code en az Node.js 18, Codex CLI en az Node.js 22 gerektirir. Bu yüzden doğrudan NodeSource deposundan veya ajan kullanıcısının ev dizininde nvm ile Node.js 22 LTS kurun. Debian 12 paket kaynaklarındaki sürüm çok eskidir.
npm install -g neden EACCES ile başarısız oluyor?
Çünkü npm, kullanıcının yetkisi olmayan bir sistem dizinine global olarak yazmak istiyor. npm config set prefix ~/.npm-global ile bir kullanıcı öneki ayarlayın, ~/.npm-global/bin dizinini PATH'e ekleyin ve yeniden kurun. Alternatif olarak nvm'i ya da Claude Code için npm'siz çalışan yerel yükleyiciyi kullanın.
Claude Code'u bir cron görevinde çalıştırabilir miyim?
Evet, claude -p ile metin olarak bir görev ve izin verilen araçların beyaz listesiyle. Bunun için bir API anahtarı kullanın, araçları okuma komutlarıyla sınırlayın ve çıktıyı bir dosyaya veya e-postaya yönlendirin. Müdahale eden işlemlerin gözetimsiz çalıştırmalarda yeri yoktur.
Bu, KernelHost'un Windows sunucularında da çalışır mı?
Evet. Claude Code ve Codex CLI, Windows'ta Node.js ile yerel olarak veya Windows Subsystem for Linux içinde çalışır. Kullanıcı ve sudo beyaz listesi adımlarının karşılığı orada yönetici yetkisi olmayan ayrı bir Windows kullanıcısıdır.

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