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).

overview

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:

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.