SSD Nodes Learn Hosting plans →
الأدلة Matt Connorبقلم Matt Connor · آخر تحديث في 2026-08-23

كيفية تشغيل OpenCode على VPS بأمان

ثبّت OpenCode على VPS بمستخدم غير مميّز، وشغّله داخل tmux كي تستمر الجلسة بعد انقطاع الاتصال، مع حفظ مفتاح API في ملف محمي.

ماهية OpenCode وما الذي ستعدّه

OpenCode هو وكيل برمجة بالذكاء الاصطناعي مفتوح المصدر، ومصمم للعمل من الطرفية. تبدأ تشغيله داخل دليل مشروع، فيقرأ الشيفرة، ويقترح التغييرات، ويعدّل الملفات، وينفّذ الأوامر، وكل ذلك من خلال واجهة مستخدم طرفية (TUI). ترخيصه MIT، ويتصل بأكثر من 75 موفّر نماذج، وبنحو 165,000 نجمة على GitHub حتى منتصف 2026، فهو وكيل البرمجة مفتوح المصدر الأعلى حصولاً على النجوم. لتشغيل OpenCode على VPS، ثبّته ضمن مستخدم مخصص غير مميّز، وضع مفتاح API الخاص بالنموذج في ملف خاص، ثم شغّله داخل tmux حتى تستمر الجلسة عند انقطاع اتصالك. يطبّق هذا الدليل هذه الخطوات بالترتيب نفسه.

توضيح واحد للاسم يجنّبك الالتباس. المستودع الأساسي هو anomalyco/opencode، ويصونه فريق Anomaly (المعروف سابقاً باسم SST)، وكان المشروع موجوداً سابقاً في sst/opencode. يوجد أيضاً على GitHub مستودع قديم غير مرتبط بالمشروع يحمل الاسم opencode-ai/opencode، لذلك تأكد من أنك تقرأ وثائق المشروع الصحيح. الموقع الرسمي هو opencode.ai.

لماذا تشغّل OpenCode على VPS

تستغرق جلسة وكيل البرمجة وقتاً طويلاً. قد يقضي OpenCode دقائق كثيرة في تنفيذ إعادة هيكلة أو تشغيل مجموعة اختبارات. وإذا كان يعمل على حاسوبك المحمول، فقد يؤدي إغلاق الغطاء أو انقطاع اتصال Wi-Fi إلى إنهاء الجلسة أثناء تنفيذ المهمة. عند تشغيل الوكيل داخل tmux على VPS، يواصل عمله بعد قطع اتصالك. ويمكنك إعادة الاتصال لاحقاً لقراءة ما أنجزه. هذا هو النمط نفسه المتّبع عند تشغيل Claude Code على VPS باستخدام tmux، وهو أكبر تحسن عملي في تجربة الاستخدام عند نقل الوكيل خارج حاسوبك المحمول.

السبب الثاني هو موضع التشغيل. يكون VPS قريباً من الشفرة التي تنشرها. فالمستودع وأدوات البناء وقاعدة بيانات الاختبار، وغالباً بيئة التجهيز، تكون موجودة عليه أو بجواره. يعمل الوكيل الذي يعدّل الشفرة ويشغّل الاختبارات بأفضل صورة على الجهاز الذي تُشغّل عليه هذه الاختبارات فعلياً. وبما أن هذا الجهاز خادم تتحكم فيه، يمكنك تخصيص بيئة معزولة للوكيل عن قصد، وهذا ما يوضحه القسم التالي.

إذا كنت لا تزال تختار أداة، فإن تشغيل وكيل ذكاء اصطناعي للبرمجة على VPS يقارن بين الأدوات المتاحة على نطاق أوسع، ومنها Aider وGoose.

امنح OpenCode حساب مستخدم خاصاً به

إليك نقطة البداية بوضوح: يحرّر وكيل البرمجة الملفات وينفّذ الأوامر. هذه هي وظيفته، وهي أيضاً مصدر الخطر. سينفّذ OpenCode عمليات البناء والاختبارات وأي أوامر shell تبدو ضرورية للمهمة، وحكم النموذج جيد لكنه ليس مثالياً. يحدد الحساب الذي يعمل الوكيل به الحد الأقصى لما يمكن لأمر ضار الوصول إليه. لذلك لا تشغّله بصفة root، ولا تشغّله بالحساب نفسه الذي يدير الخادم.

