# स्टूडियो चलाने वाला सेल्फ़-होस्टेड होमलैब, हर दिन की देखभाल के साथ

Company: Webanion
Service: DevOps इंजीनियरिंग
Period: 2026-02 - present
Tech: Kubernetes, Traefik, Cloudflare, Go, React.js, TypeScript, SQLite, VictoriaMetrics, Grafana, PostgreSQL, MongoDB, zot, Verdaccio, systemd, Linux, GitHub Actions
Canonical: https://webanion.com/hi/portfolio/self-hosted-homelab-that-runs-the-studio-infrastructure

सेल्फ़-होस्टेड Kubernetes क्लस्टर पर स्टूडियो का अपना इंफ़्रास्ट्रक्चर, जिसकी योजना फ़रवरी 2026 में बनी और तब से हर दिन उसकी देखभाल होती है: उसकी वेबसाइट, CMS और MCP सर्वर और वे क्लाइंट प्लेटफ़ॉर्म जिन्हें वह संभालता है, सब Cloudflare टनल के ज़रिए चलते हैं, हर डेटाबेस हर रात डंप और जाँचा जाता है, मेट्रिक्स और अलर्ट रूल फ़ोन तक पहुँचते हैं, घर के बाहर एक आउटेज मॉनिटर, एक कंटेनर रजिस्ट्री और एक npm रजिस्ट्री, और एक निजी कंसोल जो मर्ज, रन, इमेज, पॉड और नोड को एक ही पेज पर जोड़ता है।

## पूरी कहानी

हर वेंडर का अलग डैशबोर्ड किराए पर लेने के बजाय पूरा स्टैक अपना रखने में क्या लगता है, और हर दिन उसकी देखभाल से एक स्टूडियो को क्या मिलता है।

### स्टूडियो जो कुछ चलाता है, सब अपने सर्वरों पर चलता है

<p>जो स्टूडियो क्लाइंट्स के लिए प्रोडक्ट बनाता है, वह अपने लिए भी हैरानी की हद तक बहुत कुछ चलाता है। Webanion अपनी वेबसाइट अपनी सभी भाषाओं में चलाता है, उसके पीछे का CMS, पब्लिक और प्राइवेट MCP सर्वर जिनसे AI असिस्टेंट उस कंटेंट को पढ़ और संभाल सकते हैं, और वे क्लाइंट प्लेटफ़ॉर्म जिन्हें वह बनाता और संभालता है, जैसे एक फ़ाइनेंस प्लेटफ़ॉर्म, एक बुकिंग प्लेटफ़ॉर्म, एक लेजर ऐप और एक रिसर्च ग्रुप की साइट। हर एक को चलने के लिए जगह चाहिए, एक डेटाबेस जिसका बैकअप हो, एक सर्टिफ़िकेट जो समय पर रिन्यू हो, और कोई जो कुछ टूटने पर ध्यान दे। हर हिस्सा अलग वेंडर से किराए पर लेने का मतलब है हर वेंडर पर एक बिल, एक डैशबोर्ड और एक अंधा कोना, और कोई एक जगह नहीं जो काम के दिन को तय करने वाले तीन सवालों का जवाब दे: क्या चल रहा है, क्या सब ठीक है, और आज किस पर ध्यान देना है।</p><p>यहाँ जवाब है स्टूडियो के अपने सर्वरों पर एक Kubernetes क्लस्टर, जिसकी योजना फ़रवरी 2026 में बनी और तब से हर दिन उसकी देखभाल होती है। हर साइट और प्लेटफ़ॉर्म Cloudflare टनल के ज़रिए इसी से चलता है, हर डेटाबेस हर रात डंप होता है, मेट्रिक्स और अलर्ट रूल अंदर से क्लस्टर पर नज़र रखते हैं और एक आउटेज मॉनिटर घर के बाहर से, एक कंटेनर रजिस्ट्री और एक npm रजिस्ट्री स्टूडियो की अपनी इमेज और पैकेज रखती हैं, और सब पर एक निजी कंसोल है। कैप्चर के दिन, 30 सितंबर 2026 को, कंसोल ने 2 नोड, 54 वर्कलोड और 93 पॉड गिने।</p>

