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