−25%

Windows के सालाना भुगतान पर, 31 अक्टूबर तक। प्लान देखें

EQVPS
शुरू करें

एक VPS पर एक स्व-होस्टेड GitHub Actions रनर चलाना

27 जुल॰ 2026 · 5 मिनट पढ़ने में · EQVPS Team

GitHub-होस्टेड रनर एक ठीक डिफ़ॉल्ट हैं। आप उनकी ज़रूरत उस पल बंद कर देते हैं जब एक बिल्ड कुछ ऐसा चाहे जो उनके पास नहीं है — आपकी निजी पैकेज रजिस्ट्री, एक ख़ास टूलचेन संस्करण जिसे हर रन इंस्टॉल करते आप थक गए हैं, आपके ख़ुद के नेटवर्क पर एक डेटाबेस, या बस मशीन पर ज़्यादा नियंत्रण। तभी एक VPS पर एक स्व-होस्टेड रनर अपनी क़ीमत कमाता है।

यह गाइड एक को ठीक से चलाती है: इंस्टॉल, रजिस्टर, systemd के तहत ज़िंदा, और — वह हिस्सा जिसे लोग ग़लत करते हैं — सुरक्षित। आइए उस आख़िरी से शुरू करें, क्योंकि यही वह हिस्सा है जो काटता है।

वह एक सुरक्षा नियम

एक GitHub Actions वर्कफ़्लो मनमाना कोड चलाता है — जो भी वर्कफ़्लो फ़ाइल में हो, और जो भी वह कोड खींचे। आपके ख़ुद के रेपो पर वह आपका कोड है, और ठीक है। एक सार्वजनिक रेपो पर, एक अजनबी से एक pull request उनका कोड आपके रनर पर चला सकता है। यह एक बग नहीं; यह CI कैसे काम करता है वह है। GitHub के अपने दस्तावेज़ साफ़ कहते हैं: सार्वजनिक रिपॉज़िटरी के साथ स्व-होस्टेड रनर इस्तेमाल न करें।

तो नियम सरल और ग़ैर-समझौता योग्य है: स्व-होस्टेड रनर निजी रेपो के लिए हैं। अगर आपका रेपो सार्वजनिक है, GitHub-होस्टेड रनर इस्तेमाल करें और आगे बढ़ें। नीचे सब कुछ एक निजी रेपो मानता है।

एक रनर को बॉक्स से क्या चाहिए

यह बिल्ड पर निर्भर है, और आपको एक पेज से एक संख्या के बजाय अपने के लिए साइज़ करना चाहिए:

  • एक सामान्य compile-and-test जॉब — 2 कोर और 4-8 GB आरामदेह है। Small ($8, 4 vCPU / 4 GB) या Medium ($12, 6 vCPU / 6 GB) इनमें से ज़्यादातर को कवर करता है।
  • भारी बिल्ड — बड़े native compile, बड़े Docker image बिल्ड, मेमोरी-भूखे टेस्ट सूट — ज़्यादा गुंजाइश चाहते हैं। एक असली रन देखें (बिल्ड करते वक़्त htop) और जो आप असल में देखें उसके लिए साइज़ करें, उम्मीद के लिए नहीं।

डिस्क भी मायने रखती है: बिल्ड कैश, Docker परतें, और क्लोन किए रेपो जुड़ते हैं। इस पर नज़र रखें और prune करें।

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 पर अपने रेपो (या org) में, Settings → Actions → Runners → New self-hosted runner पर जाएँ। GitHub आपको ठीक डाउनलोड कमांड और एक registration token देता है (यह अल्पकालिक है — इसे ताज़ा लें)। runner उपयोगकर्ता के रूप में:

sudo -iu runner
mkdir actions-runner && cd actions-runner
# अपने OS/arch के लिए GitHub जो ठीक URL दिखाए इस्तेमाल करें:
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 एक रनर नाम, लेबल, और एक work फ़ोल्डर माँगता है — शुरू करने को डिफ़ॉल्ट ठीक हैं। लेबल वह हैं जिनसे आपका वर्कफ़्लो इस रनर को लक्ष्य करता है (runs-on: self-hosted)।

3. इसे एक systemd सेवा के रूप में चलाएँ

रनर एक हेल्पर के साथ आता है जो आपके लिए एक systemd सेवा इंस्टॉल करता है — इसे इस्तेमाल करें, ताकि रनर रीबूट झेले और विफलता पर रीस्टार्ट हो। अब भी runner उपयोगकर्ता के इंस्टॉल के रूप में, पर सेवा कमांड को root चाहिए:

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

वह actions.runner.* को runner उपयोगकर्ता के रूप में चलती एक systemd यूनिट के रूप में रजिस्टर करता है, बूट पर शुरू होती। लॉग journald पर जाते हैं:

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

GitHub के Runners पेज पर वापस, आपका रनर अब Idle दिखाता है — हरा बिंदु। एक वर्कफ़्लो को इस पर इंगित करें:

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

पुश करें, और जॉब आपके बॉक्स पर चलता है।

4. इसे साफ़ रखें