بخلاف الوكيل الذي يعمل في الخلفية، يعمل OpenCode بصورة تفاعلية. لذلك يحتاج مستخدمه إلى shell فعلي ودليل home:

sudo useradd --create-home --shell /bin/bash opencode
sudo -iu opencode

احتفظ بالمشاريع التي تريد منه العمل عليها ضمن /home/opencode، واستنسخها باستخدام ذلك المستخدم. لا تمنح الحساب أي صلاحيات sudo. إذا نفّذ الوكيل أمراً مدمراً، فلن يتمكن إلا من تدمير ما يملكه هذا الحساب، وهذا هو المبدأ نفسه المتبع عند تشغيل الخدمات كمستخدم غير مميّز. اعمل أيضاً داخل مستودع git، لأن المستودع يحوّل أي تعديل سيئ إلى git revert بدلاً من خسارة.

تثبيت OpenCode

يوثّق المشروع طريقتين للتثبيت. يُعدّ سكربت التثبيت الأسرع، وتشغيله كمستخدم opencode يحافظ على وجود كل شيء داخل الدليل الرئيسي لذلك المستخدم:

curl -fsSL https://opencode.ai/install | bash

تنطبق هنا أيضاً عادة curl | bash المعتادة، كما في كل موضع آخر: على خادم تهتم بأمانه، نزّل السكربت أولاً، واقرأه، ثم شغّله. بعد التثبيت، ابدأ shell جديداً لكي يسري تغيير PATH الذي يجريه برنامج التثبيت، ثم تحقق من أن الملف الثنائي يستجيب:

opencode --version

إذا كنت تفضّل استخدام مدير حزم وكان Node.js مثبتاً على الخادم، فإن مسار npm يثبّت الأداة نفسها على مستوى النظام، ما يضع الملف الثنائي opencode في PATH لجميع المستخدمين:

sudo npm install -g opencode-ai

في كلتا الحالتين، يكون التحقق نفسه: يطبع opencode --version رقم الإصدار. يشير command not found بعد التثبيت باستخدام السكربت إلى أن shell الحالي لم يقرأ PATH المحدّث بعد، لذا سجّل الخروج ثم سجّل الدخول مجدداً كمستخدم opencode.

ضع مفتاح API في ملف خاص

يحتاج OpenCode إلى مفتاح لمزوّد النموذج الذي تستخدمه، ويمكن لهذا المفتاح إنفاق أموالك، لذلك عامله مثل كلمة مرور. أنشئ ملفاً لا يستطيع قراءته إلا المستخدم opencode، واضبط نمطه على 600، واحتفظ بالمفتاح فيه بدلاً من كتابته في أوامر ستظهر لاحقاً في سجل shell:

install -m 600 /dev/null ~/opencode.env
nano ~/opencode.env

ضع متغير المزوّد في الملف، مثل ANTHROPIC_API_KEY=... أو المتغير المكافئ لدى المزوّد الذي تستخدمه، لأن OpenCode يقرأ متغيرات البيئة القياسية الخاصة بالمزوّد. حمّل الملف إلى shell قبل بدء الوكيل:

set -a; source ~/opencode.env; set +a

يوفّر OpenCode أيضاً بديلاً تفاعلياً. ينقلك الأمر /connect داخل TUI خلال خطوات إضافة مزوّد، ويحفظ بيانات الاعتماد في ~/.local/share/opencode/auth.json داخل مجلد المستخدم الرئيسي. إذا استخدمت هذا المسار، فتأكد من أن الملف خاص باستخدام chmod 600 ~/.local/share/opencode/auth.json. يحافظ كلا المسارين على بقاء المفتاح خارج أسطر الأوامر. اختر أحدهما والتزم به.

بدء OpenCode داخل tmux

تجعل tmux إعداد VPS مفيداً، لأن جلسة tmux تواصل العمل عند انتهاء اتصال SSH. ابدأ جلسة، وانتقل إلى مشروعك، ثم شغّل الوكيل:

tmux new -s opencode
cd ~/my-project
opencode

يجب أن ترى واجهة TUI مفتوحة، مع مطالبة في الأسفل واسم مشروعك في الواجهة. أعطه مهمة بلغة واضحة، وسيبدأ بقراءة الملفات واقتراح التغييرات. عندما تريد المغادرة، افصل الجلسة باستخدام Ctrl-b ثم d، وسيواصل الوكيل العمل حتى بعد إغلاق حاسوبك المحمول. أعد الاتصال لاحقاً باستخدام:

