Skip to content

Commit cd148ea

Browse files
authored
update README
1 parent 30cf332 commit cd148ea

1 file changed

Lines changed: 10 additions & 11 deletions

File tree

README.md

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,17 @@ This is my homelab infrastructure, defined in code.
2828

2929
| Hypervisor | OS | Tools | Networking | Misc. Automations |
3030
| ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
31-
| [![Proxmox](https://img.shields.io/badge/-Proxmox-black?logo=Proxmox)](https://www.proxmox.com) | [![Talos](https://img.shields.io/badge/Talos-black?&logo=talos)](https://www.talos.dev/) [![Ubuntu](https://img.shields.io/badge/Ubuntu-black?&logo=ubuntu&logoColor=red)](https://releases.ubuntu.com/noble/) [![Arch](https://img.shields.io/badge/Arch-black?&logo=archlinux)](https://archlinux.org/) | [![Docker](https://img.shields.io/badge/-Docker-black?logo=docker)](https://www.docker.com/) [![Kubernetes](https://img.shields.io/badge/-Kubernetes-black?logo=kubernetes)](https://k3s.io/) [![Renovate](https://img.shields.io/badge/-Renovate-black?logo=renovate&logoColor=blue)](https://github.com/renovatebot/renovate) [![OpenTofu](https://img.shields.io/badge/-OpenTofu-black?logo=opentofu)](https://opentofu.org/) [![Packer](https://img.shields.io/badge/-Packer-black?logo=packer)](https://www.packer.io/) [![Ansible](https://img.shields.io/badge/-Ansible-black?logo=ansible&logoColor=red)](https://www.ansible.com/) [![Flux](https://img.shields.io/badge/-Flux-black?logo=flux)](https://fluxcd.io/) | [![Unifi](https://img.shields.io/badge/-Unifi-black?logo=ubiquiti&logoColor=blue)](https://www.ui.com/) | [![n8n](https://img.shields.io/badge/-n8n-black?logo=n8n)](https://n8n.io/) [![Actions](https://img.shields.io/badge/-Actions-black?logo=github&logoColor=white)](https://github.com/features/actions) |
31+
| [![Proxmox](https://img.shields.io/badge/-Proxmox-black?logo=Proxmox)](https://www.proxmox.com) | [![Talos](https://img.shields.io/badge/Talos-black?&logo=talos)](https://www.talos.dev/) [![Ubuntu](https://img.shields.io/badge/Ubuntu-black?&logo=ubuntu&logoColor=red)](https://releases.ubuntu.com/noble/) [![Arch](https://img.shields.io/badge/Arch-black?&logo=archlinux)](https://archlinux.org/) [![NixOS](https://img.shields.io/badge/NixOS-black?&logo=nixos)](https://nixos.org/) | [![Docker](https://img.shields.io/badge/-Docker-black?logo=docker)](https://www.docker.com/) [![Kubernetes](https://img.shields.io/badge/-Kubernetes-black?logo=kubernetes)](https://k3s.io/) [![Renovate](https://img.shields.io/badge/-Renovate-black?logo=renovate&logoColor=blue)](https://github.com/renovatebot/renovate) [![OpenTofu](https://img.shields.io/badge/-OpenTofu-black?logo=opentofu)](https://opentofu.org/) [![Packer](https://img.shields.io/badge/-Packer-black?logo=packer)](https://www.packer.io/) [![Ansible](https://img.shields.io/badge/-Ansible-black?logo=ansible&logoColor=red)](https://www.ansible.com/) [![Flux](https://img.shields.io/badge/-Flux-black?logo=flux)](https://fluxcd.io/) | [![Unifi](https://img.shields.io/badge/-Unifi-black?logo=ubiquiti&logoColor=blue)](https://www.ui.com/) | [![n8n](https://img.shields.io/badge/-n8n-black?logo=n8n)](https://n8n.io/) [![Actions](https://img.shields.io/badge/-Actions-black?logo=github&logoColor=white)](https://github.com/features/actions) |
3232

3333
</div>
3434

3535
## 📖 **Overview**
3636

3737
This repository contains the IaC ([Infrastructure as Code](https://en.wikipedia.org/wiki/Infrastructure_as_code)) configuration for my homelab.
3838

39-
Most of my homelab runs on **Proxmox**, with VMs managed and maintained using [OpenTofu](https://opentofu.org/). All VMs are cloned from templates I created with [Packer](https://www.packer.io/).
39+
My homelab runs two infrastructure stacks: Kubernetes nodes provisioned with Talos Linux, and Proxmox VMs running Docker. All VMs are cloned from templates I created with [Packer](https://www.packer.io/). My Kubernetes nodes are all defined as code using Talos Linux. I have been migrating my Ubuntu VM's over to NixOS, see Nix config [here](https://github.com/Mafyuh/nixos) and going forward all VM's will be NixOS
4040

41-
All services are **containerized**, either managed with **Docker Compose** or **orchestrated with Kubernetes**. Over time, I've been migrating everything to Kubernetes using **[GitOps](https://en.wikipedia.org/wiki/DevOps) practices**, which is my long-term goal.
41+
Everything is containerizedeither managed with Docker Compose or orchestrated through Kubernetes. My long-term goal is to move it all to Kubernetes using **[GitOps](https://en.wikipedia.org/wiki/DevOps) practices**, and the migration is ongoing. Docker Compose sticks around mainly due to hardware limitations; scaling a homelab Kubernetes cluster means buying alot of hardware.
4242

4343
To automate infrastructure updates, I use **Github Actions**, which trigger workflows upon changes to this repo. This ensures seamless deployment and maintenance across my homelab:
4444

@@ -53,24 +53,24 @@ For Secret management I use [Bitwarden Secrets](https://bitwarden.com/products/s
5353

5454
> Kubernetes is using External Secrets implementation of BWS, not official. BWS Access Key is SOPS encrypted.
5555
56-
**[GitGuardian](https://www.gitguardian.com/)** makes sure to alert me if I do accidentally push a secret
56+
**[GitLeaks](https://github.com/gitleaks/gitleaks)** makes sure before every commit no secrets are exposed, **[GitGuardian](https://www.gitguardian.com/)** makes sure to alert me if something slips through GitLeaks.
5757

5858
Each container image is automatically scanned by **[Trivy](https://trivy.dev/latest/)**, with detected vulnerabilities published to **[Github Security](https://github.com/security)**
5959

60-
I use **Oracle Cloud** for their [Always-Free](https://www.oracle.com/cloud/free/) VM's and deploy Docker services that require uptime here. [Twingate](https://www.twingate.com/) is used to connect my home network to the various VPS's securely using [Zero Trust architecture](https://en.wikipedia.org/wiki/Zero_trust_architecture).
60+
I use **RackNerd** for their very reasonably priced VPS and deploy Docker services that require uptime here. [Tailscale](https://www.tailscale.com/) is used to connect my home network to the various VPS's securely using [Zero Trust architecture](https://en.wikipedia.org/wiki/Zero_trust_architecture).
6161

6262
I use [**Cloudflare**](https://www.cloudflare.com/) for my DNS provider with [**Cloudflare Tunnels**](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/) to expose some of the services to the world. [**Cloudflare Access**](https://www.cloudflare.com/access/) is used as Zero Trust for public websites, this is paired with [**Fail2Ban**](https://www.fail2ban.org/) looking through all my reverse proxy logs for malicious actors who made it through [**Access**](https://www.cloudflare.com/access/) and banning them via [**Cloudflare WAF**](https://www.cloudflare.com/web-application-firewall/).
6363

6464
I also utilize Unifi's IDS/IPS for intrusion detection on my home network, and use **[Wazuh](https://wazuh.com/)** as a SIEM to monitor and generate security alerts across all my hosts.
6565

6666
### **📊 Monitoring & Observability**
6767

68-
I use a combination of **Grafana, Loki, Alloy, and Prometheus** with various exporters to collect and visualize system metrics, logs, and alerts. This helps maintain visibility into my infrastructure and detect issues proactively.
68+
I use a combination of **Grafana, fluent-bit, VictoriaLogs and Prometheus** with various exporters to collect and visualize system metrics, logs, and alerts. This helps maintain visibility into my infrastructure and detect issues proactively.
6969

7070
- **Prometheus** – Metrics collection and alerting
71-
- **Loki** – Centralized logging for containers and VMs
71+
- **Victoria Logs** – Centralized logging
7272
- **Grafana** – Dashboarding and visualization
73-
- **Exporters**Alloy, Blackbox Exporter, Speedtest Exporter, etc.
73+
- **Exporters** – Blackbox Exporter, Speedtest Exporter, etc.
7474

7575
### ☁️ **Cloud Dependencies**
7676

@@ -83,7 +83,7 @@ Although I try to self-host everything I can, my infra still relies on the cloud
8383
| [OneDrive](https://www.microsoft.com/en-us/microsoft-365/onedrive/online-cloud-storage) | Takes backups of Proxmox VM's, Kubernetes PV's (will migrate to Proton Drive once there's proper Linux support) | Free (e5 dev) |
8484
| [Cloudflare](https://www.cloudflare.com/) | Domain, DNS, WAF | Free |
8585
| [GitHub](https://github.com/) | Hosting this repo and continuous integration/deployments | Free |
86-
| [Oracle Cloud](https://www.oracle.com/cloud/) | ARM Cloud VM, services such as Uptime Kuma, Vaultwarden | ~$5/month |
86+
| [RackNerd](https://www.racknerd.com/) | RackNerd VPS, services such as Gotify, Vaultwarden | ~$60/yr |
8787
| | | Total: ~$15/mo |
8888

8989
## 🧑‍💻 **Getting Started**
@@ -118,8 +118,7 @@ Proof that you don't need expensive new equipment to run infra like mine. Mostly
118118
| **Talos-2** | Optiplex 7040 Micro | Intel i5-6700t | 32GB DDR4 | 1x1TB SATA SSD 128GB NVME | Integrated | k8s control-plane |
119119
| **Talos-3** | Optiplex 7040 Micro | Intel i5-6700t | 32GB DDR4 | 1x1TB SATA SSD 128GB NVME | Integrated | k8s control-plane |
120120
| **TrueNAS** | Custom | AMD Ryzen 5 5500 | 32 GB DDR4 | 1TB NVMe, 4x4TB RAIDZ1 (Media), 2x4TB Mirrored (Backups) | Arc A310 | NAS + Jellyfin Server |
121-
| **PVE Node 1** | Custom | Intel i7-9700K | 64 GB DDR4 | NVMe for boot and VMs | Nvidia 1660 6GB | Main node with most VMs |
122-
| **PVE Node 2** | Custom | Intel i7-8700K | 64 GB DDR4 | 1×2TB NVMe | Nvidia 3080 10GB | More VMs |
121+
| **PVE** | Custom | AMD Ryzen 9 5950X | 64 GB DDR4 | NVMe for boot and VMs | Nvidia 1660 6GB | Main proxmox node |
123122
| **Pi** | Raspberry Pi 4 | | 8GB | 1TB m.2 SATA SSD w/ USB HAT | n/a | Home Assistant Server |
124123
| **Proxmox Backup Server** | [Mini-PC](https://www.amazon.com/FIREBAT-Computer-Expansible-Efficient-Business/dp/B0DZWP653T/ref=sr_1_4?s=pc&sr=1-4) | Intel N150 | 8GB | 2TB SATA | n/a | Backup Proxmox VM's |
125124

0 commit comments

Comments
 (0)