An open API service indexing awesome lists of open source software.

https://github.com/pedrotchang/homelab

GitOps configuration and documentation of my Kubernetes Talos Linux home lab powered by FluxCD and Omni.
https://github.com/pedrotchang/homelab

fluxcd gitops homelab homelab-automation k8s k8s-at-home kubernetes linux omni sidero talos-linux

Last synced: about 1 month ago
JSON representation

GitOps configuration and documentation of my Kubernetes Talos Linux home lab powered by FluxCD and Omni.

Awesome Lists containing this project

README

          

# Welcome to my Home(lab) 🏡

## Introduction

Here you will find all the documentation of my homelab.

This 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!

## Architecture

![Homelab Architecture](homelab-architecture.png)

### GitOps Workflow

![GitOps Workflow](gitops-workflow.png)

## Hardware & Cluster Provisioning

I like to start off talking about hardware first. It's I think a great base line to understand what I was working with.

I have currently 4 machines:\
HP EliteDesk 800 G2 i5-6500T/16GB/256SSD\
HP EliteDesk 800 G2 i5-6500T/16GB/256SSD\
HP Laptop 8GB/256SSD\
ThinkPad P14s Gen 2 32GB/512SSD

I 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.

I could spin up new clusters in seconds, and exposing external services is a breeze.

I have them in this structure:

| Cluster | Usage | Hardware |
| --------------- | --------------- | --------------- |
| Data | PostgreSQL Database | HP 800 G2 (16GB) + HP Laptop (8GB) |
| App | Apps | HP 800 G2 (16GB) + ThinkPad P14s Gen 2 (32GB) |

## Apps

| Icon | Name | Description |
|------|------|-------------|
| Cilium logo | [Cilium](https://cilium.io/) | An amazing CNI used for all my clusters. I opt out of Flannel for Cilium. |
| CloudnativePG logo | [CloudnativePG](https://cloudnative-pg.io/) | A Kubernetes operator for deploying and managing PostgreSQL clusters. |
| External Secrets logo | [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. |
| External DNS logo | [External DNS](https://github.com/kubernetes-sigs/external-dns) | A Kubernetes addon that automates the management of DNS records based on Kubernetes resources. |
| FluxCD logo | [FluxCD](https://fluxcd.io/) | A GitOps tool for automating Kubernetes deployments from Git repositories. |
| Flux Operator logo | [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. |
| Grafana logo | [Grafana](https://grafana.com/) | A multi-platform analytics and visualization web application for monitoring data. |
| Prometheus logo | [Prometheus](https://prometheus.io/) | An open-source monitoring and alerting toolkit for containers and microservices. |
| Renovate logo | [Renovate](https://www.mend.io/renovate/) | An automated dependency update tool that creates and maintains pull requests for your dependencies. |
| Authentik logo | [Authentik](https://goauthentik.io/) | An open-source identity and access management platform providing authentication, authorization, and single sign-on (SSO) capabilities. |
| pgAdmin logo | [pgAdmin](https://www.pgadmin.org/) | A web-based administration and development platform for PostgreSQL databases. |

### End User Applications

#### Productivity & Knowledge Management
| Icon | Name | Description |
|------|------|-------------|
| Homepage logo | [Homepage](https://gethomepage.dev/) | A self-hosted dashboard that allows you to organize your web services and bookmarks in a clean, customizable interface. |
| Linkding logo | [Linkding](https://github.com/sissbruecker/linkding) | A self-hosted bookmark manager with tagging and search functionality. |
| Wallabag logo | [Wallabag](https://wallabag.org/) | A self-hosted read-it-later application that saves web articles and strips away clutter for comfortable reading. |
| n8n logo | [n8n](https://n8n.io/) | A self-hosted workflow automation tool that connects apps and services with a visual node-based editor. |
| CommaFeed logo | [CommaFeed](https://www.commafeed.com/) | A self-hosted RSS reader inspired by Google Reader with a clean, responsive interface. |

#### Media & Content
| Icon | Name | Description |
|------|------|-------------|
| Immich logo | [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. |

#### Lifestyle or Personal
| Icon | Name | Description |
|------|------|-------------|
| Hugo logo | [Pedro T. Chang](https://pedrotchang.dev) | A Hugo-built blog for sharing thoughts and technical writing. |

## Next Steps

- [x] Link my PostgreSQL Database in the data cluster to my TrueNAS Scale.
- [x] Have blob storage for my data cluster to create periodic backups.
- [x] Add on Immich, CommaFeed, Wallabag, to work with my data cluster, and also backup to blob storage.