मुख्य सामग्री पर जाएं
The homelab console's overview

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

Webanion brand logoWebanionDevOps इंजीनियरिंगफ़र 02, 2026९ महीने

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

KubernetesTraefikCloudflareGoReact.jsTypeScriptSQLiteVictoriaMetricsGrafanaPostgreSQLMongoDBzotVerdacciosystemdLinuxGitHub Actions
Md Moniruzzaman Image

Md Moniruzzaman

पूरी कहानी

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

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

जो स्टूडियो क्लाइंट्स के लिए प्रोडक्ट बनाता है, वह अपने लिए भी हैरानी की हद तक बहुत कुछ चलाता है। Webanion अपनी वेबसाइट अपनी सभी भाषाओं में चलाता है, उसके पीछे का CMS, पब्लिक और प्राइवेट MCP सर्वर जिनसे AI असिस्टेंट उस कंटेंट को पढ़ और संभाल सकते हैं, और वे क्लाइंट प्लेटफ़ॉर्म जिन्हें वह बनाता और संभालता है, जैसे एक फ़ाइनेंस प्लेटफ़ॉर्म, एक बुकिंग प्लेटफ़ॉर्म, एक लेजर ऐप और एक रिसर्च ग्रुप की साइट। हर एक को चलने के लिए जगह चाहिए, एक डेटाबेस जिसका बैकअप हो, एक सर्टिफ़िकेट जो समय पर रिन्यू हो, और कोई जो कुछ टूटने पर ध्यान दे। हर हिस्सा अलग वेंडर से किराए पर लेने का मतलब है हर वेंडर पर एक बिल, एक डैशबोर्ड और एक अंधा कोना, और कोई एक जगह नहीं जो काम के दिन को तय करने वाले तीन सवालों का जवाब दे: क्या चल रहा है, क्या सब ठीक है, और आज किस पर ध्यान देना है।

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

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

सुबह सबसे पहले यही कंसोल खुलता है, और मर्ज के दौरान यही खुला रहता है। इसका ओवरव्यू क्लस्टर, GitHub, रजिस्ट्री और होस्ट को एक साथ पढ़ता है: कितने नोड तैयार हैं, वर्कलोड और पॉड स्वस्थ हैं या नहीं, कौन से पुल रिक्वेस्ट बाकी हैं और कौन से मर्ज हुए, हाल के रन में से कितने पास हुए, GitHub रिक्वेस्ट बजट में कितना बचा है, हर होस्ट का लोड, मेमोरी, डिस्क, तापमान और बिल्ड कैश, हाल में उठाए गए कदम, और आज किन चीज़ों पर हाथ लगाना है उनकी एक छोटी सूची, सबसे गंभीर पहले।

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

Brand colour backdrop
The console's overview: six summary cards for nodes ready, workloads, pods healthy, pull requests, runs passing and GitHub requests left, each host's load, memory, disk, temperature and build cache, the latest actions and the list of what needs attention
The same overview on a phone: nodes ready, workloads, pods healthy, pull requests and runs passing as stacked cards

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

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

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

Brand colour backdrop
The delivery board: two pending pull requests, nothing running and thirteen done, each done card with the image tag it deployed, above the table of what merging does per repository
A pending pull request card: checks not fetched, mergeable clean, merging deploys live, and the Merge button

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

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

Backups व्यू हर घंटे के माप से हर क्लेम की बढ़त का चार्ट दिखाता है। कैप्चर के दिन उसमें 10 क्लेम में 664.2 MB बैकअप डेटा, 10 बैकअप जॉब, सबसे नया नौ घंटे पुराना और कोई भी फ़ेल नहीं, दिख रहा था, और Schedules टैब में सभी 14 शेड्यूल्ड जॉब का आख़िरी रन सफल था।

Brand colour backdrop
The Backups view: 664.2 MB of backup data over ten claims, grown 373.3 MB in a week, the newest backup nine hours old across ten jobs, no failing jobs, and a growth chart for every backup claim
The Schedules tab: fourteen scheduled jobs, the nightly backups among them, each with its schedule, last run and a succeeded badge

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

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

