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

197 lines
7.4 KiB
Markdown

---
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](https://cachethq.io/) |
| **GitHub** | [cachethq/cachet](https://github.com/cachethq/cachet) |
| **License** | BSD-3-Clause |
| **Langage** | PHP (Laravel) |
| **Étoiles GitHub** | 15.1k ⭐ |
| **Dernière MAJ** | 2026-06-07 |
| **Catégorie** | [[cat-monitoring|Monitoring]], Status Page, Incident Management |
## 📝 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é)
```yaml
# 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)
```bash
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
1. **Accéder à l'UI** : `http://IP:8000`
2. **Créer le compte admin** via la commande :
```bash
docker exec -it cachet php artisan cachet:user
```
3. **Configurer les composants** : Setup > Components > Add (ex: "API Production", "Frontend", "Database")
4. **Personnaliser l'apparence** : Settings > Theme (logo, couleurs, favicon)
5. **Brancher un outil de monitoring** : Uptime Kuma, Gatus, etc., via l'API REST ou les webhooks
6. **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_KEY` doit ê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
- [GitHub cachethq/cachet](https://github.com/cachethq/cachet)
- [Documentation officielle](https://docs.cachethq.io/)
- [Démo publique](https://status.cachethq.io/)
- [API Reference](https://docs.cachethq.io/docs/api/getting-started)
- [Communauté Discord](https://discord.gg/cachet)
## 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