• छोटे हार्डवेयर और मुफ्त 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-आधारित .env files, config.yaml rendering
      • 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 करना → sops command से 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 बेहतर होने से इसका उपयोग कम है, और इसे हटाने पर विचार चल रहा है
  • फ़ोटो और फ़ाइलें

    • 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 में होता है
  • पढ़ना और जानकारी

    • Miniflux: minimal RSS feed reader, जिसमें लगभग 50 blogs और news sources की subscription है
      • keyboard shortcuts support, और algorithm-based sorting के बिना time-ordered feed
  • 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 किया जाता है, उनमें सीखने का मूल्य है
  • होमलैब शुरू करना हो तो छोटा शुरू करें और ज़रूरत से ज़्यादा मत सोचें

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.