Claude Code ve ChatGPT Codex'i Linux sunucuya kurma: adım adım
Sıfırdan kurulmuş bir Debian veya Ubuntu sisteminden çalışır durumda bir AI ajanına: kullanıcı ve sudo beyaz listesi, Node.js 22, Claude Code, Codex CLI ve Gemini CLI için kurulum ve oturum açma, kural dosyaları, cron görevleri, ilk görevler ve tipik hatalar.
Bu rehber, yeni kurulmuş bir Debian veya Ubuntu sunucudan yola çıkarak logları analiz eden, yapılandırmaları kontrol eden ve bakım görevlerini yürüten, çalışır durumda bir AI ajanına ulaşmanızı sağlar. Claude Code'u (Anthropic) ve Codex CLI'yi (OpenAI, ChatGPT'nin arkasındaki komut satırı aracı), ikisini de sınırlı yetkilere sahip ayrı bir kullanıcı altında kuruyor ve üçüncü seçenek olarak Gemini CLI'yi (Google) gösteriyoruz. Tüm komutlar Debian 13 ve Ubuntu 24.04 yüklü bir KernelHost KVM root sunucusunda baştan sona denendi. AI ile yönetilen sunucunun temelde ne olduğunu ve hangi mimarilerin bulunduğunu AI ile yönetilen sunucu: AI ajanlarını güvenle bağlama yazısında bulabilirsiniz.
Bilgiler Eylül 2026 itibarıyla günceldir. Araçlar hızla gelişiyor; emin olmadığınız durumlarda seçeneklericlaude --help,codex --helpveyagemini --helpile kontrol edin.
Ön koşullar
- Debian 12 veya 13 ya da Ubuntu 22.04 veya 24.04 yüklü ve SSH üzerinden root erişimi olan bir root sunucu. AlmaLinux ve Rocky Linux'ta adımlar aynıdır, yalnızca paket komutları
dnfile çalışır,aptile değil. - Temel sertleştirme tamamlanmış olmalı: anahtarla SSH girişi, güvenlik duvarı, otomatik güvenlik güncellemeleri. Yeni root sunucular için kontrol listesi bunların hepsini kapsar.
- Bir Anthropic hesabı (Claude Pro, Max veya Team) ya da bir API anahtarı; bir ChatGPT hesabı (Plus, Pro veya Team) ya da bir OpenAI API anahtarı. Yalnızca tek bir aracı kurmak istiyorsanız bunlardan biri yeterlidir.
api.anthropic.comveapi.openai.comadreslerine giden HTTPS bağlantısı. KernelHost sunucularında bu baştan sağlanır; kendi kurduğunuz kısıtlayıcı bir güvenlik duvarı varsa buna izin vermelidir.
Bir AI ajanı için hangi sunucu yeterlidir?
Bir AI ajanı sunucuda özel bir donanıma veya GPU'ya ihtiyaç duymaz, çünkü dil modeli sağlayıcıda çalışır. Sunucuda yalnızca komut satırı aracı ve Node.js çalışır; ikisi birlikte bir oturum sırasında çoğunlukla birkaç yüz megabayt bellek kullanır. Üzerinde başka pek bir şey çalışmayan bir sunucu için 2 vCPU ve 4 GB RAM yeterlidir. Sunucu bunun yanı sıra web siteleri, veritabanları veya oyun sunucuları da barındırıyorsa ajan için yaklaşık 1 GB'lık bir bellek payı ayırın. KernelHost'un bir KVM root sunucusu yaklaşık 30 saniyede hazır olur, asgari süre olmadan PrePaid olarak faturalandırılır ve bu sayede ajanı önce denemek için bir test sistemi olarak da uygundur.
Adım 1: ayrı bir kullanıcı oluşturun ve sudo'yu sınırlayın
Ajan asla root olarak çalışmaz. Kendine ait bir hesap alır, bir sudo beyaz listesi üzerinden de tam olarak ihtiyaç duyduğu komutlara izin verilir. Birkaç okuma komutuyla başlayın ve listeyi ancak bir görev bunu gerçekten gerektirdiğinde genişletin.
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
Son satır sözdizimini kontrol eder. Bir sudoers dosyasındaki hata sudo'yu herkes için kilitleyebilir, bu yüzden bu kontrol her zaman yapılmalıdır. --disabled-password, kimsenin aiagent olarak parolayla oturum açamamasını sağlar; hesaba daha sonra sudo -iu aiagent ile geçersiniz. Linux'ta sudo kullanıcısı oluşturma yazısı, sudo kullanıcılarının temelde nasıl çalıştığını açıklıyor.
Editöre sudo izni yerine hedefli yazma yetkileri
Ajanın /etc altındaki dosyaları değiştirmesi gerekiyorsa ona sudo üzerinden nano izni vermeyin (bununla /etc/sudoers dâhil her dosya düzenlenebilir); bunun yerine bir grup ve hedefli yazma yetkileriyle çalışın, örneğin setfacl -m u:aiagent:rw /etc/nginx/sites-available/meine-seite.conf. Başlangıç için ajanın değişiklikleri önermesi ve bunları sizin uygulamanız tamamen yeterlidir.
Aynı şey beyaz listedeki joker karakterli komutlar için de geçerlidir. /usr/bin/tail *, ajanın, erişim bilgileri içeren dosyalar dâhil, root'un erişebildiği her dosyayı okumasına izin verir. Bunu istemiyorsanız izin verilen yolları tek tek yazın, örneğin /usr/bin/tail -n 200 /var/log/nginx/error.log.
Adım 2: Node.js 22'yi kurun
İki araç da Node.js ile çalışır. Claude Code için en az 18, Codex CLI için en az 22 sürümü gerekir; bu yüzden 22 LTS sürümünü kuruyoruz. Debian 12'nin paket kaynakları çok eski bir sürüm sunar, güncel sürümü ise NodeSource sağlar:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
node --version
npm --version
Root yetkisi gerektirmeyen alternatif: nvm
İnternetten gelen betikleri root yetkileriyle çalıştırmak istemiyorsanız ajan kullanıcısının ev dizininde nvm kullanın; bu yol hiç root yetkisi gerektirmez. Kurulum komutunu nvm projesinin README dosyasından alın, ardından üç satır yeterlidir:
nvm install 22
nvm alias default 22
node --version
Ayrıntıları ve diğer yolları Debian'da Node.js rehberinde bulabilirsiniz.
Adım 3: Claude Code'u kurun ve 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 yerleştirir ve kendini güncel tutar. Alternatif olarak kurulum npm üzerinden npm install -g @anthropic-ai/claude-code ile de yapılabilir; bu komut EACCES hatasıyla başarısız olursa aşağıdaki sorun giderme bölümü yardımcı olur.
Tarayıcısı olmayan bir sunucuda oturum açma
claude ilk kez başlatıldığında araç oturum açmanızı ister. Bir Claude hesabıyla normalde tarayıcıyı açar; tarayıcısı olmayan bir sunucuda ise bir adres ve bir kod gösterir, bu kodu dizüstü bilgisayarınızda veya akıllı telefonunuzda onaylarsınız. Oturum bundan sonra, siz oturumu kapatana kadar bu sunucudaki bu kullanıcı için geçerli kalır.
Betikler ve cron görevleri için API anahtarı
Betikler ve cron görevleri için API anahtarı daha iyi bir seçimdir:
echo 'export ANTHROPIC_API_KEY="sk-ant-..."' >> ~/.bashrc
chmod 600 ~/.bashrc
source ~/.bashrc
claude -p "Yalnızca OK diye yanıt ver"
Anahtar bu şekilde yalnızca ajan kullanıcısının, diğer kullanıcıların okuyamadığı ev dizininde durur. Anahtarı Anthropic konsolunda aylık bir harcama limitiyle oluşturun; böylece kontrolden çıkan bir oturum pahalıya mal olamaz. Anahtarın kendisini ajana verdiğiniz görevlere de, ajanın içeriğini çıktı olarak vermesi gereken dosyalara da asla yazmayın.
Adım 4: Claude Code'u sunucu için yapılandırın
Kural dosyası CLAUDE.md
Claude Code başlarken geçerli dizindeki CLAUDE.md dosyasını okur. Her oturumda geçerli olan kurallar bu dosyada yer alır. Ajanın ev dizininde bu dosyayı içeren 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.
- Paketleri asla kaldırma, /var/lib altındaki dosyaları asla silme, asla kullanıcı oluşturma veya silme.
- Parolaları, anahtarları ve müşteri verilerini çıktılarda asla tekrarlama.
- Her görevin sonunda üç cümlelik bir özet ver.
EOF
Dosya zamanla büyür. Ajan bir şeyi sizin istediğinizden farklı yaptığında, düzeltmeyi her seferinde yeni bir kural olarak bu dosyaya ekleyin. Birkaç hafta sonra dosya, sunucunuzdaki çalışma düzenini oldukça doğru biçimde yansıtır.
settings.json içindeki beyaz liste
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ı bu 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
Deny listesi ek bir güvenlik ağıdır, bir duvar değil: Bir komut pek çok farklı biçimde yazılabilir. Asıl sınırı 1. adımdaki sudo beyaz listesi çizer, çünkü kullanıcının yapmasına izin verilmeyen şeyi ajan da yapamaz.
Etkileşimli ilk görev
Ş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 belirt.
Cron göreviyle gözetimsiz çalıştırma
Aynı görevi gözetimsiz olarak da çalıştırabilirsiniz; örneğin her gün saat 7'de çalışan ve sonucunu e-postayla gönderen 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, saati ve olası nedeni belirt." --allowedTools "Bash(sudo journalctl:*)" 2>&1 | mail -s "Günlük sunucu raporu" admin@example.com
-p seçeneği Claude Code'u etkileşimli bir oturum açmadan başlatır, --allowedTools ise araçları tam olarak o çalıştırmanın ihtiyaç duyduklarıyla sınırlar. Yazma işlemlerinin gözetimsiz çalıştırmalarda yeri yoktur. Cron görevlerinin temelde nasıl kurulduğunu Linux'ta cron görevi kurma yazısı anlatıyor.
Adım 5: Codex CLI'yi (ChatGPT) kurun ve oturum açın
Kurulum ve oturum açma
Codex CLI, ChatGPT'nin arkasındaki modelleri komut satırına taşıyan OpenAI aracıdır. Kurulum aynı kullanıcı hesabında yapılır:
npm install -g @openai/codex
codex --version
Oturum ChatGPT hesabıyla (Plus, Pro veya Team) açılır: codex komutunu başlatın, “Sign in with ChatGPT” seçeneğini belirleyin ve gösterilen adresi tarayıcısı olan bir cihazda açın. Betikler için bunun yerine OpenAI platformundan alacağınız bir API anahtarı tanımlayın:
echo 'export OPENAI_API_KEY="sk-..."' >> ~/.bashrc
source ~/.bashrc
config.toml içinde sandbox ve onay modu
Codex kendi sandbox'ı ve bir onay moduyla birlikte gelir. İkisi de ~/.codex/config.toml dosyasında belirlenir; bir üretim sunucusu için şu kombinasyon mantıklıdır:
mkdir -p ~/.codex
cat > ~/.codex/config.toml <<'EOF'
approval_policy = "on-request"
sandbox_mode = "workspace-write"
EOF
workspace-write yazma erişimine yalnızca geçerli çalışma dizininde izin verir, on-request ise ajanın bunun ötesindeki her şey için izin istemesini sağlar. danger-full-access seviyesi ikisini de ortadan kaldırır ve bir üretim sisteminde yeri yoktur.
AGENTS.md içindeki kurallar
Codex, CLAUDE.md dosyasındakilere benzer kuralları çalışma dizinindeki AGENTS.md dosyasından okur; aynı içeriği kullanabilirsiniz:
cp ~/server/CLAUDE.md ~/server/AGENTS.md
cd ~/server && codex "Etkin olan tüm systemd servislerinin çalışıp çalışmadığını kontrol et ve başarısız olanları son hata mesajlarıyla birlikte listele."
Gözetimsiz çalıştırmalar için codex exec "Aufgabe" vardır; bu, claude -p komutunun karşılığıdır.
Adım 6: üçüncü seçenek olarak Gemini CLI
Gemini CLI, Google'ın komut satırı aracıdır ve aynı prensiple işler. O da Node.js ile çalışır ve aynı kullanıcı hesabına kurulur:
npm install -g @google/gemini-cli
gemini --version
gemini ilk kez başlatıldığında bir Google hesabıyla oturum açarsınız; betikler için API anahtarını GEMINI_API_KEY ortam değişkeninde tanımlarsınız. Gemini CLI kuralları çalışma dizinindeki GEMINI.md dosyasından okur; burada da CLAUDE.md dosyasının içeriğini kullanabilirsiniz. Gözetimsiz çalıştırmaları gemini -p "Aufgabe" ile başlatırsınız. Üç araçtan hangisini kullanacağınız her şeyden önce zaten sahip olduğunuz hesaba bağlıdır: Sunucudaki çalışma biçimi üçünde de aynıdır ve birden fazlasını yan yana çalıştırabilirsiniz.
Alternatif: ajan kendi bilgisayarınızda çalışır ve SSH üzerinden iş yapar
Sunucuya hiçbir şey kurmak istemiyorsanız Claude Code'u veya Codex'i dizüstü bilgisayarınızda başlatır ve komutları ajanın SSH üzerinden göndermesini sağlarsınız. Bunun için sunucuya ajan kullanıcısına ait ayrı bir SSH anahtarı eklenir ve CLAUDE.md dosyasına, tüm sunucu komutlarının başına ssh aiagent@server getirilmesi kuralı yazılır. Bu, ara sıra yapılan bakım için iyi çalışır; ancak daha uzun görevler ve cron görevleri doğrudan sunucuda daha iyi işler. SSH bağlantısının ayrı anahtar, host takma adı ve onaylarla ayrıntılı olarak nasıl kurulduğunu ve ajanın ardından üretim sistemlerine hangi akışla deploy ettiğini Yapay zekâyı sunucuya bağlama başlıklı deneyim raporu gösteriyor.
Adım 7: güvenliği sağlayın ve sınırlar koyun
- Bir şeyin değiştirileceğ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 modunu açık bırakın. Claude Code'daki
--dangerously-skip-permissionsve Codex'tekidanger-full-accesstek kullanımlık sanal makineler için düşünülmüştür. - Sırlar erişim dışında. Ajan kullanıcısı
.envdosyalarını, veritabanı parolalarını ve müşteri verilerini okuyamamalıdır. Okuduğu her şey sağlayıcıya gider. - Maliyet limitini her API anahtarı için sağlayıcının konsolunda belirleyin.
- İzlenebilirlik:
etckeeperkurun; böylece/etcaltındaki her değişiklik Git'e kaydedilir. Ajanın özetlerini de saklayın. - Gelen trafik tarafında hiçbir şey değişmez. İki araç da yalnızca giden HTTPS bağlantısına ihtiyaç duyar. Güvenlik duvarı, Fail2ban ve hosting sağlayıcısının DDoS koruması olduğu gibi kalır.
İlk görevler: işe yarar beş talimat
En iyi ilk görevler, çok okuma gerektiren ve hiçbir risk taşımayan görevlerdir. Bunlar ajanın ne kadar titiz çalıştığını hızla gösterir ve hemen fayda sağlar:
- Log raporu: “Son 24 saatteki hataları ve uyarıları servislere göre gruplayarak, olası nedenleriyle birlikte özetle.”
- Servis kontrolü: “Başarısız olan tüm systemd servislerini son hata mesajlarıyla birlikte listele ve her biri için ne yapılması gerektiğini açıkla. Hiçbir şeyi değiştirme.”
- Disk alanı: “En çok yer kaplayan dizinleri göster ve nelerin güvenle temizlenebileceğini öner.” Bunun arka planını Linux'ta disk dolduğunda yazısında bulabilirsiniz.
- Güncellemeler: “Hangi paketlerin bekleyen güvenlik güncellemeleri var ve ardından hangi servislerin yeniden başlatılması gerekiyor?”
- Web sunucusu: “nginx yapılandırmasını hatalara ve eskimiş ayarlara karşı kontrol et ve bulduğun her noktayı açıkla.”
Ajana yazma işlemi içeren görevler vermeye ancak bu analizler doğru çıktığında değer; bunu da önce bir test sisteminde yapın.
Tipik hatalar ve çözümleri
| Mesaj | Neden ve çözüm |
EACCES: permission denied (npm install -g sırasında) | npm bir sistem dizinine yazmak istiyor. Bir 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 supported | Dağıtımın paket kaynaklarından gelen sürüm çok eski. 2. adımı tekrarlayın ve node --version ile 22.x sürümünün etkin olduğunu kontrol edin. |
claude: command not found | Yerel yükleyici programı ~/.local/bin dizinine yerleştirir, bu dizin ise henüz PATH içinde değildir. export PATH=$HOME/.local/bin:$PATH satırını ~/.bashrc dosyasına ekleyin ve kabuğu yeniden yükleyin. |
| Oturum açarken tarayıcı açılmıyor | Bir sunucuda beklenen durumdur. 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 engellenmiş. Dışarıya giden 443 portu için güvenlik duvarı kurallarını kontrol edin; KernelHost sunucularında giden trafik baştan serbesttir. |
429 rate limit veya overloaded | Aboneliğin veya API'nin kotası dolmuş ya da sağlayıcı aşırı yoğun. Kısa bir süre bekleyin ve gözetimsiz çalıştırmalara birkaç dakika sonra devreye giren bir yeniden deneme ekleyin. |
| Ajan her komutta onay soruyor | ~/.claude/settings.json içindeki beyaz listeyi ya da approval_policy ayarını (config.toml içinde) genişletin, ama yalnızca okuma komutlarıyla. |
| Cron görevi boş e-postalar gönderiyor | Cron ortamında kabuğun ortam değişkenleri yoktur. API anahtarını crontab içinde ya da görevin okuduğu bir ortam dosyasında tanımlayın ve programın tam yolunu kullanın. |
Araçları güncel tutmak
Claude Code, yerel yükleyiciyle kurulduktan sonra kendini kendisi günceller; npm üzerinden kurulan araçları ise tek bir komutla en son sürüme getirirsiniz:
npm update -g @openai/codex @google/gemini-cli
codex --version
gemini --version
Yeni sürümler zaman zaman seçenekleri veya varsayılan ayarları değiştirir. Bir güncellemeden sonra gözetimsiz çalıştırmaların devam etmesine izin vermeden önce sürüm notlarını kısaca okuyun ve bir sonraki günlük raporu olağan dışı durumlar açısından kontrol edin.
Sonuç
Sunucuda bir AI ajanı bir saat içinde kurulur: kullanıcı, sudo beyaz listesi, Node.js, araç, kurallar. Asıl iş sınırlardadır ve bu sınırlar burada bilinçli olarak dar çizilmiştir. Onları 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 etkinleştirilmesi gereken hiçbir şey yoktur: Root erişimi, serbest dağıtım seçimi ve giden bağlantılar standarttır.
Bir ajanın bundan sonra yedek, geri dönüş yolu ve onaylarla üretim sistemlerine nasıl deploy ettiğini Yapay zekâyı sunucuya bağlama başlıklı deneyim raporu anlatıyor.
Kısaca özetle
- Claude Code, Codex CLI ve Gemini CLI, Node.js 22 yüklü her Linux sunucuda çalışır; GPU gerekmez.
- Ajan, sudo beyaz listesine sahip ayrı bir kullanıcı alır ve asla root olarak çalışmaz.
- Kurallar
CLAUDE.md,AGENTS.mdveyaGEMINI.mddosyasında yer alır; okuma komutları beyaz listeye girer, geri kalan her şey onay gerektirir. - Cron görevleri ve betikler için harcama limitli bir API anahtarı temiz yoldur; gözetimsiz çalıştırmalar yalnızca okuma yapar.
- Her oturumdan önce yedek, sırlar erişim dışında, onay modu açık.
- KernelHost sunucularında root erişimi, serbest dağıtım seçimi ve giden bağlantılar baştan mevcuttur.
Sıkça sorulan sorular
Claude Code için abonelik mi gerekir, yoksa bir API anahtarı yeterli mi?
Tarayıcısı olmayan bir sunucuda Codex CLI ile nasıl oturum açarım?
Hangi Node.js sürümüne ihtiyacım var?
npm install -g neden EACCES hatasıyla başarısız oluyor?
Claude Code'u bir cron görevinde çalıştırabilir miyim?
Bu kurulum KernelHost'un Windows sunucularında da çalışır mı?
Claude Code, Codex CLI ve Gemini CLI'yi bir sunucuda paralel olarak kullanabilir miyim?
Bir AI ajanı sunucuda ne kadar belleğe ihtiyaç duyar?
Claude Code, Codex CLI ve Gemini CLI'yi nasıl güncellerim?
Gemini CLI'yi sunucuya nasıl kurarım?
AI ajanı neden root olarak çalışmamalı?
2026 KernelHost GmbH. Tüm hakları saklıdır. Bu rehber telif hakkıyla korunmaktadır. Yazının başka web sitelerinde tamamen, kısmen ya da düzenlenmiş biçimde yayımlanması, yazılı iznimiz olmadan serbest değildir. Kaynak belirtilerek ve bağlantı verilerek yapılan alıntılar ise memnuniyetle karşılanır.

