100 lines
4.5 KiB
Markdown
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]]
|