منصوبے کے بارے میں

ایک ذاتی ہوم لیب ریپوزٹری جو پورے کلسٹر کو infrastructure-as-code کے طور پر دیکھتی ہے۔ یہ اسٹیک k3s پر چلتا ہے، جس میں Ansible playbooks، roles اور inventory قابلِ ترمیم source of truth کے طور پر کام کرتے ہیں؛ ایک رینڈر شدہ Docker Compose ڈائریکٹری صرف Raspberry Pi ہوسٹ پر موجود ہے۔ ریپوزٹری اس بات کی دستاویز فراہم کرتی ہے کہ Docker Compose سے k3s کی طرف منتقلی 2026-08-14 کو مکمل ہوئی، جب مین سرور نوڈ سے Docker کو ان انسٹال کیا گیا، اور اس کی مرحلہ وار ریکارڈنگ تاریخ کے طور پر ایک آرکائیو فولڈر میں محفوظ ہے۔ تین ہوسٹس بیان کیے گئے ہیں۔ daniel-box k3s کنٹرول پلین ہے اور تقریباً ہر ورک لوڈ چلاتا ہے، بشمول Traefik edge، Authelia SSO اور OIDC issuer، Pi-hole DNS، Longhorn storage، CrowdSec اور ایک پبلک WireGuard endpoint؛ Ansible اسی پر چلتا ہے۔ daniel-server ایک k3s ایجنٹ نوڈ ہے جس میں Jellyfin/Tdarr transcoding کے لیے Intel iGPU، LVM storage اور UPS/NUT شٹ ڈاؤن ہینڈلنگ استعمال ہوتی ہے۔ daniel-pi واحد باقی ماندہ Docker ہوسٹ ہے، جسے صرف LAN تک محدود رکھا گیا ہے، اور یہ ایک دوسرا WireGuard انسٹنس اور ایک چھوٹا یوٹیلیٹی اسٹیک چلاتا ہے۔ Ingress کو Traefik پر مرکزی بنایا گیا ہے، جو IngressRoute CRDs کے ذریعے روٹنگ کرتا ہے، جبکہ Authelia forward-auth middleware کے ذریعے محفوظ راستوں کی نگرانی کرتا ہے اور ان ایپس کے لیے OIDC ٹوکن جاری کرتا ہے جو اس کی حمایت کرتے ہیں۔ Cloudflare پبلک ہوسٹ نیمز کو پراکسی کرتا ہے، جبکہ مقامی نام LAN پر Pi-hole کے ذریعے حل کیے جاتے ہیں۔ README میں نوٹ کیا گیا ہے کہ نیٹ ورک سیگمنٹیشن مکمل طور پر نافذ نہیں ہے: صرف چند roles ہی NetworkPolicies کی تعریف کرتے ہیں، اور جہاں پالیسیاں موجود ہیں وہاں کلسٹر CNI کے ذریعے صرف ingress رولز نافذ کیے جاتے ہیں۔ Deployment کو ایک Docker play اور ایک k8s play میں تقسیم کیا گیا ہے، دونوں ہر ہوسٹ کی containers_list سے چلتے ہیں۔ Docker play کسٹم toposort فلٹرز اور فی رول meta/deps.yml اپ اسٹریم ڈیکلریشنز کا استعمال کرتے ہوئے ایک dependency graph کو حل کرتا ہے، تاکہ انحصار (dependencies) پہلے شروع ہوں اور ٹیگ شدہ رنز غیر پورے انحصار کو کھینچ لیں۔ k8s play رولز کو toposort کرتا ہے اور Traefik (CRD انسٹالیشن کے لیے) اور Authelia (middleware کے لیے) پر edges اخذ کرتا ہے، جس میں ان edges کے لیے واضح depends_on موجود ہے جو کسی ٹیمپلیٹ میں نہیں ہوتے۔ فلٹرز کی unit-testing ایک pre-commit hook میں pytest کے ذریعے کی جاتی ہے۔ ایک واحد سروس، dry run، مکمل تعیناتی، یا Pi ٹارگٹ کے لیے کمانڈز دستاویز شدہ ہیں، ساتھ ہی علیحدہ bring-up اور bootstrap playbooks بھی موجود ہیں۔ کراس کٹنگ معاملات میں SOPS/age-encrypted secrets شامل ہیں جو رن ٹائم پر ڈی کرپٹ ہوتے ہیں، جس میں pre-commit میں gitleaks اور ایک out-of-band کی بیک اپ موجود ہے؛ Prometheus، Grafana، Loki اور Tempo کی observability جس کے ڈیش بورڈز کوڈ کے طور پر فراہم کیے گئے ہیں؛ Backblaze B2 پر Longhorn کے شیڈولڈ بیک اپس جن میں فی والیم tiering اور disaster-recovery کے طریقہ کار درج ہیں؛ پن شدہ امیج ورژنز اور ہک ریویژنز کے لیے Renovate-driven پل ریکویسٹ؛ اور سیکیورٹی ٹولز بشمول Authelia TOTP/OIDC، فی نوڈ ایجنٹس کے ساتھ CrowdSec، fail2ban اور UFW default-deny inbound۔ Quality gates ایک pre-commit ٹول کے ذریعے چلتے ہیں جس میں YAML/JSON lint، ansible-lint، gitleaks، rendered-template validation، secret-rotation registry sync، ruff اور pytest شامل ہیں۔ نئی سروسز شامل کرنے کے لیے رہنمائی موجود ہے، چاہے وہ k8s roles کے طور پر ہوں جو Deployment/Service/IngressRoute/PVC manifests رینڈر کرتے ہیں، یا Pi کے لیے Docker roles کے طور پر۔