cat ./projects/homelab

Homelab platform

Last updated ยท 1 min read

  • Homelab

What it is

The Ubuntu server at home that I use to practice what I'd build for a customer: modular services, one telemetry pipeline, and documentation good enough to rebuild from. This website's back end runs on it.

The platform

  • 13 services in modular Docker Compose (each service in its own folder, pulled together with include:): Prometheus, Loki, Promtail, Grafana, an OpenTelemetry Collector, Node Exporter, cAdvisor, ntopng, an NVIDIA GPU exporter, Portainer, Nginx Proxy Manager, Jellyfin and a landing page.
  • The OpenTelemetry Collector takes in OTLP, host, Docker and Prometheus telemetry, adds resource attributes, and sends metrics to Prometheus (15-day retention) and logs to Loki (30-day retention).
  • Access goes through Nginx Proxy Manager with TLS, and the host firewall only allows SSH, HTTP and HTTPS.

404ambitions on top of it

  • Ghost runs headless in Docker with MySQL 8. Authoring happens there; the public site is a static Astro build on Cloudflare Pages that reads the Ghost Content API.
  • A cloudflared tunnel makes only outbound connections, so no router ports are open. Cloudflare Access protects the Ghost admin.
  • Uploads go to Cloudflare R2 through an S3-compatible storage adapter, so the server keeps nothing but the database.
  • The Ghost stack joins the homelab's monitoring network and has its own Grafana dashboard.

Status and next steps

Running and growing. Next: a traces backend (Tempo) so Ghost traces can be turned on, rebuilding the site automatically when content is published, and demo containers for projects on their own subdomains.

Source

github.com/digitalShokri/homelab_v2

All projects