Aller au contenu principal

Speedtest Monitor

Projet open source de Gauthier Painteaux

Un FAI promet un débit ; Speedtest Monitor vérifie qu’il est tenu. Il mesure la connexion à intervalle régulier avec le moteur de Cloudflare, conserve tout l’historique et prévient dès que le débit ou la latence se dégradent.

  • Next.js
  • Bun
  • TypeScript
  • SQLite
Voir sur GitHub(ouvre dans un nouvel onglet)
Version
v1.23.11
Étoiles
4
Licence
MIT
Mis à jour le
Speedtest Monitor : download, upload et latence de la dernière mesure, et leur historique sur 24 heures
d’historique affiché, en 5 périodes au choix
6 h à 30 j
canaux d’alerte : webhook, ntfy, Discord, Slack, e-mail
5
entre deux mesures, réglable à chaud
1 à 1440 min

Comment fonctionne Speedtest Monitor

  1. 1

    Scheduling

    Une mesure part à l’intervalle choisi.

  2. 2

    Mesure

    Cloudflare Speed Test, en HTTP pur.

  3. 3

    Stockage

    Le résultat va dans SQLite.

  4. 4

    Push

    Le dashboard le reçoit par WebSocket.

  5. 5

    Alerte

    Les seuils sont évalués à chaque mesure.

Points forts de Speedtest Monitor

  • Dashboard en temps réel

    Chaque mesure arrive en direct par WebSocket : download, upload, latence, jitter et bufferbloat, sur 6 heures comme sur 30 jours.

  • Calibré pour le multi-gigabit

    Download, upload, latence, jitter et bufferbloat mesurés avec Cloudflare Speed Test, et réglables pour saturer les liens multi-gigabit.

  • Alertes à la dégradation

    Seuils sur le débit, la latence, le bufferbloat ou les échecs consécutifs, envoyés par webhook, ntfy, Discord, Slack ou e-mail, une seule fois par incident.

  • Comptes et SSO

    Rôles administrateur et lecteur, connexion par mot de passe ou OIDC, testé avec Authelia, Authentik et Keycloak.

En images

  • Dashboard de Speedtest Monitor : download, upload et latence, historique sur 24 heures et dernières mesures

Choix techniques de Speedtest Monitor

Next.js + serveur Bun
Le même serveur sert l’application et le WebSocket, donc un seul container et un seul port à exposer.
SQLite + Drizzle
Une base dans un fichier, sans service à côté, et des migrations versionnées appliquées au démarrage.
Cloudflare Speed Test
Une mesure en HTTP pur, sans navigateur, sur le réseau mondial de Cloudflare.
Better Auth
Sessions stockées en base et provider OIDC générique, sans réimplémenter l’authentification.

Installer Speedtest Monitor

  1. 1

    Créer un compose.yml avec l’image publiée sur ghcr.io (amd64 et arm64).

  2. 2

    Générer le secret d’authentification puis démarrer le container.

  3. 3

    Ouvrir http://localhost:3000/setup et créer le premier administrateur.

compose.yml
services:
  speedtest:
    image: ghcr.io/greite/speedtest-monitor:latest
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      AUTH_SECRET: ${AUTH_SECRET}
      TZ: Europe/Paris
    volumes:
      - speedtest-data:/data

volumes:
  speedtest-data:
Commandes
echo "AUTH_SECRET=$(openssl rand -base64 32)" > .env
docker compose up -d