--- 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