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

4.5 KiB

title, created, updated, type, tags, confidence, contested, sources
title created updated type tags confidence contested sources
Operational 2026-06-07 2026-06-07 app
catalogue
tracking
status-page
monitoring
go
golang
medium false
https://selfh.st/apps/operational
https://github.com/nicholasgasior/operational

Operational 📊

Une status page open source écrite en Go, légère et sans dépendance, pour publier l'état de vos services auto-hébergés.

Métadonnée Valeur
Site web https://operational.nicholasgasior.com/
GitHub https://github.com/nicholasgasior/operational
License MIT
Langage principal Go
Étoiles GitHub 17
Dernière MAJ 2026-03-12
Catégorie cat-tracking

Description

Operational est une status page minimaliste et performante, écrite en Go et embarquant sa base de données via SQLite. Le principe : on déclare une liste de services à surveiller (URL, endpoint, type de check), et l'application ping régulièrement chacun pour déterminer s'il est opérationnel, dégradé ou hors-ligne. L'interface publique affiche une belle page façon StatusPage.io / BetterUptime.

L'application supporte plusieurs types de checks : HTTP(S) avec code de retour attendu, ping TCP, et des scrapers HTML (recherche d'une chaîne dans le body). Elle expose aussi une API JSON que d'autres outils (Uptime Kuma, Grafana) peuvent interroger pour récupérer l'état agrégé.

Le binaire unique Go rend Operational particulièrement adapté aux déploiements sur des machines peu puissantes (Raspberry Pi, VPS léger) — la consommation mémoire est de l'ordre de 15-20 Mo au repos. Une image Docker multi-arch est publiée sur GitHub Container Registry.

⚠️ Le projet est mono-mainteneur (bus factor 1) et a un rythme de publication irrégulier. Pour une status page critique, préférer des alternatives plus éprouvées.

Installation

Via Docker (recommandé)

services:
  operational:
    container_name: operational
    image: ghcr.io/nicholasgasior/operational:latest
    restart: unless-stopped
    ports:
      - "8090:8090"
    volumes:
      - operational-data:/data
    environment:
      - OPERATIONAL_ADMIN_USER=admin
      - OPERATIONAL_ADMIN_PASSWORD_HASH=bcrypt-hash-ici
      - OPERATIONAL_PUBLIC_URL=https://status.example.com
      - OPERATIONAL_CHECK_INTERVAL=60

volumes:
  operational-data:

Installation manuelle

  1. Télécharger le binaire depuis Releases (multi-OS, ~10 Mo).
  2. chmod +x operational && ./operational
  3. Éditer config.yaml pour ajouter vos services.
  4. (Optionnel) systemd unit pour le lancement automatique.

Configuration

  • Définir l'administrateur initial (login/password) via variables d'environnement (le hash bcrypt est généré via une CLI dédiée).
  • Ajouter les services à surveiller depuis l'admin web : URL, type de check, code HTTP attendu, fréquence.
  • Configurer les groupes (ex : « Infrastructure », « APIs », « Sites web ») pour organiser la page publique.
  • Activer les incidents manuels (déclaration rapide « nous sommes au courant, le service X est down pour maintenance »).
  • Activer les notifications (webhook, email) — support natif Slack/Discord.

Alternatives

Open source

  • Uptime Kuma — la référence self-hosted, beaucoup plus riche (50k+)
  • Cachet — PHP, plus ancien mais très complet
  • Statping — Go aussi, plus de fonctionnalités mais plus lourd
  • Gatus — Go, orienté health-checks avec conditions avancées

Propriétaires

  • Statuspage.io (Atlassian) — référence du marché, payant
  • BetterUptime — moderne, freemium
  • Instatus — simple, payant

Sécurité

  • L'admin web doit être placé derrière un reverse proxy HTTPS (Traefik/Caddy).
  • Verrouiller l'inscription publique si elle est activée — par défaut, Operational ne permet pas l'inscription ouverte, mais vérifiez après upgrade.
  • Hash bcrypt du mot de passe admin — ne jamais stocker en clair.
  • Ne pas exposer l'API d'admin sur internet sans authentification.
  • Notifications webhook : signer les requêtes sortantes si le destinataire le supporte.

Ressources

Pages Liées