Files
wiki/Catalogue-Self-Hosted/apps/app-self-hosted-metrics.md
T
2026-06-09 18:40:21 +02:00

5.8 KiB


title: Self-Hosted Metrics created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, development, analytics, metrics, web, privacy] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=Development, https://github.com/pbeck/self-hosted-metrics]

💻 Self-Hosted Metrics

Métriques web minimalistes et respectueuses — alternative légère à Plausible et Umami, pensée pour les sites à petit trafic et les utilisateurs qui veulent juste des compteurs de visites sans dashboard compliqué.

📋 Informations Générales

Champ Valeur
Site web self-hosted-metrics.pbeck.com
GitHub pbeck/self-hosted-metrics
License MIT
Langage Node.js (Express) + SQLite
Étoiles GitHub 161
Catégorie Development, Web Analytics
Référence selfh.st Development

📝 Description

Self-Hosted Metrics est un tracker web analytics minimaliste conçu comme une alternative ultra-légère à Plausible et Umami. Le projet se positionne sur la simplicité radicale : un script de tracking de 1 Ko, zéro cookie, zéro tracking personnel, et un dashboard qui affiche le strict minimum (visiteurs uniques, pageviews, top pages, sources de trafic).

Là où Plausible mise sur le SaaS payant (12 $/mois pour le cloud, 69 $/an pour le self-host officiel) et Umami sur une stack React/Node/PostgreSQL/MySQL, Self-Hosted Metrics fait le choix inverse : Node.js + SQLite, interface volontairement dépouillée, un seul binaire à lancer. C'est un outil pour les blogs personnels, les portfolios, les petits SaaS qui veulent savoir si leur site reçoit du trafic sans se prendre la tête.

⚠️ Notes importantes : le projet a relativement peu d'étoiles (161) et reste niche dans l'écosystème analytics self-hosted. Pour des besoins sérieux (filtres avancés, événements custom, funnels, e-commerce tracking), Plausible ou Umami restent préférables et plus éprouvés. Ce projet est pertinent pour les personnels sites, blogs Jekyll/Hugo, vitrines où 3 chiffres sur un dashboard suffisent.

Fonctionnalités : tracking JS léger (1 Ko), SQLite, dashboard temps réel minimaliste, pas de cookie, RGPD-friendly par défaut, export CSV des données brutes, multi-sites via data-site-id, pas de JavaScript framework côté front (HTML pur).

🚀 Installation

Via Docker (recommandé)

# docker-compose.yml
version: '3.8'
services:
  shm:
    image: ghcr.io/pbeck/self-hosted-metrics:latest
    container_name: shm
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      PORT: "3000"
      DB_PATH: "/data/metrics.db"
      ADMIN_USER: "admin"
      ADMIN_PASS_HASH: "bcrypt-hash-ici"
    volumes:
      - shm_data:/data
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.shm.rule=Host(`metrics.example.com`)"
      - "traefik.http.routers.shm.entrypoints=websecure"
      - "traefik.http.routers.shm.tls.certresolver=letsencrypt"

volumes:
  shm_data:

Installation manuelle

git clone https://github.com/pbeck/self-hosted-metrics.git
cd self-hosted-metrics
npm install
npm run build
ADMIN_USER=admin ADMIN_PASS=motdepasse npm start

⚙️ Configuration

  1. Compte admin : définir ADMIN_USER et ADMIN_PASS_HASH (bcrypt) avant le premier lancement.
  2. Créer un site : dashboard > Add Site > copier le site-id généré.
  3. Script de tracking : <script async defer src="https://metrics.example.com/tracker.js" data-site-id="votre-site-id"></script>.
  4. Reverse proxy : laisser passer X-Forwarded-For (Traefik) pour des IPs sources correctes derrière le proxy.
  5. Filtrage de bots : par défaut, le tracker exclut les user-agents connus (Googlebot, etc.) — vérifiable dans la config.

🔗 Alternatives

  • Plausible — Référence privacy-first, open source, interface élégante, mais 12 $/mois en cloud.
  • Umami — Très populaire, multi-sites, événements custom, plus complet mais plus lourd (Node + MySQL/PostgreSQL).
  • Ackee — Alternative légère, Node + MongoDB, dashboard moderne.
  • GoatCounter — Ultra-léger, Go, gratuit en SaaS, self-host possible.
  • Matomo — L'alternative « complète » à Google Analytics, mais stack LAMP lourd.

🔒 Sécurité

  • 🔐 HTTPS obligatoire via app-traefik : le script de tracking et l'API collectent des IPs en clair sinon.
  • 🔒 Admin password hashé : jamais de mot de passe en clair dans l'env, utiliser bcrypt (htpasswd -bnBC 12 "" monpass | tr -d ':\n').
  • 🛡️ IP anonymisation : configurer la rétention d'IPs à 0 (ou ne pas les stocker du tout) pour RGPD maximal.
  • 🛡️ Filtrage par IP : si le dashboard est exposé, ajouter une allowlist (Traefik IPAllowList) ou un BasicAuth devant.
  • 🛡️ Backups SQLite : metrics.db contient l'historique — sauvegarder régulièrement (volume shm_data).
  • 🛡️ CSP : ajouter une Content-Security-Policy autorisant metrics.example.com sur les sites tracked.

📚 Ressources

🔗 Pages Liées