125 lines
5.2 KiB
Markdown
125 lines
5.2 KiB
Markdown
---
|
||
title: Welcome to My Homelab
|
||
layout: page
|
||
description: The story behind my homelab project
|
||
showToc: true
|
||
menu:
|
||
main:
|
||
weight: 20
|
||
params:
|
||
icon: flask
|
||
---
|
||
## Introduction
|
||
|
||
My homelab journey began in 2013 with a humble Raspberry Pi, the very first model. I was needing a cheap machine for my first step into the world of Linux. It helped me a lot to dive into this technology and served me as a basic NAS, thank you Vezpibox (shitty name, I know)
|
||
|
||
In 2015, I upgraded to a Raspberry Pi 2, seeking better performance to run multiple applications like XBMC (the old Kodi's name), CouchPotato, SickBeard, you name it...
|
||
|
||
By 2018, the need for more RAM led me to a Raspberry Pi 3, allowing me to run even more applications. My 3 little machines were running happily together, in a quite ordered mess.
|
||
|
||
Finally, in 2019, my new job made me discover the virtualization, with virtual machines and above all Docker. I wanted to try that at home, I took a significant step forward with a compact yet powerful headless PC that laid the foundation of my homelab.
|
||
## Why a Homelab ?
|
||
|
||
I wanted my own playground, a space where breaking things was not just okay, but encouraged. It’s the best way to learn how to fix them and, more importantly, to really understand how they work.
|
||
|
||
My single server was great, but testing anything risky on it became a problem. It was running critical services like home automation and DNS, and believe me, having no lights or internet is a major incident in my household. The server had become indispensable. When it was down, everything was down. Not so fun anymore.
|
||
|
||
The first big challenge I set for myself was building a Kubernetes cluster. Sure, I could run one on a single node, but what’s the point of a cluster with only one node? You could argue that running Kubernetes to control my shutters is overkill, and you’d be right. But that wasn’t the point.
|
||
|
||
I also wanted to spawn new virtual machines at will, rebuild them from scratch, and apply Infrastructure as Code principles. I could have done all of that in the cloud, but I wanted full control.
|
||
|
||
Initially, my goal was to provide high availability for my existing services. One server wasn’t enough. So, I wanted a second node. But in most HA setups, three nodes are the sweet spot. And just like that, I was on my way to building what would become my homelab.
|
||
## Shaping the Lab
|
||
### Specifications
|
||
what I want to be able to do :
|
||
- host my existing services
|
||
- simulate enterprise environment
|
||
- 3 nodes for HA
|
||
- distributed storage for HA
|
||
- network / vlan for learning
|
||
### Constraints
|
||
- space: very small space, hidden in a service enclosure in the middle of the appartment
|
||
- noise: It must be silent because of its placement
|
||
- power: as running 24/7, the power draw must be reasonable
|
||
- budget: not cheap, but not too expensive
|
||
## Infrastructure Overview
|
||
### Rack
|
||
### Servers
|
||
### Network
|
||
### Cooling
|
||
### Photos
|
||
## Software Stack
|
||
### Hypervisor
|
||
### Network
|
||
### Application
|
||
#### Docker
|
||
#### Kubernetes
|
||
## Roadmap for my Lab
|
||
### Building my Homelab
|
||
- building the first proxmox node
|
||
- migrating from my headless PC to a VM
|
||
- building the second proxmox node with HDDs
|
||
- Install the rack
|
||
- Create the network
|
||
- Installating OPNsense
|
||
- Switching routing from my freebox to OPNsense
|
||
- Reconfigure my WiFi clients
|
||
- Build the third Proxmox node
|
||
- Externalize my HDDs
|
||
- Deploy VLAN
|
||
- Setup Proxmox Cluster
|
||
- Setup Ceph Storage
|
||
- Install fans
|
||
- Install ADguard Home along Unbound DNS
|
||
- Setup IPAM
|
||
- Install a bastion
|
||
### Let's Play
|
||
- Deploy a VM with Terraform
|
||
- Create a Terraform module
|
||
- Deploy Terraform infrastructure using Ansible
|
||
- Create a Blog
|
||
|
||
|
||
|
||
|
||
|
||
Welcome to my homelab — a space where I explore new technologies, break things on purpose, and learn by doing. What started as a few old machines has grown into a modest but powerful setup that I use for self-hosting, automation, testing infrastructure tools, and running personal projects.
|
||
|
||
|
||
|
||
## 1. Hardware
|
||
|
||
I currently run a 3-node cluster built with energy-efficient mini PCs and repurposed desktops. Here's a breakdown:
|
||
|
||
- **Node 1**: AMD Ryzen 4C/4T, 16GB RAM
|
||
- **Node 2**: AMD Ryzen 6C/6T, 16GB RAM
|
||
- **Node 3**: AMD Ryzen 8C/16T, 64GB RAM
|
||
- **Storage**: Ceph-based distributed storage across all nodes
|
||
- **Network**: 1Gbps LAN with 2.5Gbps NICs for Ceph replication traffic
|
||
- **Rack**: Compact 10" rack with managed switch and PDU
|
||
|
||
## 2. Software
|
||
|
||
- **Proxmox VE**: Used for virtualization and clustering
|
||
- **Ceph**: Distributed storage for VM disks
|
||
- **Kubernetes (K3s)**: For orchestrating containerized apps
|
||
- **Gitea**: Self-hosted Git with CI/CD via Gitea Actions
|
||
- **OPNsense**: Firewall, VLANs, and DNS (with AdGuard + Unbound)
|
||
- **Monitoring**: Grafana, Prometheus, Node Exporter
|
||
|
||
## 3. Projects
|
||
|
||
Some of the ongoing and past projects I've worked on:
|
||
|
||
- CI/CD automation using Gitea Actions
|
||
- GitOps pipeline for Kubernetes using ArgoCD
|
||
- Hugo-based personal blog hosted with Docker
|
||
- Home automation with Zigbee2MQTT and Home Assistant
|
||
- VPN and remote access via WireGuard
|
||
- Infrastructure as Code with Terraform and Ansible
|
||
|
||
---
|
||
|
||
If you're curious about any part of the stack or want to know how I built something specific, feel free to check the related blog posts!
|
||
|