تثبيت Claude Code وChatGPT Codex على خادم لينكس: خطوة بخطوة

نُشر في مدة القراءة: 8 دقيقة

من خادم Debian أو Ubuntu مثبّت حديثاً إلى وكيل ذكاء اصطناعي يعمل: المستخدم وقائمة sudo المسموحة، Node.js 22، تثبيت Claude Code وCodex CLI وتسجيل الدخول، CLAUDE.md وAGENTS.md، المهام الأولى والأخطاء الشائعة.

يأخذك هذا الدليل من خادم Debian أو Ubuntu مثبّت حديثاً إلى وكيل ذكاء اصطناعي يعمل، يحلل السجلات ويفحص الإعدادات وينفذ مهام الصيانة. نُعدّ Claude Code (من Anthropic) وCodex CLI (من OpenAI، أداة سطر الأوامر وراء ChatGPT)، كلاهما تحت مستخدم مستقل بصلاحيات محدودة. جميع الأوامر اختُبرت على خادم جذري KVM من KernelHost مع Debian 13 وUbuntu 24.04. ما هو الخادم المُدار بالذكاء الاصطناعي عموماً وما البنيات المتاحة موضح في مقال خادم مُدار بالذكاء الاصطناعي: ربط وكلاء الذكاء الاصطناعي بأمان.

الوضع في سبتمبر 2026. تتطور الأدوات بسرعة؛ عند الشك تحقق من الخيارات بالأمر claude --help أو codex --help.

المتطلبات المسبقة

  • خادم جذري بنظام Debian 12 أو 13 أو Ubuntu 22.04 أو 24.04 مع وصول جذري عبر SSH. على AlmaLinux وRocky Linux الخطوات نفسها، فقط أوامر الحزم تُسمى dnf بدلاً من apt.
  • التحصين الأساسي منجز: تسجيل دخول SSH بمفتاح، جدار حماية، تحديثات أمنية تلقائية. تغطي ذلك قائمة التحقق للخوادم الجذرية الجديدة.
  • حساب لدى Anthropic (Claude Pro أو Max أو Team) أو مفتاح API، وحساب ChatGPT (Plus أو Pro أو Team) أو مفتاح API من OpenAI. تحتاج إلى واحد منهما فقط إذا أردت إعداد أداة واحدة.
  • HTTPS صادر إلى api.anthropic.com وapi.openai.com. على خوادم KernelHost هذا متاح منذ البداية؛ وجدار حماية خاص مقيِّد يجب أن يسمح به.

الخطوة 1: إنشاء مستخدم مستقل وتقييد sudo

لا يعمل الوكيل أبداً كمستخدم جذري. يحصل على حساب خاص به، وعبر قائمة sudo مسموحة على الأوامر التي يحتاجها بالضبط. ابدأ ببضعة أوامر قراءة ووسّع القائمة عندما تتطلب مهمة ذلك فعلاً.

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

السطر الأخير يتحقق من الصياغة. خطأ في ملف sudoers قد يقفل sudo على الجميع، لذلك التحقق جزء دائم من العملية. يضمن --disabled-password ألا يستطيع أحد تسجيل الدخول باسم aiagent بكلمة مرور؛ وتنتقل لاحقاً إلى الحساب بالأمر sudo -iu aiagent.

إذا كان على الوكيل تعديل ملفات في /etc، فلا تمنحه nano عبر sudo (فبذلك يمكن تحرير أي ملف، بما فيه /etc/sudoers)، بل اعمل بمجموعة وصلاحيات كتابة موجّهة، مثلاً setfacl -m u:aiagent:rw /etc/nginx/sites-available/my-site.conf. في البداية يكفي تماماً أن يقترح الوكيل التغييرات وتنفذها أنت.

الخطوة 2: تثبيت Node.js 22

