حرّ الصيف — كل شيء يذوب، حتى أسعارنا.−25%−25% على كل خطة سنوية، حتى 31 أغسطسعرض الخطط
EQVPS

تشغيل مُشغّل GitHub Actions مستضاف ذاتيًا على VPS

27 يوليو 2026 · 4 دقيقة قراءة · EQVPS Team

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

هذا الدليل يُشغّل واحدًا صحيحًا: مثبّتًا، مُسجّلًا، حيًّا تحت systemd، و — الجزء الذي يخطئه الناس — آمنًا. لنبدأ بذلك الأخير، لأنه الجزء الذي يعضّ.

قاعدة الأمان الواحدة

سير عمل GitHub Actions يُشغّل شيفرة عشوائية — أيًّا كان في ملف سير العمل، وأيًّا كان ما تجرّه تلك الشيفرة. على مستودعك الخاص تلك شيفرتك، وهي جيّدة. على مستودع عامّ، طلب سحب من غريب يمكن أن يُشغّل شيفرته على مُشغّلك. ذلك ليس خطأ؛ هكذا يعمل CI. توثيق GitHub نفسه يقول بوضوح: لا تستخدم مُشغّلات مستضافة ذاتيًا مع مستودعات عامة.

فالقاعدة بسيطة وغير قابلة للتفاوض: المُشغّلات المستضافة ذاتيًا للمستودعات الخاصة. إن كان مستودعك عامًّا، استخدم مُشغّلات GitHub المستضافة وامضِ. كل ما أدناه يفترض مستودعًا خاصًا.

ما يحتاجه مُشغّل من الصندوق

يعتمد على البناء، وينبغي أن تحدّد الحجم لبنائك بدل رقم من صفحة:

القرص يهمّ أيضًا: مخابئ البناء، وطبقات Docker، والمستودعات المستنسخة تتراكم. أبقِ عينًا عليه وقلّم.

1. جهّز الصندوق

أنشئ مستخدمًا غير root للمُشغّل — مثبّت GitHub يرفض العمل كـ root على أي حال، وتريده كذلك:

sudo adduser --disabled-password --gecos "" runner
sudo usermod -aG sudo runner   # فقط إن كانت بناءاتك تحتاج sudo فعلًا

ثبّت أيًّا كان ما تحتاجه بناءاتك — سلسلة أدوات لغة، Docker، أدوات بناء. مثلًا، إن بنت مهامّك حاويات:

sudo apt update && sudo apt install -y docker.io
sudo usermod -aG docker runner

2. نزّل المُشغّل وسجّله

في مستودعك (أو مؤسّستك) على GitHub، اذهب إلى Settings ← Actions ← Runners ← New self-hosted runner. يمنحك GitHub أوامر التنزيل الدقيقة ورمز تسجيل (قصير الأمد — خذه طازجًا). كمستخدم runner:

sudo -iu runner
mkdir actions-runner && cd actions-runner
# استخدم الرابط الدقيق الذي يُظهره GitHub لنظامك/معماريتك:
curl -o actions-runner-linux-x64.tar.gz -L "URL_FROM_GITHUB"
tar xzf actions-runner-linux-x64.tar.gz
./config.sh --url https://github.com/YOUR_ORG/YOUR_REPO --token YOUR_TOKEN

config.sh يسأل عن اسم مُشغّل، وتسميات، ومجلّد عمل — الافتراضات جيّدة للبدء. التسميات هي كيف يستهدف سير عملك هذا المُشغّل (runs-on: self-hosted).

3. شغّله كخدمة systemd

يأتي المُشغّل بمساعد يثبّت خدمة systemd لأجلك — استخدمه، كي ينجو المُشغّل من إعادات التشغيل ويُعيد التشغيل عند الفشل. لا يزال كتثبيت مستخدم runner، لكن أوامر الخدمة تحتاج root:

sudo ./svc.sh install runner
sudo ./svc.sh start
sudo ./svc.sh status

ذلك يسجّل actions.runner.* كوحدة systemd تعمل كمستخدم runner، تبدأ عند الإقلاع. السجلّات تذهب إلى journald:

sudo journalctl -u 'actions.runner.*' -f