The always-on host's readings: CPU load with its last twenty-four hours, memory, disk, temperature, and a build cache over its cap
Metrics from the cluster's own store through Grafana, framed in the console: which node answered scrapes over six hours, CPU busy and load per node, the always-on node steady all day and the build machine silent apart from two spikes

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

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

Brand colour backdrop
Drawn map of the homelab's facilities by role: Cloudflare tunnels, Access and an outage monitor at the edge, the router, the cluster's always-on server and build machine, and outside the house the backup and alert switches, GitHub and a phone

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

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

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

Brand colour backdrop
The audit trail, refusals included: twenty-four ok, one refused, none failed and none unanswered, and a band of merges, re-runs and restarts, one merge refused because its name was not typed, and two scale actions on the website's second copy
The Needs you list with its one item: a build cache over its cap that the nightly prune brings back

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

रोज़ का काम छोटा है, क्योंकि ज़्यादातर बोझ टूल उठाते हैं: सुबह कंसोल की सूची कि किस पर हाथ लगाना है, हर घंटे का ड्रिफ़्ट चेक जो ऐसा मर्ज हुआ मैनिफ़ेस्ट पकड़ता है जिसे किसी ने लागू नहीं किया, रात में कुछ फ़ेल हो तो फ़ोन, बैकअप स्विच जो तब तक चुप रहते हैं जब तक हर जॉब ख़बर देता रहे, और सर्टिफ़िकेट चेक जो किसी सर्टिफ़िकेट के एक्सपायर होने से हफ़्तों पहले चेतावनी देते हैं। कैप्चर के दिन उस सूची में एक ही चीज़ थी, अपनी सीमा से ऊपर गया एक बिल्ड कैश जिसे रात की सफ़ाई वापस ले आती है, उस तरह की छोटी गड़बड़ी जो उसी दिन ठीक करना सस्ता है और एक महीने बाद ढूँढना महँगा।

ईमानदार क़ीमत यह है कि किसी को इसकी ज़िम्मेदारी लेनी पड़ती है। पूरा स्टैक अपना होने का मतलब है कि सर्टिफ़िकेट, डिस्क और अपग्रेड वेंडर की नहीं, स्टूडियो की समस्या हैं, और जिस टीम में अपने इंफ़्रास्ट्रक्चर की देखभाल करने वाला कोई नहीं, उसके लिए किराए पर लेना बेहतर है। पर उस फ़ाउंडर या छोटी टीम के लिए जो चाहते हैं कि उनका इंफ़्रास्ट्रक्चर ऐसी चीज़ हो जिसे वे समझते हैं, इनवॉइस का ढेर नहीं, और उस क्लाइंट के लिए जो सबूत चाहता है कि जिस प्लेटफ़ॉर्म के लिए वह पैसे देता है उसकी हर दिन देखभाल होती है, व्यवहार में यह ऐसा ही दिखता है। Webanion प्लेटफ़ॉर्म इसी पर चलता है, और इससे संभव हुई चीज़ों की अपनी कहानियाँ हैं, जैसे किसी ऐप्लिकेशन को बदले बिना एक नोड को क्लस्टर में बदलना, और बिल्ड को होस्टेड CI से घर के रनर पूल और निजी रजिस्ट्री पर ले आना।

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

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

ntfy push notifications on a phone: the outage monitor's watcher reports it down at 9:16 PM on 30 September, its success signal past the grace time, then up at 9:20 PM after four minutes and eleven seconds
A Discord channel on a phone with the same event: the outage monitor reported down when its success signal missed the grace time, then up again, the downtime four minutes and eleven seconds
A Telegram alert on a phone from the cluster's own rules: the drift check firing because a namespace manifest has not matched the repository for two hours

आपको ये भी पसंद आ सकते हैं

Webanion brand logo