تعمل الأداتان على Node.js. يتطلب Claude Code الإصدار 18 على الأقل، وCodex CLI الإصدار 22 على الأقل، لذلك نثبّت 22 LTS. مصادر حزم Debian 12 توفر إصداراً قديماً جداً؛ وNodeSource يوفر الإصدار الحالي:

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

من لا يريد تشغيل سكربتات من الإنترنت بصلاحيات الجذر يستخدم nvm في المجلد الرئيسي لمستخدم الوكيل؛ وهذا يعمل تماماً دون صلاحيات جذر. التفاصيل والبدائل في دليل Node.js على Debian.

الخطوة 3: تثبيت Claude Code وتسجيل الدخول

من هنا نعمل في حساب الوكيل:

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

يضع المثبّت الأصلي Claude Code في ~/.local/bin ويحدّث نفسه تلقائياً. بديلاً يمكن ذلك عبر npm بالأمر npm install -g @anthropic-ai/claude-code؛ وإذا فشل بالخطأ EACCES فسيساعدك قسم استكشاف الأخطاء أدناه.

عند أول تشغيل لـ claude تطلب الأداة تسجيل الدخول. مع حساب Claude تفتح المتصفح عادةً؛ وعلى خادم بلا متصفح تعرض عنواناً ورمزاً تؤكده على الحاسوب المحمول أو الهاتف. للسكربتات ومهام cron يكون مفتاح API الخيار الأفضل:

echo 'export ANTHROPIC_API_KEY="sk-ant-..."' >> ~/.bashrc
chmod 600 ~/.bashrc
source ~/.bashrc
claude -p "Reply with OK only" 

بذلك يوجد المفتاح فقط في المجلد الرئيسي لمستخدم الوكيل، الذي لا يستطيع المستخدمون الآخرون قراءته. أنشئه في وحدة تحكم Anthropic مع حد إنفاق شهري، حتى لا تصبح جلسة خارجة عن السيطرة مكلفة.

الخطوة 4: إعداد Claude Code للخادم

يقرأ Claude Code عند التشغيل ملف CLAUDE.md في المجلد الحالي. فيه القواعد السارية على كل جلسة. أنشئ مجلد عمل يحتوي على هذا الملف في المجلد الرئيسي للوكيل:

mkdir -p ~/server && cd ~/server
cat > CLAUDE.md <<'EOF'
# Rules for this server
- This is a production server (Debian 13, nginx, PHP-FPM, MariaDB).
- Read-only commands (journalctl, systemctl status, tail, df, ss) are always allowed.
- Before every write command: explain briefly what it changes and wait for approval.
- Never remove packages, never delete files under /var/lib, never create or delete users.
- Never repeat passwords, keys, or customer data in the output.
- End every task with a three-sentence summary.
EOF

يضاف إلى ذلك قائمة أدوات مسموحة، لينفذ Claude Code أوامر القراءة دون سؤال ويطلب الموافقة على كل ما عداها. يسري ملف ~/.claude/settings.json على المستخدم:

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

والآن المهمة الأولى، تفاعلياً:

cd ~/server && claude
> Summarize the errors from journalctl in the last 24 hours and name the three most common causes.

والمهمة نفسها دون مراقبة، مثلاً كمهمة cron يومية في الساعة 7 صباحاً تصل نتيجتها عبر البريد الإلكتروني:

0 7 * * * cd /home/aiagent/server && /home/aiagent/.local/bin/claude -p "Summarize errors and warnings from journalctl in the last 24 hours. Give service, time, and probable cause." --allowedTools "Bash(sudo journalctl:*)" 2>&1 | mail -s "Daily server report" admin@example.com

يشغّل الخيار -p برنامج Claude Code دون جلسة تفاعلية، ويقيّد --allowedTools الأدوات بما يحتاجه التشغيل بالضبط. إجراءات الكتابة لا مكان لها في التشغيلات غير المراقبة.

الخطوة 5: تثبيت Codex CLI (ChatGPT) وتسجيل الدخول

