تثبيت Claude Code وChatGPT Codex على خادم لينكس: خطوة بخطوة
من خادم 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؟
كيف أسجّل الدخول إلى Codex CLI على خادم بلا متصفح؟
أي إصدار من Node.js أحتاج؟
لماذا يفشل npm install -g بالخطأ EACCES؟
هل يمكنني تشغيل Claude Code في مهمة cron؟
هل يعمل هذا أيضاً على خوادم Windows من KernelHost؟
2026 KernelHost GmbH. جميع الحقوق محفوظة. هذا الشرح محمي بحقوق النشر. لا يُسمح بإعادة نشره على مواقع أخرى، كليًا أو جزئيًا أو بصيغة معدّلة، دون موافقتنا الخطية. أما الاقتباس مع ذكر المصدر ووضع رابط فهو مرحّب به تمامًا.