एक स्व-होस्टेड रनर जॉब के बीच अपने फ़ाइलसिस्टम को दोबारा इस्तेमाल करता है — यही रफ़्तार की जीत है (गर्म कैश) और फ़ुटगन (बचा हुआ स्टेट)। दो आदतें इसे स्वस्थ रखती हैं:

  • नियमित prune करें। ख़ासकर Docker — एक cron पर docker system prune, वरना डिस्क चुपचाप मृत परतों से भर जाती है।
  • बॉक्स पर सीक्रेट्स न रखें। GitHub Actions सीक्रेट्स इस्तेमाल करें, प्रति-रन इंजेक्ट किए, न कि रनर के home में बैठी फ़ाइलें। अगर रनर समझौता हो, डिस्क पर जो कुछ भी है उसके साथ जाता है।

अगर आपको प्रति जॉब एक सचमुच साफ़ परिवेश चाहिए, हर जॉब को एक कंटेनर स्टेप के अंदर चलाएँ — रनर रहता है, जॉब की गंदगी नहीं।

कब स्व-होस्ट करें, ईमानदारी से

स्व-होस्ट करें जब आपको अपनी ख़ुद की टूलचेन बेक की हुई चाहिए, निजी नेटवर्क संसाधनों तक पहुँच, या मशीन पर नियंत्रण। GitHub-होस्टेड रनर पर रहें जब एक साफ़, फेंकने-योग्य परिवेश और उनके मिनट आपको सुहाएँ — वह सचमुच सरल है, और सरल कुछ मूल्य रखता है। और कभी, एक सार्वजनिक रेपो पर, स्व-होस्ट न करें। वह एक पसंद नहीं है।

अगर एक निजी-रेपो रनर वह है जो आपको चाहिए: एक प्लान चुनें — हल्के बिल्ड के लिए Small ($8), जब वे भारी हों तो Medium ($12) — USDC या USDT में भुगतान करें (कोई KYC नहीं, कोई दस्तावेज़ नहीं), और आपके पास लगभग 60 सेकंड में root होगा। फिर इस पेज पर नीचे काम करें और आपके पास कुछ मिनट बाद जॉब उठाता एक रनर होगा।

प्लान देखें और VPS ऑर्डर करें →

FAQ

GitHub-होस्टेड के बजाय अपना ख़ुद का रनर क्यों चलाएँ?

तीन असली वजहें: आपकी ख़ुद की dependency और टूलचेन बेक की हुई (हर रन उन्हें दोबारा इंस्टॉल नहीं), एक आंतरिक रजिस्ट्री या डेटाबेस जैसे निजी संसाधनों तक पहुँच, और मशीन पर नियंत्रण — इसका आकार, इसके कैश, इसका नेटवर्क। अगर GitHub-होस्टेड मिनट और एक साफ़ परिवेश आपको सुहाते हैं, उन पर रहें। स्व-होस्ट करें जब आपको ख़ासकर उन तीन में से एक चाहिए।

क्या एक स्व-होस्टेड रनर इस्तेमाल करना सुरक्षित है?

एक निजी रेपो पर, हाँ। एक सार्वजनिक रेपो पर, नहीं — कभी नहीं। एक वर्कफ़्लो जो कोई ट्रिगर करे उसका मनमाना कोड चलाता है, और एक सार्वजनिक रेपो पर एक अजनबी का pull request उनका कोड आपके रनर पर चला सकता है। GitHub के अपने दस्तावेज़ यही कहते हैं। स्व-होस्टेड रनर को निजी रेपो तक रखें, या स्वीकारें कि आप अपना बॉक्स इंटरनेट को सौंप रहे हैं।

एक रनर को कितना CPU और RAM चाहिए?

पूरी तरह आपके बिल्ड पर निर्भर। एक सामान्य compile-and-test जॉब 2 कोर और 4-8 GB के साथ आरामदेह है — यहाँ Small या Medium। भारी बिल्ड (बड़े native compile, बड़े Docker image, मेमोरी-भूखे टेस्ट सूट) ज़्यादा चाहते हैं, और आपको अपने असली जॉब के लिए साइज़ करना चाहिए, एक अंदाज़े के लिए नहीं। एक असली रन देखें और आप जान जाएँगे।

क्या एक रनर कई रेपो संभाल सकता है?

एक रनर एक संगठन के लिए रजिस्टर किया जा सकता है और कई रेपो द्वारा उठाया जा सकता है, डिफ़ॉल्ट रूप से एक बार में एक जॉब। ज़्यादा समांतरता के लिए, ज़्यादा रनर चलाएँ — हर एक अपनी systemd सेवा है। बस उन सबको निजी रेपो पर रखें।

क्या मुझे आपको एक ID देनी है?

नहीं। साइन अप के लिए ईमेल, भुगतान के लिए USDC या USDT। कोई दस्तावेज़ नहीं, लगभग एक मिनट में root।

टिप्पणियाँ

अभी तक कोई टिप्पणी नहीं। पहले बनें।

एक टिप्पणी छोड़ें

टिप्पणियाँ दिखने से पहले मॉडरेट की जाती हैं।