### एक पेज जो बताता है कि क्या चल रहा है और किस पर ध्यान चाहिए

<p>सुबह सबसे पहले यही कंसोल खुलता है, और मर्ज के दौरान यही खुला रहता है। इसका ओवरव्यू क्लस्टर, GitHub, रजिस्ट्री और होस्ट को एक साथ पढ़ता है: कितने नोड तैयार हैं, वर्कलोड और पॉड स्वस्थ हैं या नहीं, कौन से पुल रिक्वेस्ट बाकी हैं और कौन से मर्ज हुए, हाल के रन में से कितने पास हुए, GitHub रिक्वेस्ट बजट में कितना बचा है, हर होस्ट का लोड, मेमोरी, डिस्क, तापमान और बिल्ड कैश, हाल में उठाए गए कदम, और आज किन चीज़ों पर हाथ लगाना है उनकी एक छोटी सूची, सबसे गंभीर पहले।</p><p>इसकी असली ताक़त है जोड़: यह मर्ज, इसने जो रन शुरू किया, उस रन ने जो इमेज पुश की, वह पॉड जो उस इमेज को चला रहा है और वह नोड जिस पर पॉड है, पाँच टैब के बजाय एक पेज पर। यह Cloudflare Access के पीछे है और फ़ोन की चौड़ाई पर भी काम करता है, क्योंकि जब कुछ देखना होता है, तब लैपटॉप अक्सर खुला नहीं होता। कैप्चर के दिन इसमें 2 में से 2 नोड तैयार, 54 में से 54 वर्कलोड, 93 में से 93 पॉड स्वस्थ, और पिछले दो दिनों में 13 मर्ज दिख रहे थे।</p>

### हर मर्ज एक ही बोर्ड से होता है

<p>स्टूडियो के GitHub ऑर्गनाइज़ेशन के पुल रिक्वेस्ट एक बोर्ड पर रहते हैं, बाकी, चल रहे और पूरे, और हर कार्ड बताता है कि मर्ज करने पर क्या होगा: लाइव पर डिप्लॉय, स्टेजिंग पर डिप्लॉय, या कुछ नहीं। बोर्ड के नीचे एक टेबल हर रिपॉज़िटरी के लिए बताती है कि उसे यहाँ से मर्ज किया जा सकता है या नहीं, नहीं तो क्यों नहीं, उसका कॉन्करेंसी ग्रुप क्या है, और उसका वर्कफ़्लो हाथ से चलाया जा सकता है या नहीं।</p><p>बोर्ड से मर्ज भरोसे पर नहीं, पहरे में होता है। बटन दबाने के पल सर्वर पुल रिक्वेस्ट को फिर से पढ़ता है, लाल चेक या ड्राफ़्ट होने पर कभी मर्ज नहीं करता, हमेशा मर्ज कमिट से मर्ज करता है, और लाइव पर डिप्लॉय होने वाली किसी भी चीज़ से पहले रिपॉज़िटरी का पूरा नाम टाइप करवाता है। जो स्टूडियो एक हफ़्ते में कई प्रोडक्ट भेजता है, उसके लिए यही फ़र्क़ है: मर्ज क्या करेगा यह पहले जानना, या बाद में पता चलना। कैप्चर के दिन बोर्ड पर 2 बाकी पुल रिक्वेस्ट और 13 पूरे थे, हर पूरे कार्ड पर वह इमेज दर्ज थी जो उसने डिप्लॉय की।</p>

### बैकअप जो हर रात ख़ुद ख़बर देते हैं

