होमलैब 2026 की स्थिति: self-hosting शौक का विकास
(mrlokans.work)- छोटे हार्डवेयर और मुफ्त cloud tunneling को मिलाकर media·AI·photo·monitoring जैसी कई सेवाओं को खुद चलाने वाले होमलैब सेटअप का सार
- OrangePI 5 से शुरुआत कर GMKTec NUC (32GB RAM, 1TB NVMe) में अपग्रेड, और साथ में Hetzner virtual machine चलाने वाली hybrid संरचना
- सभी सेवाएँ Docker containers में चलती हैं, और Ansible role-आधारित IaC तथा SOPS encryption से reproducibility और security सुनिश्चित की गई है
- Cloudflare Tunnel के जरिए inbound ports खोले बिना external access दिया जाता है, और Traefik + Authentik reverse proxy व SSO authentication संभालते हैं
- लगभग 7 यूरो मासिक ऑपरेटिंग लागत पर vendor lock-in के बिना data ownership बनाए रखते हुए, पूर्णता से अधिक सीखने और आनंद को महत्व दिया गया है
हार्डवेयर कॉन्फ़िगरेशन
- शुरुआत में OrangePI 5 का उपयोग किया गया, लेकिन power management और USB-connected storage समस्याओं के कारण GMKTec NUC पर स्विच किया गया
- AMD Ryzen 7 5700U CPU, 32GB RAM, 1TB NVMe M2 storage के साथ
- 2 M2 slots के कारण RAM और disk दोनों विस्तार योग्य
- सालभर के ऑपरेशन के आधार पर कहीं अधिक स्थिर
- जिन सेवाओं को 24/7 चलना जरूरी है, उन्हें अलग से Hetzner virtual machine पर चलाया जाता है
- NAS अभी तक नहीं बनाया गया है, और महत्वपूर्ण data को Syncthing से sync किया जाता है
- Ugreen NAS, Ubiquiti आदि में रुचि है, लेकिन अभी सीधे हाथ से काम करने की प्रक्रिया ही अधिक पसंद है
ऑपरेटिंग सिद्धांत
- Infrastructure-as-Code: जहाँ संभव हो, सभी settings को scripts या management platform (जैसे Ansible) से automate करके code के रूप में रखा जाए
- Reproducibility: failure या machine replacement की स्थिति में infrastructure को जल्दी redeploy और reconfigure किया जा सके, और experimental services हटाने पर कोई अवशेष न बचे
- उपयोग में आसानी: चूँकि यह hobby project है, इसलिए standard और familiar approaches को प्राथमिकता
ऑपरेटिंग सिस्टम
- Debian distribution को bare metal पर सीधे install करके उपयोग किया गया
- NixOS (reproducible builds) या Talos (k8s cluster) जैसे विकल्पों पर भी विचार हुआ, लेकिन single machine पर k8s workloads संभालने का बोझ और समय की कमी के कारण टाल दिया गया
- ProxMox जैसे hypervisor भी अनावश्यक माने गए, इसलिए उपयोग नहीं किया गया
नेटवर्क आर्किटेक्चर
- external exposure के लिए Cloudflare Tunnel चुना गया
- server से Cloudflare network तक outbound-only connection बनता है, इसलिए firewall में inbound port खोलने की जरूरत नहीं
- tunnel configuration के बाद दोनों दिशाओं का traffic tunnel के जरिए बहता है
- domain को Cloudflare DNS से जोड़ने पर subdomain के हिसाब से machine के किसी specific port/protocol (HTTP/HTTPS/TCP आदि) पर mapping की जा सकती है
- यह पूरी तरह मुफ्त उपलब्ध है, और ngrok से बेहतर विकल्प माना गया
- fixed IP (White IP) मॉडल में लागत और security risk हैं, और Tailscale Funnel जैसे विकल्प भी मौजूद हैं, लेकिन सबसे आसान समाधान होने के कारण Cloudflare Tunnel चुना गया
-
Traefik
- Docker को native रूप से समझने वाला open source reverse proxy, जो server automation के लिए सुविधाजनक है
- containers पर सही labels लगा देने से routing अपने आप detect हो जाती है, इसलिए अलग config file बदलने की जरूरत नहीं
-
Authentik
- IdP (Identity Provider) और SSO platform
- settings को blueprint (YAML files) के रूप में सहेजा जा सकता है, जिससे IaC सिद्धांत का पालन संभव है
- ForwardAuth middleware के जरिए sensitive services पर पहुँचने पर login page पर redirect किया जाता है
ऑपरेशन टूल्स
-
Ansible
- agentless (सिर्फ SSH आवश्यक) infrastructure automation tool, जिसकी YAML-आधारित configuration और भरपूर examples इसकी ताकत हैं
- हर service को role इकाई में परिभाषित किया जाता है: tasks, defaults, handlers, templates, files
- tasks: चलाए जाने वाले कामों की परिभाषा
- defaults: image tag, port, container name जैसे default values
- handlers: configuration बदलने पर container restart
- templates: Jinja2-आधारित
.envfiles,config.yamlrendering - files: static configuration, scripts
- service deployment का सामान्य क्रम:
- shared resources (network, volume) बनाना → PostgreSQL में schema/user बनाना → configuration templates render करना → Docker images pull करना → containers चलाना (environment variables, logging settings सहित) → Authentik blueprint में auth settings provision करना → जरूरत पड़ने पर Cloudflare Tunnel configuration
- कमियों में बहुत बड़ा documentation set, repetitive DSL structure और boilerplate शामिल हैं, लेकिन परिचित होने के कारण अभी भी उपयोग में है
- GitOps integration के बिना playbooks manually चलाए जाते हैं, और फिलहाल यह पर्याप्त है
-
SOPS (Secrets OPerationS)
- सिर्फ YAML/JSON values encrypt करता है और key structure वैसा ही रखता है, इसलिए Git diff उपयोगी बना रहता है
- age encryption backend का उपयोग — "PGP के बिना encryption को सरल बनाने" वाला tool
- host के हिसाब से सामान्य settings file (
homelab.yaml) और encrypted file (homelab.sops.yaml) अलग रखी जाती हैं - workflow:
age-keygenसे key generate करना →sopscommand से encrypted file edit करना (editor में decrypt होकर खुलती है और save पर auto re-encrypt होती है) → Ansible चलाते समय auto decryption- Ansible, SOPS को native रूप से support करता है, इसलिए अलग module या flag की जरूरत नहीं
- Ansible Vault की तुलना में फायदा: पूरी file नहीं बल्कि value-level encryption, इसलिए diff देखना संभव
- सीमा: age private key को team members के साथ सुरक्षित रूप से साझा करना पड़ता है, और key खो जाने पर secrets recover नहीं किए जा सकते
- single-operator होमलैब के लिए यह complexity का उचित स्तर है
चल रही सेवाएँ
-
मीडिया प्रबंधन: *arr stack
- Prowlarr: indexer manager, जो search results को दूसरी *arr services तक भेजता है
- Radarr: movie collection manager — मनचाही फिल्म जोड़ने पर search, download और organization अपने आप
- Lidarr: music के लिए वही काम, Navidrome के साथ integrated
- Bazarr: subtitles का automatic download
- Tidarr: Tidal audio को local रूप से रखने की सेवा
- Transmission: BitTorrent client (port 9091), जो सभी *arr services की download requests संभालता है
- सभी सेवाएँ Authentik authentication के पीछे रखी गई हैं
- shared downloads directory (
/mnt/data/docker/transmission/downloads) और PUID/PGID 1000 का उपयोग करके hardlinks से disk space बचाया जाता है - workflow उदाहरण: Radarr में movie जोड़ना → Prowlarr से search → Transmission download करता है → Radarr media library में move करता है → Jellyfin में देखा जा सकता है
-
मीडिया उपभोग
- Jellyfin: open source media server, जिसे Plex के विपरीत cloud login की जरूरत नहीं। यह अपनी authentication का उपयोग करता है और Android TV app सहित कई devices को support करता है
- Navidrome: Subsonic API को support करने वाला music streaming server, जो mobile apps (DSub2000 आदि) से जुड़ता है। Lidarr library folder में music उपलब्ध कराता है
- Calibre Web: e-book library manager और reader
- laptop के Calibre desktop app द्वारा managed metadata DB को Syncthing से server पर sync किया जाता है
- OPDS API के जरिए कई readers में किताबों तक पहुँच संभव
-
AI और चैट
- LibreChat: self-hosted AI chat interface, जो कई LLM providers (OpenAI, Anthropic, local Ollama) से जुड़ सकता है
- RAG (Retrieval Augmented Generation) support
- MongoDB (chat history), PostgreSQL + pgvector (embeddings), MeiliSearch (full-text search) की जरूरत होने के कारण यह अपेक्षाकृत heavy setup है
- Claude Code की accessibility बेहतर होने से इसका उपयोग कम है, और इसे हटाने पर विचार चल रहा है
- LibreChat: self-hosted AI chat interface, जो कई LLM providers (OpenAI, Anthropic, local Ollama) से जुड़ सकता है
-
फ़ोटो और फ़ाइलें
- Immich: self-hosted Google Photos alternative
- phone से automatic photo backup, face recognition, album organization, EXIF metadata extraction
- अपनी PostgreSQL (pgvector सहित) और machine learning container (image classification) का उपयोग करता है, और अभी हजारों photos स्टोर हैं
- Syncthing: laptop·phone·server के बीच folder sync। cloud relay के बिना direct P2P sync
- Obsidian Vault, documents आदि को कई devices और Android में sync करता है
- MinIO: S3-compatible object storage, जिसका उपयोग S3 API चाहिए होने वाले tests या applications में होता है
- Immich: self-hosted Google Photos alternative
-
पढ़ना और जानकारी
- Miniflux: minimal RSS feed reader, जिसमें लगभग 50 blogs और news sources की subscription है
- keyboard shortcuts support, और algorithm-based sorting के बिना time-ordered feed
- Miniflux: minimal RSS feed reader, जिसमें लगभग 50 blogs और news sources की subscription है
-
infrastructure और authentication
- Traefik: reverse proxy जो hostname के आधार पर traffic को Docker containers तक route करता है। container start होते समय सही labels हों तो यह auto-detect कर लेता है
- Authentik: SSO और ID provider। ForwardAuth middleware से services की सुरक्षा, और blueprints को Git में सहेजकर पूरी auth configuration का प्रबंधन
- PostgreSQL: shared database server, जिसे Authentik, Miniflux, Immich, LibreChat आदि अलग-अलग DB की जगह एक ही instance साझा करके resource बचाते हैं और backup सरल बनता है
- Redis: shared cache और session store, मुख्यतः Authentik जैसी सेवाओं के session management और job queues के लिए उपयोग
-
कस्टम सॉफ़्टवेयर
- Highlight Exporter: KOReader, Readwise, Apple Books से book highlights निकालकर Obsidian-compatible Markdown में बदलने वाली Go service
- Telegram Assistant: तरह-तरह के automation tasks और group chat में AI access देने वाला Telegram bot। नई तकनीकें परखने के लिए सबसे अधिक बार rewrite किया जाने वाला project
- Chess-blunder trainer: chess.com या lichess.com games को लाकर Stockfish से analyze करता है और गलत चालों को चुनकर training कराने वाला web app, जिसे जल्द open source किया जाएगा
मॉनिटरिंग
-
Beszel
- आसान setup और operation, अच्छे defaults के साथ lightweight monitoring solution
- Grafana stack को दो machines पर basic OS stats देखने के लिए बहुत भारी और जटिल माना गया
- Glances जैसे समान projects भी बहुत ज्यादा tuning माँगते महसूस हुए
- Beszel आवश्यकताओं का 120% तक कवर करता है और install करना आसान है
-
Statsping
- खास resources की बारीक monitoring के लिए minimal service ping tool
- परिभाषित endpoints को ping भेजकर latency और availability रिपोर्ट करता है, और service failure पर कई तरीकों से alert देता है
- होमलैब डाउन होने पर भी चालू रहे, इसलिए इसे cloud machine पर host किया गया है, और maintenance overhead भी अलग से नहीं है
वर्तमान कमियाँ
-
बैकअप
- backup की अहमियत पता होने के बावजूद अभी कुछ भी लागू नहीं किया गया है
- movie·music·photo data loss की तुलना में हर service के database backup की जरूरत अधिक है, लेकिन सही solution (जैसे restic) और hardware setup अभी तय नहीं हुआ
-
RAID configuration
- media data और system अभी एक ही M2 NVMe drive पर साथ मौजूद हैं
- NAS server या अलग backup machine के लिए physical space की कमी है
-
cloud independence
- resource availability के लिए Cloudflare Tunnel infrastructure पर काफी निर्भरता है
- Cloudflare outage होने पर infrastructure access भी रुक जाएगा, इसलिए आगे चलकर alternatives में निवेश की योजना है
-
पूर्ण IaC और automation
- CI pipeline या automatic provisioning के बिना Ansible playbooks manually चलाए जाते हैं
- फिलहाल GitOps में migration का कोई बड़ा अतिरिक्त लाभ महसूस नहीं होता
लागत दक्षता और निष्कर्ष
- Hetzner virtual machine पर मासिक लगभग 7 यूरो खर्च, और home server की बिजली खपत बहुत कम मानी गई है
- नई service जोड़ने या config बदलने में लगभग 20~30 मिनट लगते हैं, जिनमें काफी हिस्सा Claude Code को सौंपा जाता है और deployment से पहले सिर्फ छोटा review किया जाता है
- पूरे project पर वर्षों में कुल लगभग 100~150 घंटे लगाए जाने का अनुमान
- न्यूनतम vendor lock-in के बिना data ownership बनी रहती है, और अचानक terms of service बदलाव, algorithmic feeds या acquisition/merger के कारण data loss का जोखिम नहीं
- लक्ष्य कोई perfect system नहीं, बल्कि infrastructure की समझ और आनंद है; जो भी service deploy की जाती है, जो भी Ansible role लिखा जाता है, और जो भी secret encrypt किया जाता है, उनमें सीखने का मूल्य है
- होमलैब शुरू करना हो तो छोटा शुरू करें और ज़रूरत से ज़्यादा मत सोचें
19 टिप्पणियां
मैं पहले Tailscale इस्तेमाल करता था, लेकिन अब Cloudflare Tunnel इस्तेमाल करता हूँ और यह वाकई बहुत अच्छा है। हालांकि दोनों के use case थोड़े अलग हैं, लेकिन मेरे मामले में Tailscale का Adguard के साथ conflict हो जाता था, इसलिए उसे इस्तेमाल करना मुश्किल था।
क्या Tailscale के parent DNS को AdGuard पर सेट कर देने से काम नहीं हो जाएगा?
यह adguard desktop नहीं है, लेकिन adguard mobile local VPN के रूप में काम करता है, इसलिए इसे साथ में इस्तेमाल नहीं किया जा सकता।
लगता है टकराव DNS में नहीं, बल्कि VPN वाले हिस्से में हुआ था।
हाल ही में Google Nest पर MBC रेडियो चलाने के लिए मैंने यह-वह बहुत कुछ आज़माया।
मैंने Cloudflare Tunnel का इस्तेमाल किया। यह इतनी अच्छी सेवा है कि मन में सवाल आता है, यह मुफ़्त क्यों है?
मज़ेदार लगेगा। थोड़ा विस्तार से बताइए।
मैं Oracle Cloud free tier इस्तेमाल कर रहा हूँ। 4 vCPU, 24GB RAM और 200GB स्टोरेज मिलता है, और ARM आधारित होने की वजह से कभी-कभी कुछ चीज़ें compatible नहीं होतीं, लेकिन उसके अलावा खिलौने की तरह इस्तेमाल करने के लिए यह बहुत बढ़िया है।
नई सदस्यता ली हुई ISP ने 80 और 443 ports ब्लॉक कर रखे थे, इसलिए मैं cloudflare tunnel से बायपास करके इस्तेमाल कर रहा हूँ
अगर यह न होता तो शायद पेनल्टी भरकर ISP बदलना पड़ता
आप कौन-सी telecom company इस्तेमाल कर रहे हैं जो ports बंद रखती है?
असल में मैंने खुद इसे ब्लॉक नहीं किया था; सही बात यह थी कि ISP के router में 80 और 443 port forwarding को रोका गया था.
जब मैंने port forwarding के लिए third-party router इस्तेमाल किया, तो 1g option वाले मेरे plan की speed को चुपके से 100mbps तक nerf कर दिया गया.
फिर विकल्प ढूंढते-ढूंढते आखिरकार cf tunnel से जोड़ देना ही सबसे साफ-सुथरा समाधान लगा.
देखिए कि आपके थर्ड-पार्टी राउटर में MAC address बदलने का फ़ीचर है या नहीं, और अगर है तो उसे ISP के राउटर वाले MAC address में बदलकर देखें—मेरा ख़याल है कि उससे भी bypass किया जा सकता है।
cf tunnel सेट करने के बाद 80 और 443 पोर्ट पर fail2ban के जो logs जमा होते थे, वो पूरी तरह बंद हो गए, इसलिए मैंने उन पोर्ट्स को ही हटा दिया और फिर उसके बारे में सोचना बंद कर दिया.
डोमेन भी मैंने सीधे Cloudflare से खरीदा, SSO भी Cloudflare में सेट किया, और जो SSO पास नहीं कर पाता उसे service इस्तेमाल नहीं करने दी, ताकि सारे attacks की टक्कर Cloudflare ही मेरी तरफ से झेले.
इसमें सिर्फ मेरी अकेले इस्तेमाल की जाने वाली services ही हैं, इसलिए यह configuration भी काफी काम की लगी.
अगर Cloudflare में outage हो जाए, तो मैंने सोचा है कि उतना तो स्वीकार कर ही लूंगा.
आम तौर पर सुना है कि telecom providers के routers में port forwarding को ब्लॉक करके रखा जाता है.
अपना अलग router लगा दें तो शायद खुल जाए, लेकिन जैसा आपने कहा, cf tunnel में basic WAF भी लगा होता है और यहाँ तक कि यह ICN region भी पकड़ देता है, इसलिए इसे न इस्तेमाल करने की कोई खास वजह नहीं है.
मैंने अपने होमलैब पर n8n चला रखा है और उसे Anthropic, Telegram, storage वगैरह से जोड़कर छोटे-मोटे काम चला रहा हूँ; connectors अच्छे से बने हुए हैं, इसलिए काफ़ी सुविधाजनक लगा।
मैं Ryzen 8000 सीरीज़ के low-power डिवाइस को 24/7 होम सर्वर के रूप में इस्तेमाल कर रहा हूँ।
आमतौर पर इसे NAS के रूप में इस्तेमाल करता हूँ, और containers व services समेत कुल लगभग 70 चीज़ें चला रहा हूँ, लेकिन बिजली की खपत महीने में 10kWh भी नहीं आती। लागत करीब 2000 won पड़ती है।
Cloudflare Tunnel
बहुत पसंद है।
जिन दोस्तों के जवाब पूरे होने में समय लगता है, वे कभी-कभी 502 उगल देते हैं, लेकिन
फ्री है ना~
मैं भी cloud tunnel इस्तेमाल कर रहा हूँ, और यह सच में बहुत अच्छा है.
आमतौर पर जब router लगा होता है, तो कई बार external IP router के पास होता है.
Cloudflare Tunnel का इस्तेमाल करके internal IP को भी
domain registration के ज़रिए बाहर से connect किया जा सकता है~
यहाँ तक कि यह मुफ़्त भी है,
Hacker News की राय
यह सच में शानदार है, लेकिन Cloudflare Tunnel को media streaming के लिए इस्तेमाल नहीं करना चाहिए
Terms of Service के हिसाब से यह मना हो सकता है, या कम-से-कम इसका intended use नहीं है। सेवा block भी हो सकती है
इसकी जगह Wireguard या Tailscale इस्तेमाल करना बेहतर है
संबंधित लेख
CGNAT bypass के लिए भी यह अच्छा है, और GUI-आधारित विकल्प में Nginx Proxy Manager की सिफारिश करूंगा
मैं अभी rathole + traefik कॉम्बो पर migrate कर रहा हूँ। देर रात तक प्रयोग करते-करते पूरी रात जाग गया
Tailscale (Headscale नहीं) Funnel नाम का एक reverse proxy फीचर देता है, लेकिन उसमें personal domain इस्तेमाल नहीं किया जा सकता
CF Tunnel के विकल्प के रूप में Pangolin सबसे मिलता-जुलता है, और NetBird को reverse proxy फीचर के साथ self-host भी किया जा सकता है
यह ‘independence’ की fantasy कम और system administrator बनने की fantasy ज़्यादा लगती है
लेकिन ईमानदारी से कहूँ तो Google या Apple को $5/महीना देना कहीं बेहतर विकल्प लगता है। पता नहीं वे 3-2-1 backup भी कर रहे हैं या नहीं
अच्छा होगा अगर local library में ऐसी सेवाएँ चलाने वाला कोई volunteer group हो
बच्चों को service operations सीखने का मौका मिलेगा, और जिन लोगों की technical skills कम हैं वे भी open source का उपयोग कर सकेंगे
कोई भी customer support संभालना नहीं चाहता। इसलिए ज़्यादातर services इस तरह पैसों पर चलती हैं कि वे कह सकें, “support के लिए उधर संपर्क करें”
मैं secret management के लिए fnox इस्तेमाल करता हूँ
यह
sopsकी तुलना में कहीं ज़्यादा backends support करता है, और DX (developer experience) भी बेहतर लगता है‘स्वतंत्र और तैयार पुरुष की fantasy’ जैसी बात कही जाती है, लेकिन बीच में आखिर Cloudflare है, इसलिए यह पूरी तरह स्वतंत्र नहीं है
Cloudflare Tunnel वाकई शानदार tool है
पहले मैं अपने घर के IP से सीधे host करता था, लेकिन अब
cloudflaredसे इसे कहीं ज़्यादा आसानी से manage करता हूँfirewall या network intrusion की चिंता भी कम हो गई है
मेरा homelab अब Claude द्वारा लिखी गई idempotent bash scripts से manage होता है
dependencies उन लोगों की इच्छा की वजह से जटिल हो जाती हैं जो properties बदलना चाहते हैं, और उनके interaction से bugs पैदा होते हैं
इसलिए simple bash scripts में सब कुछ व्यक्त करना ज़्यादा stable लगता है
अभी मैं systemd + podman containers इस्तेमाल कर रहा हूँ, और अपने reference के लिए memo page छोड़ रखा है
क्या आपको लगता है कि practical convenience उस नुकसान की भरपाई कर देती है?
समझ नहीं आता कि लोग ऐसी चीज़ों को public internet पर क्यों डालते हैं। बस Tailscale क्यों नहीं इस्तेमाल करते?
लगता है लेखक ने homelab और self-hosting को गड़बड़ा दिया है
self-hosting का मतलब है वे services चलाना जिन्हें आप वास्तव में इस्तेमाल करते हैं, जबकि homelab experimentation और learning environment होता है
मैं अपना personal data या services homelab में नहीं रखता। वह टूट-फूट सकने वाली जगह है
मैंने Ukraine में सचमुच एक ऐसी SaaS कंपनी देखी है जो underground bunker के अंदर से production traffic संभाल रही थी
सिर्फ streaming subscriptions पर सालाना $1,300 खर्च देखकर मैं चौंक गया
इसलिए मैंने NAS और 36TB hard drives खरीदीं, arr stack सेटअप किया और सारी subscriptions रद्द कर दीं
पूरा परिवार भी ऐसा ही करने लगा और अब सालाना $5,000–$6,000 बच रहे हैं
NAS कुछ ही महीनों में अपनी लागत निकाल लेगा, और उसके बाद सब शुद्ध बचत है
Claude code की वजह से setup भी कुछ घंटों में हो गया
ऊपर से अब Netflix या Hulu जैसी बिना शोर-शराबे वाली content curation मिल जाती है, इसलिए अनुभव कहीं बेहतर है
4K Blu-ray rip करके घर में stream करो, तो commercial services से कहीं बेहतर picture quality मिलती है
आजकल streaming services की value for money बहुत गिर गई है। महंगे plans में भी कई बार 1080p ही सीमा होती है