7.4 KiB
title: Cachet created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, monitoring, status-page, incident, php, laravel, auto-hebergement] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Monitoring, https://github.com/cachethq/cachet]
📊 Cachet
La status page open source historique : communiquez l'état de vos services à vos utilisateurs avec élégance. Incidents, maintenances planifiées, métriques d'uptime. Écrit en PHP/Laravel.
📋 Informations Générales
| Champ | Valeur |
|---|---|
| Site web | cachethq.io |
| GitHub | cachethq/cachet |
| License | BSD-3-Clause |
| Langage | PHP (Laravel) |
| Étoiles GitHub | 15.1k ⭐ |
| Dernière MAJ | 2026-06-07 |
| Catégorie | [[cat-monitoring |
📝 Description
Cachet est une plateforme de status page open source. Elle permet d'afficher publiquement l'état de vos services (UP / DEGRADED / DOWN), de gérer les incidents, de planifier les maintenances, et de notifier les abonnés par email.
C'est l'équivalent open source de Statuspage.io (racheté par Atlassian) : une page web publique que vos clients peuvent consulter pour savoir si un service est en panne, sans avoir à ouvrir un ticket.
- ✅ Status page publique personnalisable (logo, couleurs, domaines custom)
- ✅ Composants : modéliser vos services (API, frontend, base de données, etc.)
- ✅ Incidents : ouvrir, escalader, résoudre, commenter publiquement
- ✅ Maintenances planifiées : annoncer une coupure à l'avance
- ✅ Métriques d'uptime : graphiques par composant
- ✅ Notifications email : abonnés notifiés à chaque incident
- ✅ API REST complète : intégration avec app-uptime-kuma, Nagios, etc.
- ✅ Webhooks : déclencher des actions externes
- ✅ Multi-langue : 14+ traductions
- ✅ Auth 2FA : TOTP pour les admins
- ✅ Thèmes custom : CSS et templates Blade
Public cible : entreprises, hébergeurs, SaaS, équipes IT qui veulent une status page professionnelle sans dépendre de Statuspage.io.
Comparaison : Cachet se distingue d'app-uptime-kuma (qui fait du monitoring d'uptime) en étant purement orienté communication externe : Cachet n'interroge pas vos services, il annonce leur état. Il se combine très bien avec Uptime Kuma (qui détecte les pannes) en appelant l'API de Cachet via webhook. Par rapport à Gatus (plus récent, Go), Cachet a une UI plus traditionnelle mais un écosystème de plugins plus riche historiquement.
🚀 Installation
Option 1 : Docker Compose (officiel, recommandé)
# docker-compose.yml
version: '3.8'
services:
cachet:
image: cachethq/docker:latest
container_name: cachet
restart: unless-stopped
depends_on:
- cachet-db
- cachet-redis
ports:
- "8000:8000" # Web UI
environment:
APP_KEY: "base64:votre-cle-de-32-chars-aleatoire=="
APP_URL: https://status.example.com
DB_CONNECTION: mysql
DB_HOST: cachet-db
DB_DATABASE: cachet
DB_USERNAME: cachet
DB_PASSWORD: cachet-password
CACHE_DRIVER: redis
SESSION_DRIVER: redis
REDIS_HOST: cachet-redis
MAIL_DRIVER: smtp
MAIL_HOST: smtp.example.com
MAIL_PORT: 587
MAIL_USERNAME: status@example.com
MAIL_PASSWORD: mail-password
MAIL_ENCRYPTION: tls
MAIL_FROM_ADDRESS: status@example.com
volumes:
- cachet-data:/var/www/html/storage
labels:
- "traefik.enable=true"
- "traefik.http.routers.cachet.rule=Host(`status.example.com`)"
- "traefik.http.routers.cachet.entrypoints=websecure"
- "traefik.http.routers.cachet.tls.certresolver=letsencrypt"
cachet-db:
image: mysql:8
container_name: cachet-db
restart: unless-stopped
environment:
MYSQL_DATABASE: cachet
MYSQL_USER: cachet
MYSQL_PASSWORD: cachet-password
MYSQL_ROOT_PASSWORD: root-password
volumes:
- cachet-db:/var/lib/mysql
cachet-redis:
image: redis:7-alpine
container_name: cachet-redis
restart: unless-stopped
volumes:
cachet-data:
cachet-db:
Option 2 : Installation bare-metal (Debian/Ubuntu)
git clone https://github.com/cachethq/cachet.git
cd cachet
composer install --no-dev -o
cp .env.example .env
php artisan key:generate
php artisan migrate
php artisan config:cache
⚙️ Configuration Initiale
- Accéder à l'UI :
http://IP:8000 - Créer le compte admin via la commande :
docker exec -it cachet php artisan cachet:user - Configurer les composants : Setup > Components > Add (ex: "API Production", "Frontend", "Database")
- Personnaliser l'apparence : Settings > Theme (logo, couleurs, favicon)
- Brancher un outil de monitoring : Uptime Kuma, Gatus, etc., via l'API REST ou les webhooks
- Inviter l'équipe : Users > Invite (rôles : Admin, User)
🔄 Alternatives
Open Source
- Gatus — Plus moderne, écrit en Go, plus léger
- app-uptime-kuma — Monitoring + status page intégrée
- Statping-ng — Fork actif de Statping (qui est stale)
- Statusfy — Vue.js/Nuxt, statique
- Instatus — Pas self-hosted, mais gratuit jusqu'à un certain volume
- Vigil — Microservice status page (Rust)
- Kener — Status page moderne en Node.js
Comparaison Cachet vs alternatives
| Critère | Cachet | Gatus | Uptime Kuma | Statping-ng |
|---|---|---|---|---|
| Self-hosted | ✅ | ✅ | ✅ | ✅ |
| Monitoring intégré | ❌ | ✅ (HTTP, TCP, ICMP, DNS) | ✅ | ✅ |
| Status page | ✅ | ✅ | ✅ | ✅ |
| Incidents | ✅ | ✅ | Basique | ✅ |
| Abonnés email | ✅ | ✅ | ✅ | ✅ |
| Langage | PHP | Go | JS | Go |
| UI traditionnelle | ✅ (Laravel) | Moderne | Moderne | Datée |
Verdict : Cachet reste la référence historique pour une status page dédiée, mais Gatus le rattrape avec monitoring intégré. Uptime Kuma combine les deux avec une UI plus moderne.
Propriétaires (ce que Cachet remplace)
- Atlassian Statuspage (à partir de $29/mois)
- Status.io (à partir de $79/mois)
- Instatus (gratuit jusqu'à 1000 abonnés, puis payant)
- Better Uptime Status Page (inclus avec le plan Better Uptime)
- Freshstatus (intégré à Freshservice, payant)
🔐 Sécurité
- Auth : email/password, 2FA TOTP pour admins
- HTTPS via app-traefik obligatoire (page publique + API)
- Rate limiting sur l'API pour éviter les abus
- CSRF : protection native Laravel
- Secrets :
APP_KEYdoit être aléatoire (32+ caractères) et ne jamais fuiter - Headers de sécurité : configurer CSP, HSTS, X-Frame-Options via le reverse proxy
📚 Ressources
Pages Liées
- cat-monitoring — Catégorie Monitoring
- app-uptime-kuma — Monitoring d'uptime + status page
- app-traefik — Reverse proxy HTTPS
- observabilite — Vue d'ensemble observabilité
- checklist-monitoring-minimal — Checklist