Retour aux outils
MonitoringIntermédiaireOpen sourceAuto-hébergeable

Cachet

**La status page open source historique** : communiquez l'état de vos services à vos utilisateurs av

MAJ 2026-06-14
Cachet
Site officiel Code source

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.

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: [email protected]
      MAIL_PASSWORD: mail-password
      MAIL_ENCRYPTION: tls
      MAIL_FROM_ADDRESS: [email protected]
    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

  1. Accéder à l'UI : http://IP:8000
  2. Créer le compte admin via la commande :
    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èreCachetGatusUptime KumaStatping-ng
Self-hosted✅✅✅✅
Monitoring intégré❌✅ (HTTP, TCP, ICMP, DNS)✅✅
Status page✅✅✅✅
Incidents✅✅Basique✅
Abonnés email✅✅✅✅
LangagePHPGoJSGo
UI traditionnelle✅ (Laravel)ModerneModerneDaté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