Skip to content

Tim275/pi-cluster

Repository files navigation

🏠 Homelab

Homepage

Introduction

This repo contains all of the configuration and documentation of my homelab.

The purpose of my homelab is to learn and to have fun. Being a Cloud Native Engineer by trade, I work with Kubernetes every day, and my homelab is the place where I can try out and learn new things. On the other hand, by self-hosting some applications, it makes me feel responsible for the entire process of deploying and maintaining an application from A to Z. It forces me to think about backup strategies, security, scalability and the ease of deployment and maintenance.

Cluster Provisioning & Architecture

I use K3s to set up my cluster. I prefer K3s because it is lightweight and minimal, optimized for edge and IoT environments while still providing production-grade capabilities.

💻 Hardware

Raspberry Pi Cluster

Nodes

I use Raspberry Pi computers for my cluster, which offer great performance in a small form factor with minimal power consumption.

  • Raspberry Pi 5 8GB RAM (Master Node)
  • Raspberry Pi 5 8GB RAM (Worker Node)
  • Raspberry Pi 5 16GB RAM (Worker Node/Data Node)

🚀 Installed Apps & Tools

Apps

End User Applications

Logo Name Description
Linkding Self-hosted bookmark manager with browser extensions
Audiobookshelf Self-hosted audiobook and podcast server
pgAdmin Web-based PostgreSQL database management tool with credentials securely fetched from AWS Secrets Manager
Homepage A modern dashboard for self-hosted applications

Infrastructure

Everything needed to run my cluster & deploy my applications

Logo Name Description
Cilium eBPF-based networking, observability and security for Kubernetes
Cloudflare Zero Trust Used for private tunnels to expose public services (without requiring a public IP).
Cert Manager X.509 certificate management for Kubernetes with Let's Encrypt integration
CloudNativePG Database operator for running PostgreSQL clusters with AWS S3 backups
Flux CD My GitOps solution of choice for managing cluster resources
Grafana The open observability platform
Prometheus An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach
Renovate Automated dependency updates
AWS S3 Cloud object storage for database backups and disaster recovery
MinIO High performance, S3-compatible object storage for Kubernetes, used for local backups and as S3 target for apps
External Secrets Operator Kubernetes operator that integrates external secret management systems like AWS Secrets Manager
AWS Secrets Manager Centralized cloud-based secrets management service for storing and retrieving application credentials
Elasticsearch Search engine and analytics
Longhorn Distributed block storage system for Kubernetes with easy management of persistent volumes and automatic replication across multiple Raspberry Pis
Velero Backup and disaster recovery for Kubernetes resources and persistent volumes with AWS S3 integration for data protection

Cluster Management Interface

My homelab is orchestrated using a combination of GitOps tools that ensure all configurations remain declarative and consistent. I use Flux CD for continuous deployment and Renovate for automated dependency updates. This central interface, accessible via Homepage, provides a complete overview of cluster health, installed apps, and infrastructure status.

Networking

I use K3s with its built-in networking capabilities, which provides a simple yet powerful solution for container networking.

Storage

My storage strategy revolves around persistent volumes managed by K3s with local paths. For backups, I use CloudNativePG's integration with AWS S3 to ensure data durability.

Secret Management

I use a multi-layered approach to secret management:

  1. AWS Secrets Manager - Stores sensitive credentials like database passwords and service access keys
  2. External Secrets Operator - Pulls secrets from AWS Secrets Manager and creates corresponding Kubernetes secrets
  3. SOPS - Encrypts sensitive configuration files directly in the Git repository
  4. Flux - Handles decryption of SOPS-encrypted files during GitOps operations

Future Plans

As my homelab evolves, I'm planning to expand in these areas:

  1. GitOps Expansion - Further automation of cluster management with Flux
  2. Observability Enhancements - Adding distributed tracing with OpenTelemetry
  3. AI/ML Experimentation - Deploying small-scale ML models and pipelines
  4. Multi-cluster Architecture - Building a secondary cluster for HA testing

About

own Hosted. k8-cluster

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •