Skip to content

Personal home server using Kubernetes on Proxmox, deployed using Terraform and FluxCD

License

Notifications You must be signed in to change notification settings

ToaHartor/maisonneux

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ea82469 · Jan 31, 2025
Dec 26, 2024
Jan 30, 2025
Jan 31, 2025
Nov 19, 2024
Jan 31, 2025
Jan 30, 2025
Sep 24, 2024
Dec 11, 2024
Dec 24, 2024
Jan 31, 2025
Jan 31, 2025
Jan 30, 2025
Jan 31, 2025
Jan 31, 2025
Sep 12, 2024
Dec 31, 2024
Dec 25, 2024
Sep 24, 2024
Aug 7, 2022
Jan 30, 2025
Nov 4, 2024
Jan 11, 2025

Repository files navigation

Maisonneux

Setup of my personal homelab ("maisonneux" can be jokingly translated to "homies" in French).

I first started with a simple server with OpenMediaVault with Docker configured in the UI, then migrated to the stacks available in the folder docker-compose/.

After some years and an upgrade on the server (more RAM and a new CPU), I migrated the entire server to Proxmox in a single Debian VM to keep the services running, then move the storage management to a TrueNAS Core VM and the microservices in a Kubernetes cluster using Talos Linux.

The provisioning of the virtual machines as well as LXCs in Proxmox is done with OpenTofu (or Terraform) using the Proxmox provider.

The main operations (cluster and VM provisioning) are performed using the Makefile at the root of the repository. Help command is coming soontm.


Repository organization

  • docker-compose/ contains the former stacks I used to manage my microservices. See this page for to see the list of microservices deployed.
  • helm/ contains the Helm charts used to deploy some microservices in K8s
  • scripts/ contains scripts used to setup environment, check health of services or build images
  • terraform/ contains a multi-environment . Static environment deploys static VMs and LXCs (such as the storage VM), and K8s environment deploys a Kubernetes cluster. See this page for more informations.

Cluster directories

Each directory represents a deployment stage, contains a folder for production and staging environments.

  • clusters/ : FluxCD configurations, contains Kustomization definitions for other stages
  • system/ : Core cluster components, CSI drivers
  • platform/ : Database operators, storage operators
  • core/ : Ingress, Identity provider
  • apps/ : Mostly internet facing apps

FluxCD reads the files in clusters/{env} then each describing a deployment stage points to a folder containing a Kustomization referencing the common .yaml files and eventual particularities.

Issues

Issues are not opened, as I'm not supposed to give support for the softwares/technologies I'm using. For that, please refer to their own repositories or forums. However, I'm open to any advice and discussion in the Discussion section.

Tools