tmux attach -t opencode

ستجد الجلسة والمحادثة وأي مهمة قيد التشغيل في الموضع نفسه الذي تركتها فيه. يستمر ذلك رغم انقطاع اتصالاتك، لكنه لا يستمر بعد إعادة تشغيل الخادم. لذلك، بعد إعادة التشغيل، ابدأ جلسة tmux جديدة بالطريقة نفسها. يمكنك أيضاً فتح نافذة tmux ثانية وتشغيل وكيل آخر بجانب الوكيل الأول. لكن جلسات OpenCode مستقلة عن بعضها، بينما يمكن لجلسات Claude Code على الخادم نفسه إرسال رسائل إلى بعضها، وهذا أسلوب مختلف لتقسيم مهمة واحدة إلى مهمتين.

وجّه الأداة إلى نموذج

OpenCode مستقل عن المزوّد. يستخدم AI SDK وكتالوج Models.dev لدعم أكثر من 75 مزوّداً، لذلك تعمل الأداة نفسها مع Anthropic وOpenAI وGoogle وعشرات المزوّدين الآخرين، بما في ذلك الخوادم المحلية. المسار الأسرع هو الأمر /connect داخل TUI، إذ يعرض قائمة المزوّدين ويتولى بيانات الاعتماد. وللحصول على إعداد يمكنك إيداعه في المستودع وإعادة إنتاجه، ضع ملف opencode.json في جذر المشروع واضبط النموذج على النحو provider/model-id:

{
  "$schema": "https://opencode.ai/config.json",
  "model": "anthropic/claude-sonnet-4-20250514"
}

يعمل النموذج المحلي عبر الملف نفسه، لأن أي خادم متوافق مع OpenAI يمكن تعريفه كمزوّد. إذا كنت تشغّل نموذجاً باستخدام Ollama على VPS نفسه، فأشر في الإعدادات إلى واجهة API المحلية الخاصة به، ويكون اسم النموذج هو ما يعرضه ollama list على جهازك:

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "ollama": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Ollama (local)",
      "options": { "baseURL": "http://127.0.0.1:11434/v1" },
      "models": { "your-model-name": { "name": "Local coding model" } }
    }
  }
}

من المفيد اعتماد سلوك مضمّن منذ اليوم الأول. يأتي OpenCode مع وكيلين يمكنك التبديل بينهما باستخدام مفتاح Tab: Build، وهو الوكيل الافتراضي الذي يملك صلاحية كاملة، وPlan، الذي يعطّل القدرة على إجراء التغييرات. ابدأ المهمة الجديدة في Plan، ودعه يقرأ التعليمة البرمجية ويقترح نهجاً، ثم بدّل إلى Build فقط بعد موافقتك على الخطة. على الخادم، تُعدّ المراجعة الأولى للقراءة فقط إجراءً وقائياً منخفض التكلفة. يعرض Claude Code القرار نفسه على أنه أوضاع صلاحيات بدلاً من وكلاء، وتستحق نقلته إلى الوضع التلقائي كإعداد افتراضي القراءة إذا كنت تشغّل الأداتين، لأن الوضع الذي تبدأ به الجلسة يحدد مقدار التغييرات التي يمكن لوكيل غير مراقَب إجراؤها.

نطاق الضرر، بصراحة

وكيل البرمجة ليس سلبياً، لذلك وضّح صراحةً ما الذي يتضمنه هذا الإعداد وما لا يتضمنه. فهو يتضمن حماية من تلف الملفات: يملك المستخدم opencode مجلده المنزلي وحده ولا يملك أي شيء آخر، لذلك تتوقف التعديلات وعمليات الحذف عند هذا الحد. ويتضمن أيضاً حصر التعرّض لبيانات الاعتماد: يوجد المفتاح في ملف واحد بصلاحيات 600، ضمن حساب واحد. لكنه لا يحصر ما يستطيع الحساب تنفيذه بشكل مشروع. فإذا كان مجلد المشروع يحتوي على بيانات اعتماد نشر الإنتاج، فسيتمكن الوكيل من استخدامها. أبقِ هذه البيانات خارج حساب الوكيل تماماً.

بخلاف وكيل البوابة مثل OpenClaw، فإن OpenCode برنامج طرفية تفاعلي وليس daemon. لا يفتح أي منفذ للاستماع، ولا يملك خدمة طويلة التشغيل. لذلك لا توجد وحدة systemd تكتبها، ولا منفذ تضع له قاعدة جدار ناري من أجل الوكيل نفسه. يوفّر حساب المستخدم ومجلد المشروع حدَّ الاحتواء، ولهذا فإن القسم الأول من هذا الدليل هو الأهم.

ومع ذلك، يحتاج الخادم المحيط به إلى إجراءات الحماية المعتادة، لأن VPS المخصص للبرمجة يظل خادماً عاماً: استخدم SSH بالمفاتيح فقط مع تعطيل تسجيل دخول root، كما في تقوية SSH على VPS، واضبط جداراً نارياً بسياسة الرفض الافتراضي، وأجرِ التحديثات بانتظام. راجع أيضاً ما ينتجه الوكيل. اقرأ الفروقات التي ينشئها قبل دفعها، كما تقرأ pull request من مساهم جديد، لأنك أنت من ينشر النتيجة.

وأخيراً، أبقِ الأداة نفسها محدّثة. يصدر OpenCode تحديثات بانتظام، وتتضمن هذه التحديثات إصلاحات مهمة لبرنامج يشغّل أوامر على خادمك. استخدم المسار نفسه الذي ثبّتَّ الأداة من خلاله: أعد تشغيل نص التثبيت كمستخدم opencode، أو شغّل sudo npm update -g opencode-ai إذا ثبّتَّها من خلال npm، ثم تحقّق من الإصدار الجديد باستخدام opencode --version. إنفاق دقيقة على الصيانة من وقت إلى آخر أقل كلفة من تصحيح سلوك أصلحه إصدار قديم منذ أشهر.

FAQ

هل يستطيع OpenCode استخدام نموذج محلي بدلاً من API مدفوع؟

نعم. يتعامل OpenCode مع أي خادم متوافق مع OpenAI على أنه موفّر، لذلك يعمل نموذج يقدّمه Ollama على VPS نفسه: عرّف الموفّر في opencode.json باستخدام baseURL المحلي واسم النموذج الذي يعرضه Ollama. لكن العامل الحاسم هو العتاد، لأن النموذج المناسب لأعمال البرمجة الفعلية يحتاج إلى ذاكرة كبيرة، لذلك حدّد مواصفات الخادم وفقاً للنموذج قبل تنزيله.

كيف أُبقي OpenCode قيد التشغيل بعد إغلاق الحاسوب المحمول؟

شغّله داخل tmux على VPS. ابدأ الوكيل في جلسة مُسمّاة باستخدام tmux new -s opencode، ثم افصل الجلسة بالضغط على Ctrl-b ثم d. ستواصل الجلسة العمل على الخادم بعد انتهاء اتصال SSH. أعد الاتصال بها في أي وقت باستخدام tmux attach -t opencode، وستبقى المحادثة وأي مهمة قيد التشغيل موجودتين. تؤدي إعادة تشغيل الخادم إلى إنهاء الجلسة، لذلك ابدأ جلسة جديدة بعد إعادة التشغيل.

هل من الآمن السماح لـ OpenCode بتنفيذ أوامر على VPS؟

يمكن إدارة ذلك إذا عزلته. امنح OpenCode مستخدماً مخصصاً غير مميّز ولا تمنحه sudo، واحتفظ بمشاريعه في git بحيث يمكن التراجع عن كل تعديل، وخزّن مفتاح API في ملف بصلاحيات mode 600، واستخدم وكيل Plan لإجراء فحص أولي للقراءة فقط قبل السماح لوكيل Build بتغيير أي شيء. عندئذٍ لا يستطيع الوكيل إتلاف إلا ما يملكه حسابه، ويبقى باقي الخادم خارج نطاق وصوله.

ما الفرق بين OpenCode وClaude Code؟

OpenCode مفتوح المصدر بترخيص MIT ولا يعتمد على موفّر محدد، إذ يتصل بأكثر من 75 موفّراً للنماذج، بما في ذلك الموفّرون المحليون، من خلال واجهة واحدة. أما Claude Code فهو وكيل الطرفية الخاص بـ Anthropic، وقد صُمّم للعمل مع نماذج Anthropic. إذا كنت تريد أداة واحدة تعمل مع موفّرين متعددين، أو حزمة مستضافة ذاتياً بالكامل مع نموذج محلي، فإن OpenCode هو الخيار المناسب. يعمل كلاهما جيداً على VPS داخل tmux مع إعداد المستخدم غير المميّز نفسه.