This repository contains the full configuration of my self-hosted homelab environment. Everything runs on a Raspberry Pi using Docker and Traefik as the central entrypoint and reverse proxy.
The homelab can be accessed through:
https://traefik.stevan.sexidude.com
Traefik handles TLS certificates (Let’s Encrypt), routing, and secure access to all internal services.
The homelab consists of several services, each isolated in its own folder with a dedicated docker-compose.yaml file. A root compose file orchestrates all services using extends.
Reverse proxy and entrypoint into the homelab. Provides automatic HTTPS, routing, dashboards, and middlewares.
Accessible at:
https://traefik.stevan.sexidude.com
Network-wide DNS filtering and ad blocking. Used as the LAN DNS server and routed through Traefik.
Accessible at:
https://pihole.stevan.sexidude.com
Serves a simple static landing page for testing and internal use.
Accessible at:
https://homelab.stevan.sexidude.com
Web UI and configuration portal for WireGuard VPN.
Accessible at:
https://vpn.stevan.sexidude.com
From the project root:
docker compose up -dThis loads and starts all service stacks using the root compose file.
docker compose up downA shared custom Docker network is used:
traefik_network
If some issues appear when it comes to the network just run:
docker network create traefik_networkAll services attach to this network so Traefik can route traffic internally without exposing service ports to the host.
The router is configured to use Pi-hole as the primary DNS server:
Primary DNS: 192.168.0.223
Secondary DNS: 8.8.8.8
Devices on the LAN resolve DNS through Pi-hole automatically.
Traefik uses Let’s Encrypt with the http challenge to automatically issue certificates for all subdomains:
- traefik.stevan.sexidude.com
- pihole.stevan.sexidude.com
- homelab.stevan.sexidude.com
- vpn.stevan.sexidude.com
Certificates are stored in traefik/letsencrypt/acme.json.