2 minutes
Homelab overview
Intro
My homelab right now is still a WIP and not optimal… I’m using a combination of containers and VM’s. This is because I want a hybrid setup.
The idea is convert this setup to full-blown automation in the long run with tools like Puppet, Ansible and maybe even Kubernetes (even though that is overkill, still good learning).
Core
I consider these the main things in my homelab.
Name | Description |
---|---|
Proxmox | Hypervisor on my Dell Optiplex 3080 micro |
AdguardHome | DNS server + ad filtering on the network |
Gitlab | Git repo’s + CI/CD |
Docker | Containers |
Monitoring
I created a VM on my proxmox machine that would handle the monitoring of my homelab.
For this, I made an ansible role to setup a new monitoring stack pretty quickly! This role will install the following services:
- Grafana
- Prometheus
- Node_exporter
- Loki
- Promtail
This can definitely be improved so any changes or adjustments are welcome!
Additionally I have some small monitoring docker containers running:
- Uptime-kuma
- Speedtest (x2 -> LAN, WLAN)
- Watchtower (x2 -> Rpi4, NAS)
Media
The usual mediacenter stack that is build using docker-compose running on my NAS.
Name | Description |
---|---|
Jellyfin | Media system |
Jellyseerr | Media requester |
Sonarr | Series |
Radarr | Movies |
Bazarr | Subtitles |
Prowlarr | Indexer |
qBittorrent | Downloader |
Extra
VPN
A wireguard VPN is running as a docker container on my Raspberry Pi 4 to connect to my homelab anytime I want.
version: "3.8"
services:
wg-easy:
environment:
- WG_HOST=$HOST
- WG_PORT=51820
- WG_ALLOWED_IPS=$IP_RANGES
- WG_DEFAULT_DNS=$DNS
image: weejewel/wg-easy
container_name: wg-easy
volumes:
- .:/etc/wireguard
ports:
- "51820:51820/udp"
- "51821:51821/tcp"
restart: unless-stopped
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
Reverse proxy
As a reverse proxy I’m using Caddy. A really simple and handy tool that will make every service that I make accessible from the internet use TLS!
version: "3"
volumes:
caddy_data:
caddy_config:
services:
caddy:
image: caddy
container_name: caddy
ports:
- "80:80"
- "443:443"
- "2019:2019"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- /var/log/caddy:/var/log/caddy
- caddy_data:/data
- caddy_config:/config
restart: unless-stopped
Home assistant
Another rabbit hole that will eat away your time. Currently not really utilizing this too much but surely will in the future.
Dashboard
And last but not least, the dashboard I’m using in homepage. A really clean minimalistic dashboard which perfectly fits my needs.