Abstract teal and amber illustration representing Grafana, a self-hosted monitoring and dashboard visualization platform

Grafana

Grafana

Grafana is an open-source platform for turning metrics, logs, and traces into dashboards you can actually read at a glance. Point it at a time-series database, a log aggregator, or even a plain SQL table, and it queries that source directly and renders the results as graphs, tables, heatmaps, or alerts on one screen. Grafana doesn’t collect or store data itself. It’s the visualization and alerting layer that sits on top of whatever’s already gathering your metrics.

License: Grafana is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-only), confirmed directly from the LICENSE file in the grafana/grafana GitHub repo, not assumed from a badge. That’s not what it launched with: Grafana ran under the permissive Apache License 2.0 until April 20, 2021, when Grafana Labs relicensed Grafana, alongside sister projects Loki and Tempo, to AGPLv3. The repo’s own LICENSING.md carves out real exceptions too, packages like grafana-ui and grafana-data stay Apache-2.0, and a separate, non-open-source Grafana Enterprise edition sits on top of the AGPL core, which matters once you get to Docker.

Quick facts: Official site grafana.com · GitHub grafana/grafana, 74,000+ stars · Docker image grafana/grafana on Docker Hub, Verified Publisher, 1B+ pulls.

Why Grafana carries an AGPL license

Grafana Labs cited the same pressure several open-source infrastructure companies were facing: large cloud providers repackaging a project’s own software as a competing managed service without contributing back. Elastic and MongoDB had already responded by moving to source-available licenses the Open Source Initiative doesn’t recognize as open source. Grafana Labs chose AGPLv3 instead, an OSI-approved license that still closes the loophole, since anyone running a modified version as a network service has to share that modified source too. For a homelab install, none of that changes daily use, but it explains the license mismatch in older tutorials.

What Grafana actually does

Most of what people actually use Grafana for comes down to three things. Dashboards are the visible part, a drag-and-drop panel editor with dozens of visualization types (time series, heatmaps, tables, gauges, geomaps), plus template variables that let one dashboard cover many hosts or services just by switching a dropdown. What makes it flexible rather than single-purpose is the data source layer: 150-plus built-in and community plugins covering Prometheus, InfluxDB, Elasticsearch, Loki, MySQL, PostgreSQL, and CloudWatch, and a single dashboard can mix several of them at once. Then there’s alerting, a unified engine that evaluates queries on a schedule and routes anything crossing a threshold to Slack, email, PagerDuty, or a plain webhook.

Installing Grafana with Docker

Grafana publishes two Docker images, and which one you end up running depends on whether you copy the first command you see. grafana/grafana-enterprise is Grafana’s own recommended default in current documentation, free to run and functionally close to the open-source build unless you add a paid license key, but it ships under a separate, non-AGPL license. grafana/grafana is the pure open-source build, and as of release 12.4.0 it replaced the older grafana/grafana-oss tag outright, the two are now the same image. If running the AGPL-licensed edition specifically matters, use grafana/grafana.

Watch the image name. Grafana’s own install docs default every docker run and docker-compose example to grafana/grafana-enterprise, not grafana/grafana. Copy-pasting the official page without noticing gets you the Enterprise image. It costs nothing without a license key, but it isn’t the pure open-source build.

services:
  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - grafana-storage:/var/lib/grafana

volumes:
  grafana-storage:
docker compose up -d

Grafana answers on port 3000 once the container’s running, with a default login of admin/admin it forces you to change on first sign-in. By default it stores dashboards, users, and alert rules in an embedded SQLite database inside that volume, fine for one person experimenting. Grafana’s own configuration docs recommend an external PostgreSQL or MySQL database before running it in production or with more than one instance.

  1. Open http://your-server-ip:3000 and log in with admin/admin, then set a real password when prompted.
  2. Go to Connections → Data sources and add whatever’s collecting your metrics, Prometheus and InfluxDB are the most common starting points.
  3. Build a dashboard, or import a ready-made one from Grafana’s own dashboard catalog.
  4. Set up at least one alert rule and a contact point before assuming everything will stay green.