Codex CLI هو أداة OpenAI التي تنقل النماذج وراء ChatGPT إلى سطر الأوامر. التثبيت في حساب المستخدم نفسه:

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

يتم تسجيل الدخول بحساب ChatGPT (Plus أو Pro أو Team): شغّل codex، واختر „Sign in with ChatGPT"، وافتح العنوان المعروض على جهاز فيه متصفح. للسكربتات عيّن بدلاً من ذلك مفتاح API من منصة OpenAI:

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

لدى Codex صندوق رمل خاص ووضع موافقة. يُحدَّد كلاهما في ~/.codex/config.toml؛ ولخادم إنتاجي هذه التركيبة معقولة:

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

يسمح workspace-write بالكتابة فقط في مجلد العمل الحالي، ويجعل on-request الوكيل يطلب الإذن لكل ما يتجاوز ذلك. المستوى danger-full-access يلغي كليهما ولا مكان له على نظام إنتاجي. القواعد كما في CLAUDE.md يقرؤها Codex من ملف AGENTS.md في مجلد العمل؛ ويمكنك استخدام المحتوى نفسه:

cp ~/server/CLAUDE.md ~/server/AGENTS.md
cd ~/server && codex "Check whether all enabled systemd services are running and list the failed ones with their last error message."

للتشغيلات غير المراقبة يوجد codex exec "task"، المقابل لـ claude -p.

البديل: الوكيل يعمل على حاسوبك ويعمل عبر SSH

من لا يريد تثبيت أي شيء على الخادم يشغّل Claude Code أو Codex على الحاسوب المحمول ويجعل الوكيل يرسل الأوامر عبر SSH. لذلك يحصل الخادم على مفتاح SSH خاص لمستخدم الوكيل، وفي CLAUDE.md توضع قاعدة أن تبدأ جميع أوامر الخادم بـ ssh aiagent@server. يعمل هذا جيداً للصيانة العرضية، لكن المهام الأطول ومهام cron تعمل بشكل أفضل مباشرة على الخادم.

الخطوة 6: التأمين ووضع الحدود

  • لقطة أو نسخة احتياطية قبل كل جلسة يُفترض فيها تغيير شيء. تبيّن استراتيجية النسخ الاحتياطي للخوادم كيف يتم ذلك تلقائياً.
  • إبقاء وضع الموافقة مفعّلاً. --dangerously-skip-permissions في Claude Code وdanger-full-access في Codex مخصصان للأجهزة الافتراضية المؤقتة.
  • الأسرار بعيدة عن المتناول. يجب ألا يتمكن مستخدم الوكيل من قراءة ملفات .env وكلمات مرور قواعد البيانات وبيانات العملاء. ما يقرؤه يذهب إلى المزود.
  • حد للتكاليف لكل مفتاح API في وحدة تحكم المزود.
  • قابلية التتبع: ثبّت etckeeper ليصل كل تغيير في /etc إلى Git، واحفظ ملخصات الوكيل.
  • في الاتجاه الوارد لا يتغير شيء. تحتاج الأداتان فقط إلى HTTPS صادر. يبقى جدار الحماية وFail2ban وحماية DDoS لدى المزود دون تغيير.

الأخطاء الشائعة وحلولها

الرسالةالسبب والحل
EACCES: permission denied عند npm install -gيريد npm الكتابة في مجلد نظام. عيّن بادئة مستخدم: npm config set prefix ~/.npm-global، ثم أضف export PATH=~/.npm-global/bin:$PATH إلى ~/.bashrc وثبّت من جديد.
Node.js version ... is not supportedإصدار قديم جداً من مصادر التوزيعة. كرر الخطوة 2 وتحقق بالأمر node --version من أن الإصدار 22.x هو النشط.
تسجيل الدخول لا يفتح متصفحاًهذا متوقع على خادم. افتح العنوان المعروض على جهاز آخر وأدخل الرمز، أو انتقل إلى مفتاح API.
ECONNREFUSED أو انتهاء المهلة عند التشغيلHTTPS الصادر محظور. تحقق من قواعد جدار الحماية للمنفذ 443 نحو الخارج؛ على خوادم KernelHost حركة المرور الصادرة حرة منذ البداية.
429 rate limit أو overloadedحصة الاشتراك أو API مستنفدة أو المزود مثقل. انتظر قليلاً، وامنح التشغيلات غير المراقبة محاولة جديدة بعد بضع دقائق.
الوكيل يسأل عند كل أمروسّع القائمة المسموحة في ~/.claude/settings.json أو approval_policy في config.toml، لكن بأوامر القراءة فقط.

