Open Source · Single Binary · MIT

Homelab Horizon

One self-hosted tool for WireGuard VPN, split-horizon DNS, HAProxy reverse proxy with automatic Let's Encrypt wildcard SSL, and service health monitoring — managed from a single web UI. Runs on Ubuntu/Debian.

Stop juggling certs, DNS, and VPN configs

Running a homelab with external access usually means stitching together systems that don't talk to each other: SSL certificate sprawl, broken internal HTTPS, manual DNS edits on every IP change, and a new WireGuard config file for every device. Homelab Horizon consolidates all of it.

Consolidated SSL

Wildcard Let's Encrypt certs per zone, plus easy extra SANs for sub-zones. Inspect exactly what each cert covers — no more mystery broken HTTPS.

HTTPS everywhere

The same valid cert works on your LAN and from the public internet. No HTTP fallbacks, no browser warnings.

Automatic DNS sync

Add a service and DNS records update automatically across Route53, Cloudflare, Name.com, Hetzner, Gandi, DigitalOcean, Google Cloud DNS, and DuckDNS.

Split-horizon built in

Services resolve to internal IPs on your network or VPN, public IPs from the internet — the classic split-horizon problem, solved.

Self-service VPN

Generate invite links. Users scan a QR code and they're connected — no manual peer setup.

Unified dashboard

Every service, its health, DNS records, and SSL certs in one place.

Features

Screenshots

Homelab Horizon dashboard showing services, health, DNS and SSL status
Dashboard
Service management — domains, DNS, proxy backends and health
Services
Service detail view with proxy and DNS configuration
Service detail
WireGuard VPN client management with QR codes and invites
VPN clients
Port map overview of homelab services
Port map
Settings — zones, HAProxy, SSL and health checks
Settings

Quick start

Kick the tires with Docker:

cd examples/simple
./setup.sh            # generate WireGuard keys and config
docker compose up -d  # start Homelab Horizon

# open http://localhost:8090 and grab the admin token:
docker exec hz cat /etc/homelab-horizon/config.json.token

Or build the single static binary (Go 1.25+ and Node.js):

make
sudo ./homelab-horizon   # installs systemd service, writes admin token

Full setup guide, configuration reference, and HA topologies in the README on GitHub.