{"id":26900534,"url":"https://github.com/xxczaki/homelab","last_synced_at":"2026-04-04T16:31:35.190Z","repository":{"id":284270314,"uuid":"954280809","full_name":"xxczaki/argo-cd","owner":"xxczaki","description":"GitOps configuration for my local homelab K8s cluster ","archived":false,"fork":false,"pushed_at":"2025-04-01T03:17:15.000Z","size":112,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-01T04:24:42.516Z","etag":null,"topics":["argo-cd","gitops","grafana","homelab","k8s","kubernetes","loki","longhorn","pi-hole","sealed-secrets","tailscale","tailscale-operator"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xxczaki.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-24T20:53:31.000Z","updated_at":"2025-04-01T03:17:17.000Z","dependencies_parsed_at":"2025-04-01T04:22:43.770Z","dependency_job_id":null,"html_url":"https://github.com/xxczaki/argo-cd","commit_stats":null,"previous_names":["xxczaki/argo-cd"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxczaki%2Fargo-cd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxczaki%2Fargo-cd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxczaki%2Fargo-cd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xxczaki%2Fargo-cd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xxczaki","download_url":"https://codeload.github.com/xxczaki/argo-cd/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246604612,"owners_count":20804100,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["argo-cd","gitops","grafana","homelab","k8s","kubernetes","loki","longhorn","pi-hole","sealed-secrets","tailscale","tailscale-operator"],"created_at":"2025-04-01T08:01:04.697Z","updated_at":"2026-04-04T16:31:35.176Z","avatar_url":"https://github.com/xxczaki.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# xxczaki/homelab\n\n\u003e A GitOps-managed Kubernetes homelab running on a Raspberry Pi, powered by Argo CD\n\nSingle-node [K3s](https://k3s.io) cluster managed entirely through [Argo CD](https://argoproj.github.io/cd/) using the [app-of-apps pattern](https://argo-cd.readthedocs.io/en/stable/operator-manual/cluster-bootstrapping/#app-of-apps-pattern). Changes merged to `main` are automatically synced to the cluster using a GitHub webhook.\n\n## Tech stack\n\n- **Orchestration:** [K3s](https://k3s.io) – lightweight Kubernetes\n- **GitOps:** [Argo CD](https://argoproj.github.io/cd/)\n- **Networking:** [Cilium](https://cilium.io) (eBPF-based CNI) + [Tailscale](https://tailscale.com) (mesh VPN)\n- **Storage:** [Longhorn](https://longhorn.io) with [Backblaze B2](https://www.backblaze.com/cloud-storage) backups\n- **Monitoring:** [Grafana Cloud](https://grafana.com/products/cloud/) (Prometheus, Loki, Tempo)\n- **DNS:** [Pi-hole](https://pi-hole.net)\n- **Secrets:** [Sealed Secrets](https://github.com/bitnami-labs/sealed-secrets)\n- **Node config:** [Ansible](https://www.ansible.com)\n- **Dependency updates:** [Renovate](https://github.com/renovatebot/renovate)\n\n## Applications\n\n\u003c!-- AUTO-GENERATED:apps-table:START --\u003e\n\u003c!-- This table is auto-generated by scripts/generate-apps-table.sh — do not edit manually --\u003e\n| Application | Type | Version |\n|---|---|---|\n| [argo-cd](apps/argo-cd) | Helm | v9.4.17 |\n| [cilium](apps/cilium) | Helm | v1.19.2 |\n| [discord-bot](apps/discord-bot) | Helm | v0.20.7 |\n| [k8s-monitoring](apps/k8s-monitoring) | Helm | v3.8.5 |\n| [longhorn](apps/longhorn) | Helm | v1.11.1 |\n| [openclaw](apps/openclaw) | Git | v0.25.1 |\n| [pi-hole](apps/pi-hole) | Helm | v2.35.0 |\n| [sealed-secrets](apps/sealed-secrets) | Helm | v2.18.4 |\n| [system-upgrade](apps/system-upgrade) | Git + Kustomize | v0.19.0 |\n| [tailscale](apps/tailscale) | Helm | v1.94.2 |\n\u003c!-- AUTO-GENERATED:apps-table:END --\u003e\n\n## Project structure\n\n```\n.\n├── apps/                        # Argo CD application manifests\n│   └── \u003capp\u003e/\n│       ├── application.yaml     # Argo CD Application resource\n│       ├── secret.yaml          # Sealed Secret (if needed)\n│       └── resources/           # Additional resources (if needed)\n├── ansible/                     # Node provisioning playbooks\n│   ├── playbook.yml\n│   ├── inventory.yml\n│   └── templates/\n├── scripts/                     # Utility scripts\n│   ├── seal-secrets.sh\n│   ├── extract-secrets.sh\n│   └── generate-apps-table.sh\n├── secrets/                     # Raw secrets (git-ignored)\n└── root-application.yaml        # Root Argo CD Application\n```\n\n## Getting started\n\n### Prerequisites\n\n- A K3s node (provisioned with the Ansible playbook in `ansible/`)\n- `kubectl` configured for the cluster\n- [`kubeseal`](https://github.com/bitnami-labs/sealed-secrets?tab=readme-ov-file#kubeseal) CLI for secret management\n\n### Bootstrap\n\n1. Provision the node:\n\n   ```sh\n   $ cd ansible \u0026\u0026 ansible-playbook playbook.yml\n   ```\n\n2. Install the root application:\n\n   ```sh\n   $ kubectl apply -f root-application.yaml\n   ```\n\n   Argo CD will discover and sync all applications in `apps/` automatically.\n\n### Secrets\n\nTo seal secrets for the cluster:\n\n```sh\n$ ./scripts/seal-secrets.sh\n```\n\nTo extract raw secrets from a running cluster:\n\n```sh\n$ ./scripts/extract-secrets.sh\n```\n\n\u003e [!NOTE]\n\u003e Raw secrets are stored in `secrets/` and are git-ignored. Only sealed (encrypted) versions are committed.\n\n## AI disclosure\n\nThis project contains code generated by Large Language Models (LLMs), under human supervision and proofreading.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxxczaki%2Fhomelab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxxczaki%2Fhomelab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxxczaki%2Fhomelab/lists"}