تثبيت Claude Code وChatGPT Codex على خادم لينكس: خطوة بخطوة
من تثبيت Debian أو Ubuntu جديد إلى وكيل ذكاء اصطناعي جاهز للعمل: المستخدم وقائمة sudo المسموحة، وNode.js 22، وتثبيت Claude Code وCodex CLI وGemini CLI وتسجيل الدخول إليها، وملفات القواعد، ومهام cron، والمهام الأولى، والأخطاء الشائعة.
يأخذك هذا الدليل من خادم Debian أو Ubuntu مثبّت حديثاً إلى وكيل ذكاء اصطناعي جاهز للعمل، يحلل السجلات ويفحص الإعدادات وينفذ مهام الصيانة. نُعدّ Claude Code (من Anthropic) وCodex CLI (من OpenAI، أداة سطر الأوامر الخاصة بـ ChatGPT)، وكلاهما يعمل تحت مستخدم مستقل بصلاحيات محدودة، ثم نعرض Gemini CLI (من Google) خياراً ثالثاً. اختُبرت جميع الأوامر على خادم جذري KVM من KernelHost بنظامي Debian 13 وUbuntu 24.04. أما ما هو الخادم المُدار بالذكاء الاصطناعي من حيث المبدأ، وما البنيات المتاحة له، فيشرحه مقال خادم مُدار بالذكاء الاصطناعي: ربط وكلاء الذكاء الاصطناعي بأمان.
المعلومات محدّثة حتى سبتمبر 2026. تتطور الأدوات بسرعة؛ لذا تحقق من الخيارات عند الشك بالأمرclaude --helpأوcodex --helpأوgemini --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 يكون ذلك متاحاً افتراضياً، أما إذا كان لديك جدار حماية خاص مقيِّد فيجب أن يسمح به.
أي خادم يكفي لوكيل ذكاء اصطناعي؟
لا يحتاج وكيل الذكاء الاصطناعي على الخادم إلى عتاد خاص ولا إلى GPU، لأن نموذج اللغة يعمل لدى المزود. لا يعمل على الخادم سوى أداة سطر الأوامر وNode.js، ويستهلكان معاً عادةً بضع مئات من الميغابايتات من الذاكرة أثناء الجلسة. وعلى خادم لا يعمل عليه الكثير غير ذلك، يكفي 2 vCPU و4 GB RAM. أما إذا كان الخادم يشغّل إلى جانب ذلك مواقع ويب أو قواعد بيانات أو خوادم ألعاب، فاحسب للوكيل احتياطياً من الذاكرة يقارب 1 GB. يُجهَّز خادم جذري KVM من KernelHost في نحو 30 ثانية، ويُحاسَب بنظام PrePaid دون حد أدنى لمدة التعاقد، ولذلك يصلح أيضاً نظامَ اختبار تجرّب عليه الوكيل أولاً.
الخطوة 1: إنشاء مستخدم مستقل وتقييد sudo
لا يعمل الوكيل أبداً كمستخدم root، بل يحصل على حساب خاص به، ويحصل عبر قائمة sudo مسموحة على الأوامر التي يحتاجها بالضبط. ابدأ ببضعة أوامر قراءة فقط، ووسّع القائمة حين تتطلب مهمة ما ذلك فعلاً.
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
يتحقق السطر الأخير من صحة الصياغة. فخطأ واحد في ملف sudoers قد يمنع الجميع من استخدام sudo، لذلك لا يُستغنى عن هذا الفحص أبداً. يضمن --disabled-password ألا يتمكن أحد من تسجيل الدخول باسم aiagent بكلمة مرور؛ وتنتقل لاحقاً إلى هذا الحساب بالأمر sudo -iu aiagent. أما كيف يعمل مستخدمو sudo عموماً، فيشرحه مقال إنشاء مستخدم sudo على لينكس.
منح صلاحيات كتابة محددة بدلاً من محرر عبر sudo
إذا كان على الوكيل تعديل ملفات في /etc، فلا تسمح له بتشغيل nano عبر sudo (إذ يمكن بذلك تحرير أي ملف، بما في ذلك /etc/sudoers)، بل اعمل بمجموعة وصلاحيات كتابة محددة، مثلاً setfacl -m u:aiagent:rw /etc/nginx/sites-available/meine-seite.conf. وفي البداية يكفي تماماً أن يقترح الوكيل التغييرات وتطبقها أنت.
وينطبق الأمر نفسه على الأوامر التي تتضمن أحرف بدل في القائمة المسموحة. فالإدخال /usr/bin/tail * يسمح للوكيل بقراءة أي ملف يملك root حق الوصول إليه، بما في ذلك الملفات التي تحتوي على بيانات الدخول. ومن لا يريد ذلك يكتب المسارات المسموحة صراحةً، مثل /usr/bin/tail -n 200 /var/log/nginx/error.log.
الخطوة 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
من لا يريد تشغيل سكربتات من الإنترنت بصلاحيات الجذر يستخدم nvm في المجلد الرئيسي لمستخدم الوكيل؛ وعندها يتم كل شيء دون أي صلاحيات جذر. انسخ أمر تثبيت nvm من ملف README الخاص بالمشروع، وبعدها تكفي ثلاثة أسطر:
nvm install 22
nvm alias default 22
node --version
التفاصيل والطرق الأخرى موضحة في دليل 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 تفتح المتصفح عادةً؛ أما على خادم بلا متصفح فتعرض عنواناً ورمزاً تؤكده على الحاسوب المحمول أو الهاتف الذكي. بعد ذلك يبقى تسجيل الدخول سارياً لهذا المستخدم على هذا الخادم حتى تسجّل الخروج.
مفتاح API للسكربتات ومهام cron
للسكربتات ومهام cron يكون مفتاح API الخيار الأفضل:
echo 'export ANTHROPIC_API_KEY="sk-ant-..."' >> ~/.bashrc
chmod 600 ~/.bashrc
source ~/.bashrc
claude -p "أجب بكلمة OK فقط"
بذلك لا يوجد المفتاح إلا في المجلد الرئيسي لمستخدم الوكيل، الذي لا يستطيع المستخدمون الآخرون قراءته. أنشئ المفتاح في وحدة تحكم Anthropic مع حد إنفاق شهري، فلا يمكن عندها لجلسة تخرج عن السيطرة أن تصبح مكلفة. أما المفتاح نفسه فلا تكتبه أبداً في مهمة توجهها إلى الوكيل، ولا في ملف يُفترض أن يعرض الوكيل محتواه.
الخطوة 4: إعداد Claude Code للخادم
ملف القواعد CLAUDE.md
يقرأ Claude Code عند التشغيل ملف CLAUDE.md الموجود في المجلد الحالي. وفيه القواعد التي تسري على كل جلسة. أنشئ في المجلد الرئيسي للوكيل مجلد عمل يحتوي على هذا الملف:
mkdir -p ~/server && cd ~/server
cat > CLAUDE.md <<'EOF'
# قواعد هذا الخادم
- هذا خادم إنتاجي (Debian 13، nginx، PHP-FPM، MariaDB).
- أوامر القراءة (journalctl، systemctl status، tail، df، ss) مسموحة في أي وقت.
- قبل كل أمر كتابة، اشرح باختصار ما الذي يغيّره وانتظر الموافقة.
- ممنوع دائماً: إزالة الحزم، وحذف الملفات تحت /var/lib، وإنشاء المستخدمين أو حذفهم.
- لا تكرر كلمات المرور أو المفاتيح أو بيانات العملاء في المخرجات أبداً.
- في نهاية كل مهمة، قدّم ملخصاً من ثلاث جمل.
EOF
ينمو الملف مع الوقت. فكلما تصرّف الوكيل على نحو يخالف ما تريده، أضف التصحيح إليه قاعدةً جديدة. وبعد بضعة أسابيع يعكس الملف طريقة العمل على خادمك بدقة كبيرة.
القائمة المسموحة في settings.json
وتُضاف إلى ذلك قائمة مسموحة بالأدوات، لكي ينفذ 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
قائمة الحظر (deny) شبكة أمان إضافية وليست جداراً: فالأمر الواحد يمكن كتابته بطرق كثيرة. أما الحد الفعلي فترسمه قائمة sudo المسموحة من الخطوة 1، لأن ما لا يُسمح به للمستخدم لا يُسمح به للوكيل أيضاً.
المهمة الأولى تفاعلياً
والآن المهمة الأولى، بشكل تفاعلي:
cd ~/server && claude
> لخّص أخطاء journalctl في آخر 24 ساعة، واذكر الأسباب الثلاثة الأكثر شيوعاً.
دون مراقبة عبر مهمة cron
والمهمة نفسها دون مراقبة، مثلاً كمهمة cron يومية في الساعة 7 صباحاً تصلك نتيجتها بالبريد الإلكتروني:
0 7 * * * cd /home/aiagent/server && /home/aiagent/.local/bin/claude -p "لخّص الأخطاء والتحذيرات في journalctl خلال آخر 24 ساعة. اذكر الخدمة والوقت والسبب المرجّح." --allowedTools "Bash(sudo journalctl:*)" 2>&1 | mail -s "التقرير اليومي للخادم" admin@example.com
يشغّل الخيار -p برنامج Claude Code دون جلسة تفاعلية، ويقيّد --allowedTools الأدوات بما يحتاجه التشغيل بالضبط. ولا مكان لإجراءات الكتابة في التشغيلات غير المراقبة. أما كيف تُعدّ مهام cron عموماً، فيشرحه مقال إعداد مهمة cron على لينكس.
الخطوة 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
صندوق الرمل ووضع الموافقة في config.toml
يأتي Codex بصندوق رمل (sandbox) خاص به ووضع للموافقة. ويُحدَّد كلاهما في ~/.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 فيلغي القيدين كليهما، ولا مكان له على نظام إنتاجي.
القواعد في AGENTS.md
يقرأ Codex القواعد، كتلك الموجودة في CLAUDE.md، من ملف AGENTS.md في مجلد العمل؛ ويمكنك استخدام المحتوى نفسه:
cp ~/server/CLAUDE.md ~/server/AGENTS.md
cd ~/server && codex "تحقق مما إذا كانت جميع خدمات systemd المفعّلة تعمل، واعرض الخدمات الفاشلة مع آخر رسالة خطأ لكل منها."
وللتشغيلات غير المراقبة يوجد codex exec "Aufgabe"، وهو المقابل للأمر claude -p.
الخطوة 6: Gemini CLI خياراً ثالثاً
Gemini CLI هو أداة سطر الأوامر من Google، ويعمل وفق المبدأ نفسه. وهو يعمل كذلك على Node.js ويُثبَّت في حساب المستخدم نفسه:
npm install -g @google/gemini-cli
gemini --version
عند أول تشغيل للأمر gemini تسجّل الدخول بحساب Google، وللسكربتات تعيّن مفتاح API في متغير البيئة GEMINI_API_KEY. يقرأ Gemini CLI القواعد من ملف GEMINI.md في مجلد العمل، وهنا أيضاً يمكنك نقل محتوى CLAUDE.md. ولبدء التشغيلات غير المراقبة استخدم الأمر gemini -p "Aufgabe". أما أيّ الأدوات الثلاث تستخدم، فذلك يتوقف في المقام الأول على الحساب الذي تملكه أصلاً: فطريقة العمل على الخادم واحدة في الأدوات الثلاث، ويمكنك تشغيل أكثر من أداة جنباً إلى جنب.
البديل: الوكيل يعمل على حاسوبك وينفّذ الأوامر عبر SSH
من لا يريد تثبيت أي شيء على الخادم يشغّل Claude Code أو Codex على الحاسوب المحمول، ويترك الوكيل يرسل الأوامر عبر SSH. لهذا الغرض يُضاف إلى الخادم مفتاح SSH خاص بمستخدم الوكيل، وتُكتب في CLAUDE.md قاعدة تقضي بإضافة ssh aiagent@server في بداية جميع أوامر الخادم. يعمل ذلك جيداً للصيانة العرضية، لكن المهام الأطول ومهام cron تعمل بشكل أفضل مباشرة على الخادم. أما كيف يبدو الربط عبر SSH بالتفصيل، بمفتاح خاص واسم مستعار للمضيف وموافقات، وما التسلسل الذي يتبعه الوكيل بعد ذلك عند النشر على الأنظمة الإنتاجية، فيعرضه التقرير العملي ربط الذكاء الاصطناعي بالخادم.
الخطوة 7: التأمين ووضع الحدود
- لقطة أو نسخة احتياطية قبل كل جلسة يُراد فيها تغيير شيء ما. وتبيّن استراتيجية النسخ الاحتياطي للخوادم كيف يتم ذلك تلقائياً.
- إبقاء وضع الموافقة مفعّلاً. الخياران
--dangerously-skip-permissionsفي Claude Code وdanger-full-accessفي Codex مخصصان للأجهزة الافتراضية المؤقتة. - الأسرار بعيدة عن المتناول. يجب ألا يتمكن مستخدم الوكيل من قراءة ملفات
.envوكلمات مرور قواعد البيانات وبيانات العملاء. فكل ما يقرؤه يذهب إلى المزود. - حد للتكاليف تضبطه لكل مفتاح API في وحدة تحكم المزود.
- قابلية التتبع: ثبّت
etckeeperلكي يصل كل تغيير تحت/etcإلى Git، واحتفظ بملخصات الوكيل. - لا شيء يتغير في الاتجاه الوارد. لا تحتاج الأداتان إلا إلى HTTPS صادر. ويبقى جدار الحماية وFail2ban وحماية DDoS لدى مزود الاستضافة دون تغيير.
المهام الأولى: خمسة تكليفات مفيدة
أفضل المهام للبداية هي تلك التي تتطلب قراءة كثيرة ولا تنطوي على أي مخاطرة. فهي تُظهر بسرعة مدى دقة الوكيل في عمله، وتحقق فائدة فورية:
- تقرير السجلات: «لخّص الأخطاء والتحذيرات خلال آخر 24 ساعة، مجمّعةً حسب الخدمة، مع السبب المرجّح.»
- فحص الخدمات: «اعرض جميع خدمات systemd الفاشلة مع آخر رسالة خطأ لكل منها، واشرح ما ينبغي فعله في كل حالة. لا تغيّر شيئاً.»
- مساحة التخزين: «بيّن أي المجلدات تشغل أكبر مساحة، واقترح ما يمكن تنظيفه دون خطر.» وتجد خلفية ذلك في مقال امتلاء القرص على لينكس.
- التحديثات: «ما الحزم التي لها تحديثات أمنية معلّقة، وما الخدمات التي يجب إعادة تشغيلها بعد ذلك؟»
- خادم الويب: «افحص إعدادات nginx بحثاً عن أخطاء وإعدادات قديمة، واشرح كل ما تجده.»
ولا يستحق الأمر أن تُسند إلى الوكيل مهام تُجري تغييرات إلا بعد أن تثبت صحة هذه التحليلات، وعلى نظام اختبار أولاً.
الأخطاء الشائعة وحلولها
| الرسالة | السبب والحل |
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 هو النشط. |
claude: command not found | يضع المثبّت الأصلي البرنامج في ~/.local/bin، وهذا المجلد ليس في PATH بعد. أضف export PATH=$HOME/.local/bin:$PATH إلى ~/.bashrc وأعد تحميل الصدفة. |
| تسجيل الدخول لا يفتح متصفحاً | هذا متوقع على خادم. افتح العنوان المعروض على جهاز آخر وأدخل الرمز، أو انتقل إلى استخدام مفتاح API. |
ECONNREFUSED أو انتهاء المهلة عند التشغيل | اتصال HTTPS الصادر محظور. تحقق من قواعد جدار الحماية للمنفذ 443 في الاتجاه الصادر؛ على خوادم KernelHost تكون حركة المرور الصادرة مفتوحة افتراضياً. |
429 rate limit أو overloaded | نفدت حصة الاشتراك أو API، أو أن المزود مثقل بالطلبات. انتظر قليلاً، وزوّد التشغيلات غير المراقبة بإعادة محاولة بعد بضع دقائق. |
| الوكيل يطلب الإذن عند كل أمر | وسّع القائمة المسموحة في ~/.claude/settings.json أو approval_policy في config.toml، لكن بأوامر القراءة فقط. |
| مهمة cron ترسل رسائل فارغة | لا تتوفر في cron متغيرات البيئة الخاصة بالصدفة. عيّن مفتاح API في crontab أو في ملف بيئة تقرؤه المهمة، واستخدم المسار الكامل للبرنامج. |
إبقاء الأدوات محدّثة
بعد التثبيت بالمثبّت الأصلي يحدّث Claude Code نفسه تلقائياً. أما الأدوات المثبّتة عبر npm فتحدّثها إلى أحدث إصدار بأمر واحد:
npm update -g @openai/codex @google/gemini-cli
codex --version
gemini --version
قد تغيّر الإصدارات الجديدة أحياناً الخيارات أو الإعدادات الافتراضية. بعد كل تحديث ألقِ نظرة سريعة على ملاحظات الإصدار قبل أن تترك التشغيلات غير المراقبة تستمر، وافحص التقرير اليومي التالي بحثاً عن أي أمر غير معتاد.
الخلاصة
يُعدّ وكيل الذكاء الاصطناعي على الخادم في ساعة واحدة: مستخدم، وقائمة sudo مسموحة، وNode.js، وأداة، وقواعد. أما العمل الفعلي فيكمن في الحدود، وهي هنا ضيقة عن قصد. وسّعها خطوة بخطوة حين تتطلب مهمة ما ذلك، ولا توسّعها دفعة واحدة أبداً. على خادم جذري من KernelHost أو خادم مخصص لا حاجة إلى تفعيل أي شيء لذلك: فالوصول الجذري وحرية اختيار التوزيعة والاتصالات الصادرة كلها متاحة بشكل قياسي.
أما كيف ينشر الوكيل بعد ذلك على الأنظمة الإنتاجية، مع النسخ الاحتياطي وطريق للتراجع والموافقات، فيصفه التقرير العملي ربط الذكاء الاصطناعي بالخادم.
باختصار
- يعمل Claude Code وCodex CLI وGemini CLI على أي خادم لينكس مع Node.js 22، ولا حاجة إلى GPU.
- يحصل الوكيل على مستخدم مستقل بقائمة sudo مسموحة، ولا يعمل أبداً كمستخدم root.
- تُكتب القواعد في
CLAUDE.mdأوAGENTS.mdأوGEMINI.md، وتدخل أوامر القراءة في القائمة المسموحة، وكل ما عداها يحتاج إلى موافقة. - لمهام cron والسكربتات يكون مفتاح API مع حد للإنفاق هو الطريق النظيف، وتبقى التشغيلات غير المراقبة مقتصرة على القراءة.
- نسخة احتياطية قبل كل جلسة، والأسرار بعيدة عن المتناول، ووضع الموافقة مفعّل.
- على خوادم KernelHost يتوفر الوصول الجذري وحرية اختيار التوزيعة والاتصالات الصادرة افتراضياً.
الأسئلة الشائعة
هل أحتاج إلى اشتراك لاستخدام Claude Code أم يكفي مفتاح API؟
كيف أسجّل الدخول إلى Codex CLI على خادم بلا متصفح؟
أي إصدار من Node.js أحتاج؟
لماذا يفشل npm install -g بالخطأ EACCES؟
هل يمكنني تشغيل Claude Code في مهمة cron؟
هل يعمل هذا أيضاً على خوادم Windows من KernelHost؟
هل يمكنني استخدام Claude Code وCodex CLI وGemini CLI جنباً إلى جنب على خادم واحد؟
كم يحتاج وكيل الذكاء الاصطناعي من الذاكرة على الخادم؟
كيف أحدّث Claude Code وCodex CLI وGemini CLI؟
كيف أُعدّ Gemini CLI على الخادم؟
لماذا يجب ألا يعمل وكيل الذكاء الاصطناعي كمستخدم root؟
2026 KernelHost GmbH. جميع الحقوق محفوظة. هذا الشرح محمي بحقوق النشر. لا يُسمح بإعادة نشره على مواقع أخرى، كليًا أو جزئيًا أو بصيغة معدّلة، دون موافقتنا الخطية. أما الاقتباس مع ذكر المصدر ووضع رابط فهو مرحّب به تمامًا.