عد إلى صفحة Runners في GitHub، مُشغّلك الآن يُظهر Idle — نقطة خضراء. وجّه سير عمل إليه:

jobs:
  build:
    runs-on: self-hosted
    steps:
      - uses: actions/checkout@v4
      - run: make test

ادفع، وتعمل المهمّة على صندوقك.

4. أبقِه نظيفًا

مُشغّل مستضاف ذاتيًا يُعيد استخدام نظام ملفّاته بين المهامّ — تلك مكسب السرعة (مخابئ دافئة) والفخّ (حالة متبقّية). عادتان تُبقيانه سليمًا:

إن احتجت بيئة نظيفة حقًا لكل مهمّة، شغّل كل مهمّة داخل خطوة حاوية — يبقى المُشغّل، وفوضى المهمّة لا.

متى تستضيف ذاتيًا، بصدق

استضف ذاتيًا حين تحتاج سلسلة أدواتك مخبوزة، وصولًا لموارد شبكة خاصة، أو تحكّمًا بالآلة. ابقَ على مُشغّلات GitHub المستضافة حين تناسبك بيئة نظيفة مؤقّتة ودقائقهم — ذلك أبسط فعلًا، والأبسط يساوي شيئًا. ولا تستضف ذاتيًا أبدًا على مستودع عامّ. تلك ليست تفضيلًا.

إن كان مُشغّل مستودع خاص ما تحتاجه: اختر خطةSmall (8$) للبناءات الأخفّ، Medium (12$) حين تصير أثقل — ادفع بـ USDC أو USDT (بلا KYC، بلا وثائق)، وسيكون لديك root في نحو 60 ثانية. ثم اعمل نزولًا في هذه الصفحة وسيكون لديك مُشغّل يلتقط مهامّ بعد بضع دقائق.

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

لماذا أُشغّل مُشغّلي الخاص بدل المستضاف من GitHub؟

ثلاثة أسباب حقيقية: اعتماداتك وسلسلة أدواتك مخبوزة (بلا إعادة تثبيتها كل تشغيل)، وصول لموارد خاصة كسجلّ داخلي أو قاعدة بيانات، والتحكّم بالآلة — حجمها، مخابئها، شبكتها. إن ناسبتك دقائق GitHub المستضافة وبيئة نظيفة، ابقَ عليها. استضف ذاتيًا حين تحتاج تحديدًا واحدًا من تلك الثلاثة.

هل من الآمن استخدام مُشغّل مستضاف ذاتيًا؟

على مستودع خاص، نعم. على مستودع عامّ، لا — أبدًا. سير عمل يُشغّل شيفرة عشوائية ممّن يُطلقه، وعلى مستودع عامّ طلب سحب من غريب يمكن أن يُشغّل شيفرته على مُشغّلك. توثيق GitHub نفسه يقول ذلك. أبقِ المُشغّلات المستضافة ذاتيًا على مستودعات خاصة، أو اقبل أنك تسلّم صندوقك للإنترنت.

كم من المعالج والذاكرة يحتاجها مُشغّل؟

يعتمد كليًا على بنائك. مهمّة ترجمة-واختبار نموذجية مريحة بنواتين و4-8 GB — Small أو Medium هنا. البناءات الثقيلة (ترجمات أصيلة كبيرة، صور Docker كبيرة، مجموعات اختبار جائعة للذاكرة) تريد أكثر، وينبغي أن تحدّد الحجم لمهمّتك الفعلية، لا تخمين. راقب تشغيلًا حقيقيًا واحدًا وستعرف.

هل يستطيع مُشغّل واحد التعامل مع عدّة مستودعات؟

مُشغّل يمكن تسجيله لمؤسّسة والتقاطه من عدّة مستودعات، مهمّة واحدة في المرة افتراضيًا. لمزيد من التوازي، شغّل مُشغّلات أكثر — كلٌّ خدمة systemd خاصة به. فقط أبقِها كلها على مستودعات خاصة.

هل عليّ منحكم هوية؟

لا. بريد للتسجيل، USDC أو USDT للدفع. بلا وثائق، root في نحو دقيقة.

← العودة إلى المدوّنة← الخطط والأسعار

التعليقات

لا تعليقات بعد. كن الأول.

اترك تعليقًا

تُراجَع التعليقات قبل ظهورها.