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 |
|
medium | false |
|
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
- Télécharger le binaire depuis Releases (multi-OS, ~10 Mo).
chmod +x operational && ./operational- Éditer
config.yamlpour ajouter vos services. - (Optionnel)
systemdunit 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
- Site officiel : https://operational.nicholasgasior.com/
- Dépôt GitHub : https://github.com/nicholasgasior/operational
- Documentation : https://github.com/nicholasgasior/operational/wiki
- selfh.st : https://selfh.st/apps/operational