{"id":26963946,"url":"https://github.com/pedrotchang/homelab","last_synced_at":"2026-05-09T10:13:59.576Z","repository":{"id":274374309,"uuid":"922598295","full_name":"pedrotchang/homelab","owner":"pedrotchang","description":"GitOps configuration and documentation of my Kubernetes Talos Linux home lab powered by FluxCD and Omni.","archived":false,"fork":false,"pushed_at":"2025-04-01T00:43:28.000Z","size":255,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-01T01:32:21.891Z","etag":null,"topics":["fluxcd","gitops","homelab","homelab-automation","k8s","k8s-at-home","kubernetes","linux","omni","sidero","talos-linux"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"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/pedrotchang.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-01-26T16:30:07.000Z","updated_at":"2025-04-01T00:43:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"4f0e03a3-ad24-46b4-9fc4-63f70a54f389","html_url":"https://github.com/pedrotchang/homelab","commit_stats":null,"previous_names":["pedrotchang/homelab"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedrotchang%2Fhomelab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedrotchang%2Fhomelab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedrotchang%2Fhomelab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedrotchang%2Fhomelab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pedrotchang","download_url":"https://codeload.github.com/pedrotchang/homelab/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246944386,"owners_count":20858772,"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":["fluxcd","gitops","homelab","homelab-automation","k8s","k8s-at-home","kubernetes","linux","omni","sidero","talos-linux"],"created_at":"2025-04-03T06:18:53.275Z","updated_at":"2026-05-09T10:13:59.571Z","avatar_url":"https://github.com/pedrotchang.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Welcome to my Home(lab) 🏡\n\n\u003chttps://www.pedrotchang.dev/\u003e\n\n## Introduction\n\nHere you will find all the documentation of my homelab.\n\nThis repository is where I do all my testing, tinkering, and all-in-all a space for me to play, and work! It does have a serious note as well, since I will be working with my own personal data and require me to think about the whole process of deployment and maintanence!\n\n## Architecture\n\n![Homelab Architecture](homelab-architecture.png)\n\n### GitOps Workflow\n\n![GitOps Workflow](gitops-workflow.png)\n\n## Hardware \u0026 Cluster Provisioning\n\nI like to start off talking about hardware first. It's I think a great base line to understand what I was working with.\n\nI have currently 4 machines:\\\nHP EliteDesk 800 G2 i5-6500T/16GB/256SSD\\\nHP EliteDesk 800 G2 i5-6500T/16GB/256SSD\\\nHP Laptop 8GB/256SSD\\\nThinkPad P14s Gen 2 32GB/512SSD\n\nI love [Talos Linux](https://www.talos.dev/). It has production grade security out of the box, is lightweight, and has robust features. At first, I used straight baremetal. But after sometime (a week...), I realized that [Omni](https://www.siderolabs.com/platform/saas-for-kubernetes/) was the way to go.\n\nI could spin up new clusters in seconds, and exposing external services is a breeze.\n\nI have them in this structure:\n\n| Cluster | Usage | Hardware |\n| --------------- | --------------- | --------------- |\n| Data | PostgreSQL Database | HP 800 G2 (16GB) + HP Laptop (8GB) |\n| App | Apps | HP 800 G2 (16GB) + ThinkPad P14s Gen 2 (32GB) |\n\n## Apps\n\n| Icon | Name | Description |\n|------|------|-------------|\n| \u003cimg src=\"https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/cilium.png\" width=\"30\" alt=\"Cilium logo\"\u003e | [Cilium](https://cilium.io/) | An amazing CNI used for all my clusters. I opt out of Flannel for Cilium. |\n| \u003cimg src=\"https://avatars.githubusercontent.com/u/100373852?s=200\u0026v=4\" width=\"30\" alt=\"CloudnativePG logo\"\u003e | [CloudnativePG](https://cloudnative-pg.io/) | A Kubernetes operator for deploying and managing PostgreSQL clusters. |\n| \u003cimg src=\"https://raw.githubusercontent.com/external-secrets/external-secrets/refs/heads/main/assets/eso-logo-large.png\" width=\"30\" alt=\"External Secrets logo\"\u003e | [External Secrets Operator](https://external-secrets.io/) | A Kubernetes operator that synchronizes secrets from external APIs into Kubernetes. Currently, it uses secrets from my Azure Key Vault. |\n| \u003cimg src=\"https://raw.githubusercontent.com/kubernetes-sigs/external-dns/refs/heads/master/docs/img/external-dns.png\" width=\"30\" alt=\"External DNS logo\"\u003e | [External DNS](https://github.com/kubernetes-sigs/external-dns) | A Kubernetes addon that automates the management of DNS records based on Kubernetes resources. |\n| \u003cimg src=\"https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/flux-cd.png\" width=\"30\" alt=\"FluxCD logo\"\u003e | [FluxCD](https://fluxcd.io/) | A GitOps tool for automating Kubernetes deployments from Git repositories. |\n| \u003cimg src=\"https://avatars.githubusercontent.com/u/158298505?s=48\u0026v=4\" width=\"30\" alt=\"Flux Operator logo\"\u003e | [Flux Operator](https://github.com/flux-framework/flux-operator) | A Kubernetes CRD controller that manages the lifecycle of CNCF Flux. It automates installation, configuration, and upgrades of Flux controllers through a declarative API. |\n| \u003cimg src=\"https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/grafana.png\" width=\"30\" alt=\"Grafana logo\"\u003e | [Grafana](https://grafana.com/) | A multi-platform analytics and visualization web application for monitoring data. |\n| \u003cimg src=\"https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/prometheus.png\" width=\"30\" alt=\"Prometheus logo\"\u003e | [Prometheus](https://prometheus.io/) | An open-source monitoring and alerting toolkit for containers and microservices. |\n| \u003cimg src=\"https://avatars.githubusercontent.com/ml/287?s=82\u0026v=4\" width=\"30\" alt=\"Renovate logo\"\u003e | [Renovate](https://www.mend.io/renovate/) | An automated dependency update tool that creates and maintains pull requests for your dependencies. |\n| \u003cimg src=\"https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/authentik.png\" width=\"30\" alt=\"Authentik logo\"\u003e | [Authentik](https://goauthentik.io/) | An open-source identity and access management platform providing authentication, authorization, and single sign-on (SSO) capabilities. |\n| \u003cimg src=\"https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/pgadmin.png\" width=\"30\" alt=\"pgAdmin logo\"\u003e | [pgAdmin](https://www.pgadmin.org/) | A web-based administration and development platform for PostgreSQL databases. |\n\n### End User Applications\n\n#### Productivity \u0026 Knowledge Management\n| Icon | Name | Description |\n|------|------|-------------|\n| \u003cimg src=\"https://avatars.githubusercontent.com/u/122929872?s=48\u0026v=4\" width=\"30\" alt=\"Homepage logo\"\u003e | [Homepage](https://gethomepage.dev/) | A self-hosted dashboard that allows you to organize your web services and bookmarks in a clean, customizable interface. |\n| \u003cimg src=\"https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/linkding.png\" width=\"30\" alt=\"Linkding logo\"\u003e | [Linkding](https://github.com/sissbruecker/linkding) | A self-hosted bookmark manager with tagging and search functionality. |\n| \u003cimg src=\"https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/wallabag.png\" width=\"30\" alt=\"Wallabag logo\"\u003e | [Wallabag](https://wallabag.org/) | A self-hosted read-it-later application that saves web articles and strips away clutter for comfortable reading. |\n| \u003cimg src=\"https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/n8n.png\" width=\"30\" alt=\"n8n logo\"\u003e | [n8n](https://n8n.io/) | A self-hosted workflow automation tool that connects apps and services with a visual node-based editor. |\n| \u003cimg src=\"https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/commafeed.png\" width=\"30\" alt=\"CommaFeed logo\"\u003e | [CommaFeed](https://www.commafeed.com/) | A self-hosted RSS reader inspired by Google Reader with a clean, responsive interface. |\n\n#### Media \u0026 Content\n| Icon | Name | Description |\n|------|------|-------------|\n| \u003cimg src=\"https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/immich.png\" width=\"30\" alt=\"Immich logo\"\u003e | [Immich](https://immich.app/) | A high-performance self-hosted photo and video backup solution with features like automatic backup, timeline view, and ML-powered search. |\n\n#### Lifestyle or Personal\n| Icon | Name | Description |\n|------|------|-------------|\n| \u003cimg src=\"https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/hugo.png\" width=\"30\" alt=\"Hugo logo\"\u003e | [Pedro T. Chang](https://pedrotchang.dev) | A Hugo-built blog for sharing thoughts and technical writing. |\n\n## Next Steps\n\n- [x] Link my PostgreSQL Database in the data cluster to my TrueNAS Scale.\n- [x] Have blob storage for my data cluster to create periodic backups.\n- [x] Add on Immich, CommaFeed, Wallabag, to work with my data cluster, and also backup to blob storage.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpedrotchang%2Fhomelab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpedrotchang%2Fhomelab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpedrotchang%2Fhomelab/lists"}