Building Self-Hosted Dashboards with Grafana
When business metrics live in five different applications, you need one screen that shows everything. Grafana is that screen.
Business decisions should be driven by data, not gut feelings. But when your data lives in five different applications (CRM, accounting, helpdesk, monitoring, analytics), getting a complete picture means logging into five different dashboards. Grafana solves this by pulling data from every source into a single unified view.
What Grafana Actually Does
Grafana is a dashboard platform. It connects to data sources (databases, APIs, monitoring systems), queries them on a schedule, and displays the results in configurable panels: line charts, bar charts, gauges, tables, heatmaps, and more. You arrange panels into dashboards. The dashboard refreshes automatically. One URL shows your entire business at a glance.
Grafana is not a database. It does not store your data. It queries your existing data sources and visualises the results. This makes it lightweight and flexible. It works with whatever data infrastructure you already have.
Data Sources That Matter for Business
- PostgreSQL and MySQL: Query your CRM, helpdesk, or ERP database directly. Grafana runs SQL queries and visualises results. Example: a bar chart of support tickets by status, updated every five minutes from your helpdesk database.
- Prometheus: System metrics (CPU, memory, disk, network). For infrastructure monitoring alongside business metrics.
- JSON API plugin: Query REST APIs that return JSON. This connects Grafana to applications that do not have native database access. Example: pull the latest sales pipeline from your CRM API.
- Google Sheets: For data that still lives in spreadsheets. Not ideal, but useful during the transition to self-hosted systems.
Example: A CEO Dashboard
A single Grafana dashboard that answers the five questions a business owner asks every morning:
- How many open support tickets? A stat panel showing the count from the helpdesk database.
- What deals are closing this week? A table from the CRM API showing deals in final stage with expected close dates.
- How many active users on each service? A bar chart from Nextcloud and Mattermost user activity logs.
- Website traffic today vs. last week? A line chart from Plausible Analytics API.
- Are all servers up? A status list from Uptime Kuma API.
This dashboard refreshes every five minutes. The business owner opens one URL and sees the health of the entire operation. No logging into five different systems. No asking the team for updates.
Setting Up Grafana
Grafana deploys via Docker in five minutes. Add data sources through the web UI (connection strings, credentials, query settings). Build dashboards through the drag-and-drop editor or import community dashboards from the Grafana dashboard library. Set up alerts to notify you when metrics cross thresholds.
Grafana itself needs 256MB RAM and minimal CPU. The resource cost is negligible. The time investment is in configuring data sources and designing dashboards that answer the right questions.
VPS1 deploys Grafana and builds custom dashboards that surface the metrics that matter to your business.
More articles
How to Deploy Traefik as Your Reverse Proxy with Auto-SSL
Traefik automatically discovers your Docker containers, generates SSL certificates, and routes traffic. Here is the complete deployment guide.
How to Deploy WireGuard VPN for Secure Remote Access to Your Self-Hosted Stack
Access your self-hosted applications securely from anywhere. WireGuard is fast, simple, and built into the Linux kernel. Here is the complete setup.
How to Deploy n8n for Workflow Automation with Docker Compose
Connect your CRM to your helpdesk to your email marketing. Here is how to deploy n8n with persistent data and automatic backups.