<p>क्लस्टर का हर डेटाबेस हर रात डंप होता है, पंद्रह-पंद्रह मिनट के अंतर पर ताकि दो एक साथ शुरू न हों, और हर डंप के साथ हर टेबल की पंक्तियों की गिनती लिखी जाती है, जिससे रिस्टोर प्रूफ़ मिलान करता है जब वह किसी रन को एक बार इस्तेमाल होने वाले namespace में वापस लाता है। कंसोल का अपना आर्काइव, वह इकलौता स्टोर जिसे और कुछ दोबारा नहीं बना सकता, SQLite के ऑनलाइन बैकअप से कॉपी होता है और रखने से पहले उसकी अखंडता और पंक्तियों की गिनती जाँची जाती है। जाँचे गए रन के बाद हर जॉब घर के बाहर एक डेड मैन्स स्विच को संकेत भेजता है, इसलिए जो जॉब फ़ेल हो जाए, अटक जाए या शेड्यूल होना बंद कर दे, वह अगली सुबह ही पकड़ में आ जाता है, उस दिन नहीं जब रिस्टोर की ज़रूरत पड़े।</p><p>Backups व्यू हर घंटे के माप से हर क्लेम की बढ़त का चार्ट दिखाता है। कैप्चर के दिन उसमें 10 क्लेम में 664.2 MB बैकअप डेटा, 10 बैकअप जॉब, सबसे नया नौ घंटे पुराना और कोई भी फ़ेल नहीं, दिख रहा था, और Schedules टैब में सभी 14 शेड्यूल्ड जॉब का आख़िरी रन सफल था।</p>

### होस्ट, मेट्रिक्स, और घर के बाहर एक अलार्म

<p>हर होस्ट हर पाँच मिनट में अपना लोड, मेमोरी, डिस्क, तापमान और बिल्ड कैश बताता है, और मेट्रिक्स स्टोर पेज के अंदर ही Grafana से पढ़ा जाता है। क्लस्टर के अलर्ट रूल फ़ोन तक पहुँचते हैं, हर घंटे एक चेक उन मर्ज हुए मैनिफ़ेस्ट को पकड़ता है जिन्हें किसी ने लागू नहीं किया, और Cloudflare के एज पर एक आउटेज मॉनिटर हर मिनट हर पब्लिक साइट जाँचता है, क्योंकि क्लस्टर पर चलने वाला मॉनिटर क्लस्टर के बंद होने की ख़बर नहीं दे सकता।</p>

### हर सुविधा, एक नक़्शे पर

<p>होमलैब क्या-क्या देता है, मशीन के हिसाब से नहीं, भूमिका के हिसाब से बनाया गया: एज पर टनल और राउटर, क्लस्टर, डेटाबेस और उनके वॉल्यूम, कंटेनर और npm रजिस्ट्री, रनर पूल, रात के बैकअप और उनके स्विच, मेट्रिक्स स्टोर और उसके अलर्ट, घर के बाहर का आउटेज मॉनिटर, और सब कुछ पढ़ने वाला कंसोल।</p>

### हर कार्रवाई दर्ज होती है, इनकार भी

<p>कंसोल सिर्फ़ पढ़ता नहीं। मर्ज, री-रन, डिस्पैच, रीस्टार्ट, दूसरी कॉपी को बढ़ाना या घटाना और रोलबैक, सब पेज से दबाए जाते हैं, और हर एक एक दूसरी पहचान के ज़रिए लिखा जाता है, जिसकी अनुमतियों में हर उस ऑब्जेक्ट का नाम है जिसे वह छू सकती है, और उस एक कार्रवाई के लिए एक टोकन माँगा जाता है जो उसके बाद छोड़ दिया जाता है। कुछ भी होने से पहले कंसोल लाइव स्थिति फिर से पढ़ता है और हर पूर्व-शर्त को पास, चेतावनी या इनकार के रूप में सूचीबद्ध करता है, और लाइव पर डिप्लॉय होने वाली हर चीज़ की पुष्टि के लिए उसका नाम टाइप करना होता है।</p><p>हर दबाव एक पंक्ति बन जाता है जो सिर्फ़ जोड़ी जाती है, कभी बदली नहीं जाती: कब, कौन सी कार्रवाई, कौन सा लक्ष्य, नतीजा और क्या कहा गया, इनकार भी, ताकि ठुकराई गई कार्रवाई का रिकॉर्ड भी उतना ही पूरा हो जितना पूरी हुई कार्रवाई का। वही आर्काइव वह भी रखता है जो GitHub मिटा देता है: हर रन पूरा होते ही आर्काइव होता है, लॉग का पूरा टेक्स्ट एक साल और पंक्तियाँ हमेशा के लिए, GitHub की डिफ़ॉल्ट नब्बे दिन की अवधि से आगे।</p>