जब होस्टेड CI सबसे धीमा कदम बन गया, तो बिल्ड घर लौट आए

बिल्ड और डिप्लॉय GitHub के होस्टेड रनर से, जहाँ हर रन नई मशीन पर शुरू होता था और रिलीज़ कतारों और गड़बड़ियों का इंतज़ार करती थीं, घर के एक रनर पूल पर आ गए: एक बिल्ड मशीन जो चालू रहते हुए हर जॉब लेती है, और हमेशा चालू सर्वर पर स्टैंडबाय रनर, एक ऐसे वॉचडॉग के पीछे जो शक होने पर शिपिंग जारी रखने की ओर झुकता है। इमेज एक प्राइवेट कंटेनर रजिस्ट्री में जाती हैं और स्टूडियो की लाइब्रेरी एक प्राइवेट npm रजिस्ट्री में, दोनों बिल्डिंग के अंदर, और हर रन GitHub की रिटेंशन से आगे तक संग्रह में रहता है। सबसे धीमा डिप्लॉय आठ मिनट चौबीस सेकंड से तीन मिनट पाँच सेकंड पर आ गया, और CI एक तिहाई तेज़ हो गया।

Md Moniruzzaman Image

Md Moniruzzaman

सित 24, 2026

27 Pearls App Logo

27 Pearls - मोबाइल रिलीज़ और स्टोर सबमिशन

एक तैयार 27 Pearls ऐप एक हफ़्ते के एंगेजमेंट के भीतर App Store और Google Play पर मंज़ूर लिस्टिंग बन गया, बिना किसी दौर की अस्वीकृति के। उस हफ़्ते में रिलीज़ बिल्ड और साइनिंग, छात्र के फ़ायदे को केंद्र में रखकर लिखी लिस्टिंग कॉपी, हर ज़रूरी डिवाइस साइज़ के स्क्रीनशॉट, ऐप जो डेटा लेता है उससे मेल खाती प्राइवेसी घोषणाएँ, और रिव्यूअर के लिए काम करता एक अकाउंट शामिल था। ऐप आज भी Google Play पर है।

Md Moniruzzaman Image

Md Moniruzzaman

मई 05, 2023

Dr. Kris Valenza
fully booked brand logo

Fully Booked - बिना डाउनटाइम सेल्फ होस्टेड Kubernetes पर माइग्रेशन

Fully Booked मैनेज्ड क्लाउड इंफ़्रास्ट्रक्चर पर चलता था, जिसका बिल हर महीने बढ़ता था और पूरे स्टैक का स्वामित्व किसी के पास नहीं था। हमने पूरे प्लेटफ़ॉर्म को सेल्फ होस्टेड Kubernetes क्लस्टर पर स्थानांतरित किया, उपयोगकर्ताओं के लिए एक मिनट का भी डाउनटाइम लाए बिना। कटओवर में DNS, इनग्रेस, डेटाबेस और रिलीज़ पाइपलाइन शामिल थे, इस तरह चरणबद्ध कि ट्रैफ़िक तभी हटाया गया जब हर परत नए क्लस्टर पर सिद्ध हो गई। उस सप्ताह ऐप इस्तेमाल करने वाले किसी को पता नहीं चला कि कुछ हुआ है, और यही उद्देश्य था। मासिक बिल अपना हार्डवेयर बन गया, और वही क्लस्टर अब प्लेटफ़ॉर्म की साप्ताहिक रिलीज़ संभालता है।

Md Moniruzzaman Image

Md Moniruzzaman

जून 23, 2026

+1
Dominic Dormer
Read the Md Moniruzzaman blog

ब्लॉग प्रोडक्शन से लिखे फ़ील्ड नोट्स हैं: आर्किटेक्चर के फ़ैसले, असली उपयोगकर्ताओं के सामने टिके AI सिस्टम, और अपनी लागत खुद निकालने वाला इन्फ्रास्ट्रक्चर। काम से लिखा गया, काम के बारे में नहीं।