GitHub-होस्टेड रनर तब तक सुविधाजनक हैं जब तक बिल या प्रतीक्षा समय चुभने न लगे। फ्री टियर के ऊपर आप प्रति-मिनट भुगतान करते हैं, हर job 'कोल्ड' शुरू होता है और हर बार डिपेंडेंसी फिर से डाउनलोड करता है। आपके अपने VPS पर एक सेल्फ-होस्टेड रनर इन तीनों को पलट देता है: फ्लैट मासिक लागत, आपके कैश पहले से डिस्क पर मौजूद एक 'गर्म' मशीन, और एक बिल्ड एनवायरनमेंट जिसे आप पूरी तरह नियंत्रित करते हैं — विशिष्ट टूल वर्शन, अधिक RAM, एक Docker लेयर कैश जो सचमुच बना रहता है।
एक रनर को केवल GitHub तक आउटबाउंड पहुँच चाहिए, इसलिए यह हमारे सबसे सस्ते प्लान पर चलता है, क्रिप्टो से भुगतान होता है, और KYC की ज़रूरत नहीं।
एक रनर को क्या चाहिए
- आपके बिल्ड के लिए CPU और RAM। Small ($8/माह — 4 vCPU, 4 GB RAM, 35 GB NVMe) अधिकांश CI के लिए आरामदायक डिफ़ॉल्ट है: Node/Go/Rust बिल्ड, टेस्ट सूट, Docker इमेज बिल्ड। भारी कंपाइलेशन या समानांतर jobs? Medium या Pro प्लान पर जाएँ।
- कैश के लिए NVMe डिस्क। सेल्फ-होस्टिंग का पूरा मतलब स्थायित्व है — डिपेंडेंसी कैश, Docker लेयर, बिल्ड आर्टिफैक्ट रन के बीच डिस्क पर रहते हैं। NVMe रिस्टोर को तेज़ रखता है।
- डेडिकेटेड IP की ज़रूरत नहीं। रनर HTTPS पर GitHub को कॉल करता है; कोई इनबाउंड एक्सेस नहीं चाहिए। एक NAT प्लान ($3/माह से) काफ़ी है। डेडिकेटेड IP केवल तब लें जब आप कुछ ऐसा भी होस्ट करें जो ट्रैफ़िक सर्व करता हो।
एक रनर सेट करें (Ubuntu 24.04)
अपने रिपॉज़िटरी (या संगठन) में रनर बनाएँ: Settings → Actions → Runners → New self-hosted runner → Linux। GitHub एक डाउनलोड कमांड और एक बार का रजिस्ट्रेशन टोकन दिखाता है। VPS पर:
# एक नॉन-root उपयोगकर्ता के रूप में (रनर root के रूप में चलने से इनकार करता है)
adduser --disabled-password --gecos "" runner
su - runner
mkdir actions-runner && cd actions-runner
curl -o actions-runner-linux-x64.tar.gz -L \
https://github.com/actions/runner/releases/latest/download/actions-runner-linux-x64.tar.gz
tar xzf actions-runner-linux-x64.tar.gz
# GitHub UI से URL + टोकन के साथ रजिस्टर करें
./config.sh --url https://github.com/YOUR_ORG/YOUR_REPO --token YOUR_TOKEN
इसे सर्विस के रूप में चलता रखें
./run.sh को टर्मिनल में न चलाएँ — रनर को systemd सर्विस के रूप में इंस्टॉल करें ताकि यह रीबूट झेल सके:
sudo ./svc.sh install runner
sudo ./svc.sh start
sudo ./svc.sh status
रनर अब GitHub UI में Idle के रूप में दिखता है और अपने लिए लक्षित किसी भी job को उठा लेता है।
एक workflow से उपयोग करें
runs-on के साथ एक job को अपने रनर पर भेजें:
jobs:
build:
runs-on: self-hosted # या रजिस्ट्रेशन पर सेट किया गया कस्टम लेबल
steps:
- uses: actions/checkout@v4
- run: make build && make test
Docker-आधारित jobs
Docker एक बार इंस्टॉल करें, और आपके workflows इमेज बना सकते हैं या सर्विस कंटेनर चला सकते हैं, लेयर कैश रन के बीच बना रहता है:
sudo apt update && sudo apt install -y docker.io
sudo usermod -aG docker runner # रनर को sudo के बिना Docker उपयोग करने दें
प्रति-job डिस्पोज़ेबल आइसोलेशन के लिए, रनर को स्वयं एक कंटेनर में चलाएँ और हर रन पर इसे फिर से बनाएँ — अविश्वसनीय या मैट्रिक्स बिल्ड के लिए एक सामान्य पैटर्न।
CI के लिए EQVPS क्यों
- फ्लैट लागत, असीमित मिनट। कोई प्रति-मिनट मीटरिंग नहीं — एक व्यस्त पाइपलाइन उतनी ही लागत का है जितना एक निष्क्रिय।
- 'गर्म' कैश। डिपेंडेंसी और Docker लेयर रन के बीच NVMe पर रहते हैं; बिल्ड धीमे नहीं, तेज़ होते हैं।
- ~60 सेकंड में root, साफ़ इमेज। cloud-init के ज़रिए Ubuntu, Debian और अधिक; ठीक वही टूलचेन इंस्टॉल करें जो आपको चाहिए।
- बिना KYC, क्रिप्टो से भुगतान। रजिस्टर के लिए ईमेल, भुगतान के लिए USDC/USDT। रिलीज़ की भीड़ के लिए अतिरिक्त रनर चलाएँ और बाद में रद्द करें — अप्रयुक्त भुगतान किया गया समय आपके बैलेंस में वापस आ जाता है।
टिप्पणियाँ
अभी तक कोई टिप्पणी नहीं। पहले बनें।