github btouchard/shm v1.0.0
First version

latest releases: v1.2.3, v1.2.2, v1.2.1...
one month ago

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:

  1. Privacy First: Collects aggregate counters, never user content.
  2. Agnostic: Send any JSON payload. The dashboard adapts automatically.
  3. Secure: Every request is signed with an Ed25519 keypair generated on the client.
  4. 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

Don't miss a new shm release

NewReleases is sending notifications on new releases.