Hardware: Grafana itself is light, a single Go binary in one container, comfortable on a Raspberry Pi or a small VM even with several dashboards open. What actually drives hardware needs is the data source underneath it: a Prometheus instance scraping thousands of metrics needs real disk and RAM, Grafana querying that data doesn’t. Our homelab setup guide for beginners covers picking hardware for the stack as a whole.

Homelab use cases

Grafana’s natural partner is Prometheus: Prometheus scrapes and stores metrics, Grafana queries and displays them, and the two appear together often enough that people assume they’re one project. They’re not, and Grafana without a metrics store behind it has nothing to draw. Home Assistant is a common data source once dashboards move past infrastructure and into the house, exporting sensor history for graphs well past Home Assistant’s own built-in history view. Uptime Kuma answers whether a service is up right now; Grafana answers how it’s trended over time, and homelabs commonly run both. Container metrics typically reach Grafana through a Prometheus exporter, with Portainer managing the containers rather than their metrics.

Grafana: pros and cons

  • Free and fully open source under AGPL-3.0 for the core product, no dashboard or user cap
  • Enormous data source ecosystem, one dashboard can mix Prometheus, a SQL database, and a log store
  • Industry-standard tool, skills built in a homelab transfer directly to real DevOps and SRE work
  • Huge library of ready-made community dashboards to import instead of building every panel from scratch
  • Doesn’t collect or store metrics itself, Prometheus, InfluxDB, or something similar still has to run alongside it
  • The official docker run example pulls the Enterprise image by default, not the pure open-source one
  • Real dashboards need query-language familiarity, PromQL, Flux, or SQL, depending on the data source connected
  • The default embedded SQLite database isn’t recommended once more than one person or instance needs it

Alternatives worth knowing about

Prometheus ships its own built-in expression browser, enough to chart a single query while debugging, with none of Grafana’s dashboarding or alerting. Netdata takes the opposite approach: real-time, pre-built dashboards with close to zero configuration, trading flexibility for a much shorter setup. Kibana plays a similar role for the Elastic and OpenSearch stack, built log-first rather than metrics-first. For homelabs where the real question is just whether something is up, Uptime Kuma is the lighter, purpose-built tool worth checking first.

FAQ

Is Grafana free to use?

Yes. The core product is free and fully open source under AGPL-3.0, with no dashboard or user limits. Grafana Enterprise adds paid support and proprietary plugins, but the grafana/grafana image runs without a license key as the free, open-source tier.

Do I need Prometheus to use Grafana?

No, but you need something like it. Grafana visualizes and alerts on data; it doesn’t collect or store metrics itself. Prometheus is the most common pairing, but InfluxDB, Loki, Elasticsearch, or a plain SQL database work just as well.

What database does Grafana use?

By default, an embedded SQLite database inside its data volume, fine for one person experimenting. Grafana’s own docs recommend an external PostgreSQL or MySQL database before running it in production or with more than one instance.

Should I use grafana/grafana or grafana/grafana-enterprise?

For a purely open-source, AGPL-licensed deployment, use grafana/grafana explicitly. Grafana’s own docs default their copy-paste examples to grafana/grafana-enterprise, free to run but under a separate, non-AGPL license.

Is Grafana difficult to set up?

Getting a container running is simple, one docker-compose file and a few minutes. What takes longer is connecting real data sources, learning enough query language to build a useful dashboard, and eventually migrating off SQLite. That gap is why we rate it Medium, not Easy.

Grafana earns its place in a homelab the way it does in a production stack: not by collecting anything itself, but by making everything else worth looking at. Our homelab setup guide for beginners covers the Docker basics it depends on. The Monitoring and Docker & Containers categories round out the rest of the tooling here.