الخلاصة

يُعدّ وكيل الذكاء الاصطناعي على الخادم في ساعة واحدة: مستخدم، قائمة sudo مسموحة، Node.js، أداة، قواعد. العمل الفعلي يكمن في الحدود، وهي هنا ضيقة عمداً. وسّعها خطوة بخطوة عندما تتطلب مهمة ذلك، وليس دفعة واحدة أبداً. على خادم جذري من KernelHost أو خادم مخصص لا حاجة لتفعيل أي شيء لذلك: الوصول الجذري، وحرية اختيار التوزيعة، والاتصالات الصادرة هي المعيار.

الأسئلة الشائعة

هل أحتاج إلى اشتراك من أجل Claude Code أم يكفي مفتاح API؟
كلاهما يعمل. مع حساب Claude (Pro أو Max أو Team) تسجّل الدخول عند أول تشغيل عبر المتصفح، وعلى خادم بلا متصفح عبر رمز على جهاز آخر. للمهام المؤتمتة دون إنسان أمام الشاشة يكون مفتاح API في متغير البيئة ANTHROPIC_API_KEY الطريق الأنظف، لأنه غير مرتبط بشخص ويمكن تقييده بميزانية.
كيف أسجّل الدخول إلى Codex CLI على خادم بلا متصفح؟
إما عبر تسجيل الدخول بحساب ChatGPT، حيث يعرض Codex عنواناً تفتحه على الحاسوب المحمول أو الهاتف، أو عبر متغير البيئة OPENAI_API_KEY بمفتاح من منصة OpenAI. لمهام cron والسكربتات، مفتاح API هو الخيار الأكثر موثوقية.
أي إصدار من Node.js أحتاج؟
يتطلب Claude Code إصدار Node.js 18 على الأقل، وCodex CLI إصدار Node.js 22 على الأقل. لذلك ثبّت مباشرة Node.js 22 LTS من مستودع NodeSource أو عبر nvm في المجلد الرئيسي لمستخدم الوكيل. الإصدار من مصادر حزم Debian 12 قديم جداً.
لماذا يفشل npm install -g بالخطأ EACCES؟
لأن npm يريد الكتابة عالمياً في مجلد نظام لا يملك المستخدم صلاحيات عليه. عيّن بادئة مستخدم بالأمر npm config set prefix ~/.npm-global، وأضف ~/.npm-global/bin إلى PATH، ثم ثبّت من جديد. بديلاً استخدم nvm أو، بالنسبة إلى Claude Code، المثبّت الأصلي الذي يستغني عن npm.
هل يمكنني تشغيل Claude Code في مهمة cron؟
نعم، عبر claude -p مع المهمة كنص وقائمة مسموحة بالأدوات المصرّح بها. استخدم لذلك مفتاح API، وقيّد الأدوات بأوامر القراءة، ووجّه المخرجات إلى ملف أو بريد إلكتروني. الإجراءات التي تتدخل في النظام لا مكان لها في التشغيلات غير المراقبة.
هل يعمل هذا أيضاً على خوادم Windows من KernelHost؟
نعم. يعمل Claude Code وCodex CLI على Windows أصلياً مع Node.js أو داخل Windows Subsystem for Linux. تقابل خطوات المستخدم وقائمة sudo المسموحة هناك مستخدم Windows مستقل بلا صلاحيات مسؤول.

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