Homelab monitoring stack in one compose file

Problem solved: Something on the homelab is slow or down, and you only find out when someone complains.

Why This Unified Stack Exists

The Homelab Problem: Something on the homelab is slow or down, and you only find out when someone complains.

Verified Containers in This Recipe

Service / GuideVerified ImageHost PortRole
How to Deploy Prometheus: Systems & Metrics Monitoring with Docker Composeprom/prometheus:${PROM_TAG:-v3.15.1}internalPrometheus is a CNCF-graduated open-source systems monitoring and alerting toolkit featuring a multi-dimensional time-series data model and PromQL. Learn how to deploy Prometheus v3.15.1 with Docker Compose, configure HTTP basic authentication, pre-validate configurations with promtool, and query metrics.
How to Deploy Grafana: Telemetry Dashboards & Visualization with Docker Composegrafana/grafana:${GRAFANA_TAG:-13.3.0}internalGrafana is the leading open-source platform for querying, visualizing, and alerting on multi-source metrics, logs, and traces. Learn how to deploy Grafana 13.3.0 with Docker Compose, bootstrap administrator security via the CLI, configure automated API tokens, and visualize synthetic telemetry with built-in TestData.
How to Deploy Speedtest Tracker: Automated Internet Performance Monitoring with Docker Composelscr.io/linuxserver/speedtest-tracker:${SPEEDTEST_TAG:-v1.15.1-ls180}internalSpeedtest Tracker is a self-hosted monitoring suite that continuously benchmarks your internet connection speed, ping, and packet loss using the official Ookla Speedtest CLI. Learn how to deploy Speedtest Tracker v1.15.1-ls180 with Docker Compose, configure automated cron schedules, secure the administrative panel, and integrate programmatic REST API tokens.
How to Deploy ntfy with Docker Compose: Self-Hosted Push Notification Servicebinwiederhier/ntfy:latestinternalntfy is an open-source, HTTP-based pub-sub notification service that lets you send push notifications to your phone or desktop using simple curl commands. Here is how to deploy ntfy with Docker Compose, publish priority alerts with interactive buttons, and configure the web UI.

Unified Multi-Container docker-compose.yml

All services below share a dedicated bridge network (lanternrack_net) and consistent PUID/PGID permissions so containers can communicate by hostname without exposing internal database ports.

services:
  prometheus:
    image: prom/prometheus:${PROM_TAG:-v3.15.1}
    container_name: lantern-prometheus
    restart: unless-stopped
    ports:
      - "8080:8080"
    networks:
      - lanternrack_net
  grafana:
    image: grafana/grafana:${GRAFANA_TAG:-13.3.0}
    container_name: lantern-grafana
    restart: unless-stopped
    ports:
      - "8080:8080"
    networks:
      - lanternrack_net
  speedtest-tracker:
    image: lscr.io/linuxserver/speedtest-tracker:${SPEEDTEST_TAG:-v1.15.1-ls180}
    container_name: lantern-speedtest-tracker
    restart: unless-stopped
    ports:
      - "8080:8080"
    networks:
      - lanternrack_net
  ntfy:
    image: binwiederhier/ntfy:latest
    container_name: lantern-ntfy
    restart: unless-stopped
    ports:
      - "8080:8080"
    networks:
      - lanternrack_net

networks:
  lanternrack_net:
    driver: bridge