### हर दिन की देखभाल, और उसकी क़ीमत

<p>रोज़ का काम छोटा है, क्योंकि ज़्यादातर बोझ टूल उठाते हैं: सुबह कंसोल की सूची कि किस पर हाथ लगाना है, हर घंटे का ड्रिफ़्ट चेक जो ऐसा मर्ज हुआ मैनिफ़ेस्ट पकड़ता है जिसे किसी ने लागू नहीं किया, रात में कुछ फ़ेल हो तो फ़ोन, बैकअप स्विच जो तब तक चुप रहते हैं जब तक हर जॉब ख़बर देता रहे, और सर्टिफ़िकेट चेक जो किसी सर्टिफ़िकेट के एक्सपायर होने से हफ़्तों पहले चेतावनी देते हैं। कैप्चर के दिन उस सूची में एक ही चीज़ थी, अपनी सीमा से ऊपर गया एक बिल्ड कैश जिसे रात की सफ़ाई वापस ले आती है, उस तरह की छोटी गड़बड़ी जो उसी दिन ठीक करना सस्ता है और एक महीने बाद ढूँढना महँगा।</p><p>ईमानदार क़ीमत यह है कि किसी को इसकी ज़िम्मेदारी लेनी पड़ती है। पूरा स्टैक अपना होने का मतलब है कि सर्टिफ़िकेट, डिस्क और अपग्रेड वेंडर की नहीं, स्टूडियो की समस्या हैं, और जिस टीम में अपने इंफ़्रास्ट्रक्चर की देखभाल करने वाला कोई नहीं, उसके लिए किराए पर लेना बेहतर है। पर उस फ़ाउंडर या छोटी टीम के लिए जो चाहते हैं कि उनका इंफ़्रास्ट्रक्चर ऐसी चीज़ हो जिसे वे समझते हैं, इनवॉइस का ढेर नहीं, और उस क्लाइंट के लिए जो सबूत चाहता है कि जिस प्लेटफ़ॉर्म के लिए वह पैसे देता है उसकी हर दिन देखभाल होती है, व्यवहार में यह ऐसा ही दिखता है। <a href="/portfolio/webanion-headless-cms-portfolio-platform-with-mcp-server">Webanion प्लेटफ़ॉर्म</a> इसी पर चलता है, और इससे संभव हुई चीज़ों की अपनी कहानियाँ हैं, जैसे <a href="/portfolio/scaling-a-homelab-from-one-node-to-a-multi-node-cluster">किसी ऐप्लिकेशन को बदले बिना एक नोड को क्लस्टर में बदलना</a>, और <a href="/portfolio/replacing-hosted-ci-with-a-home-runner-pool-and-private-registries">बिल्ड को होस्टेड CI से घर के रनर पूल और निजी रजिस्ट्री पर ले आना</a>।</p>

### अलार्म फ़ोन तक पहुँचता है, और अलार्म पर भी नज़र रहती है

<p>किसी गड़बड़ी को पकड़ने के लिए किसी को डैशबोर्ड ताकते नहीं रहना पड़ता: अलार्म Telegram, Discord और ntfy पर फ़ोन तक पहुँचता है, Telegram पर आउटेज मॉनिटर और क्लस्टर के अपने अलर्ट रूल से, और Discord और ntfy पर मॉनिटर के पहरेदार से। मॉनिटर पर भी घर के बाहर से नज़र रखी जाती है, इसलिए 30 सितंबर को जब वह चार मिनट के लिए चुप हो गया, तो वही चुप्पी अलार्म बनकर आई, पहले डाउन और फिर वापस अप, एक साथ Discord और ntfy पर।</p>
