SHM / Self-Hosted Metrics
Privacy-first, Agnostic Telemetry for Self-Hosted Software.
Collect usage stats, verify active instances, and understand your user base without spying on them.
When you distribute self-hosted software (on-premise), you fly blind. You don't know how many instances are running, which versions are active, or if your features are actually used.
SHM solves this with a lightweight, secure approach:
- Privacy First: Collects aggregate counters, never user content.
- Agnostic: Send any JSON payload. The dashboard adapts automatically.
- Secure: Every request is signed with an Ed25519 keypair generated on the client.
- Zero-Config Dashboard: Single Go binary with embedded UI. No frontend build required.
✨ Features
- 🔐 Cryptographic Identity: Instances generate a unique ID and keypair. No spoofing possible.
- 📦 Multi-App Support: Track multiple software products on a single SHM server.
- 🎨 Dynamic Dashboard: Send
{"pizzas_eaten": 10}and SHM automatically creates the KPI cards and table columns. - ⚙️ Ops vs Business Separation: Automatically distinguishes between business metrics (KPIs) and system metrics (CPU, RAM, OS).
- 🐳 Docker Native: Runs anywhere with a simple
docker-compose.
⚡ Quick Start (Server)
Docker:
docker pull ghcr.io/btouchard/shm:latest
Get the server running in 30 seconds.
1. Create a compose.yml
services:
shm:
image: ghcr.io/btouchard/shm:latest # (Or build locally)
ports:
- "8080:8080"
environment:
- DATABASE_URL=postgres://user:pass@db:5432/shm?sslmode=disable
depends_on:
- db
db:
image: postgres:15-alpine
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
POSTGRES_DB: shm
volumes:
- shm_data:/var/lib/postgresql/data
volumes:
shm_data:2. Run it
docker compose up -d