Infrastructure Dashboard

Your infra,
one grid.
No noise.

Monitor Hetzner servers and Cloudflare services in a single, drag-and-drop customisable dashboard. API keys stay in your browser — zero servers, zero accounts, zero logins.

Keys stored locally Drag & drop layout Auto-refresh
CF Web Analytics
2.4M
Requests
84K
Visitors
12 GB
Bandwidth
R2 Storage
48 GB
3 buckets active
assets22 GB
uploads18 GB
backups8 GB
Hetzner CPU
web-0123%
db-primary67%
worker-0141%
Integrates with
🟦 Hetzner Cloud
🟠 Cloudflare
Read-only APIs. Your data, your browser.
Features

Everything your ops team needs, nothing more.

Live CPU Monitoring
Real-time and historical CPU usage charts for every Hetzner server, including per-server breakdowns and configurable time ranges.
📊
Cloudflare Web Analytics
Requests, unique visitors, bandwidth, page views, threats, and cache ratio — pulled directly from the Cloudflare GraphQL API.
🗄️
R2 Storage Overview
Browse your Cloudflare R2 buckets, see storage classes, locations, and object counts across your entire account.
🧩
Drag & Drop Layout
Enter Customize mode to drag and drop widgets anywhere. Add, remove, and reorder panels to match your exact workflow.
🔒
100% Local & Private
No accounts, no cloud sync, no telemetry. API keys are stored in localStorage and never leave your device.
🔄
Auto-Refresh & Time Ranges
Data refreshes every 60 seconds automatically. Switch between 1h, 3h, 24h, and 7-day views with a single click.

Ready to go?

Add your Hetzner and Cloudflare read-only API keys and your dashboard is live in under a minute.

/Settings

API Configuration

Keys are stored in your browser's localStorage and sent only to the respective provider APIs. Nothing else.

Import & Export
Back up all API keys and dashboard layout to a local JSON file, or restore from a previous backup.

⬇ Export Configuration

Downloads all configured API keys and your current dashboard layout as a .json file. Store it somewhere safe — it contains secrets.

⚠ The exported file contains your API tokens in plain text. Treat it like a password file.

⬆ Import Configuration

Select or drag-and-drop a previously exported OpsGrid .json file. You'll see a preview before anything is applied.

📂
Click or drop a file here
Accepts opsgrid-config.json
🟦
Hetzner Cloud
Generate at: console.hetzner.cloud → Project → Security → API Tokens → Generate API Token (Read Only is sufficient)
🟠
Cloudflare
Dashboard → My Profile → API Tokens → Create Token → Read All Resources template
Dashboard → right sidebar under "Account ID"
Dashboard → select a domain → right sidebar "Zone ID". Required for Web Analytics widget.
🔍
Google Search Console
console.cloud.google.com → APIs & Services → Credentials → Create Credentials → OAuth Client ID → Web Application.
Add your OpsGrid URL (e.g. http://localhost:8080 or your hosted domain) as an Authorised JavaScript Origin.
Enable the Google Search Console API in the Library first.
Exact URL property or domain property from Search Console. Domain properties use the sc-domain: prefix.
🚀
Coolify
The base URL of your self-hosted Coolify instance (no trailing slash)
Coolify → Account Settings → API Tokens → Create New Token
/Dashboard
Initialising…
60s
Add Widgets
Hetzner Cloud
CPU Usage Chart
Time-series CPU per server
🖥️
Server List
Status, type, location
📊
CPU Meters
Live CPU bars per server
🌊
Network I/O Chart
Inbound & outbound bandwidth
Cloudflare
📈
Web Analytics Stats
Requests, visitors, bandwidth
📉
Traffic Chart
Requests & visitors over time
🗄️
R2 Buckets
Bucket list with storage class
📦
R2 Summary
Bucket count & names
🌐
Zone Overview
All zones & status
🛡️
Security Overview
Threats & firewall activity
Google Search Console
🔍
Search Performance
Clicks, impressions, CTR, position
💬
Top Queries
Top 10 search queries by clicks
📄
Top Pages
Top 10 pages by clicks
Coolify
🚀
Applications
All apps with status & domain
🖥️
Servers
Server list & health status
📦
Deployments
Recent deployment activity