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

100 lines
4.5 KiB
Markdown

---
title: Operational
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, tracking, status-page, monitoring, go, golang]
confidence: medium
contested: false
sources: [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é)
```yaml
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
- 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
## Pages Liées
- [[cat-tracking]]
- [[recettes-docker-compose]]