197 lines
7.4 KiB
Markdown
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
|