---
title: Gatus
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, monitoring, status-page, devops, go, auto-hebergement, beginner]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Monitoring, https://github.com/TwiN/gatus]
---

# 📊 Gatus

> **La status page moderne et orientée développeurs** : monitoring + status page + alerting dans un binaire Go unique. Ultra-léger, configuration-as-code, parfait pour les devs.

## 📋 Informations Générales

| Champ | Valeur |
| :--- | :--- |
| **Site web** | [gatus.io](https://gatus.io/) |
| **GitHub** | [TwiN/gatus](https://github.com/TwiN/gatus) |
| **License** | Apache-2.0 |
| **Langage** | Go |
| **Étoiles GitHub** | 11.2k ⭐ |
| **Dernière MAJ** | 2026-06-07 |
| **Catégorie** | [[cat-monitoring|Monitoring]], Status Page, Uptime |

## 📝 Description

**Gatus** est un **dashboard de santé de services** moderne, écrit en **Go** (binaire unique de ~15 Mo), qui combine **monitoring**, **status page** et **alerting** dans une seule application.

L'idée : remplacer un [[app-uptime-kuma]] + un [[app-cachet]] par **un seul outil**, plus moderne, plus simple à configurer (YAML, pas d'UI), et plus orienté vers les développeurs.

Fonctionnalités principales :
- ✅ **Monitoring multi-protocoles** : HTTP(s), TCP, ICMP (ping), DNS, WebSocket, gRPC, TLS, SSH, STARTTLS, UDP
- ✅ **Conditions par service** : valider le code HTTP, le temps de réponse, le contenu du body, le certificat SSL
- ✅ **Status page publique** avec thèmes (auto, dark, light)
- ✅ **Alertes** : Slack, Discord, Telegram, email, PagerDuty, Teams, webhook, et 20+ autres
- ✅ **Configuration as Code** : tout en YAML, versionnable dans Git
- ✅ **Historique** : graphiques de latence et d'uptime par service
- ✅ **Maintenances** : planifier des fenêtres de maintenance
- ✅ **Badges SVG** : `?up` / `?down` pour vos READMEs
- ✅ **API** pour intégration externe
- ✅ **Auto-discovery** : scanner des sous-réseaux, exposer des services K8s
- ✅ **Léger** : ~30 Mo de RAM, un seul binaire statique
- ✅ **Pas de base de données** : stockage en fichiers JSON

**Public cible** : **développeurs, DevOps, SRE, équipes qui veulent du monitoring "as code"**. Idéal pour qui aime le **GitOps**.

**Comparaison** : Gatus se positionne entre [[app-uptime-kuma]] (qui a une UI pour configurer les services) et [[app-cachet]] (qui est purement status page). Gatus combine les deux avec une approche **YAML-as-config** et un binaire **Go unique** plus léger. C'est aussi un concurrent direct de **Healthchecks** (cron monitoring) et **Better Uptime** (commercial).

## 🚀 Installation

### Option 1 : Docker Compose (recommandé)

```yaml
# docker-compose.yml
version: '3.8'
services:
  gatus:
    image: twinproduction/gatus:latest
    container_name: gatus
    restart: unless-stopped
    ports:
      - "8085:8085"  # Web UI + API
    volumes:
      - ./config:/config
      - gatus-data:/data
    environment:
      TZ: Europe/Paris
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.gatus.rule=Host(`status.example.com`)"
      - "traefik.http.routers.gatus.entrypoints=websecure"
      - "traefik.http.routers.gatus.tls.certresolver=letsencrypt"

volumes:
  gatus-data:
```

**Fichier `config/config.yaml` :**

```yaml
# Status page
title: Mon Status
description: État des services
logo: https://example.com/logo.png
theme: auto

# Services à monitorer
services:
  - name: Site Web
    url: https://example.com
    interval: 60s
    conditions:
      - "[STATUS] == 200"
      - "[RESPONSE_TIME] < 500"

  - name: API Backend
    url: https://api.example.com/health
    interval: 30s
    conditions:
      - "[STATUS] == 200"
      - "[BODY] == ok"

  - name: Base de données
    url: tcp://db.example.com:5432
    interval: 30s
    conditions:
      - "[CONNECTED] == true"

# Alertes
alerting:
  slack:
    webhook-url: "https://hooks.slack.com/services/XXX/YYY/ZZZ"
    default-alert:
      description: "Problème détecté sur {{ .Service.Name }}"
```

### Option 2 : Binaire unique (bare-metal)

```bash
wget https://github.com/TwiN/gatus/releases/download/v5.16.0/gatus-5.16.0-linux-amd64.tar.gz
tar -xzf gatus-5.16.0-linux-amd64.tar.gz
./gatus --config config.yaml
```

### Option 3 : Homebrew (macOS)

```bash
brew install gatus
```

## ⚙️ Configuration Initiale

1. **Accéder à l'UI** : `http://IP:8085`
2. **Créer le fichier de config** : `config/config.yaml` (volume monté)
3. **Définir les services** : voir exemple ci-dessus
4. **Configurer les alertes** : section `alerting` du YAML
5. **Activer l'auto-discovery** (optionnel) : scanner un sous-réseau pour trouver des services
6. **Versionner la config dans Git** : GitOps style, un PR pour ajouter un service

## 🔄 Alternatives

### Open Source

- [[app-uptime-kuma]] — Plus complet, UI en JS, monitoring plus large
- [[app-cachet]] — Status page pure, sans monitoring
- **Healthchecks** — Cron monitoring pur
- **Statping-ng** — Plus daté, fork de Statping
- **Vigil** — Microservice status page en Rust
- **Kener** — Status page moderne en Node.js

### Comparaison Gatus vs alternatives

| Critère | Gatus | Uptime Kuma | Cachet | Healthchecks |
| :--- | :--- | :--- | :--- | :--- |
| Self-hosted | ✅ | ✅ | ✅ | ✅ |
| Protocoles | 11+ | 10+ | 0 (externe) | Cron |
| Config as code | ✅ YAML | UI | UI | UI |
| Status page | ✅ | ✅ | ✅ | Basique |
| Badges SVG | ✅ | ❌ | ❌ | ❌ |
| Auto-discovery | ✅ | ❌ | ❌ | ❌ |
| RAM | ~30 Mo | ~150 Mo | ~200 Mo | ~100 Mo |
| Binaire unique | ✅ | ❌ (Node) | ❌ (PHP) | ❌ (Python) |

**Verdict** : Gatus est **le choix moderne et léger** pour les devs qui aiment le "as code". Uptime Kuma reste plus complet et plus simple d'approche pour les débutants.

### Propriétaires (ce que Gatus remplace)

- **Atlassian Statuspage** (à partir de $29/mois)
- **Better Uptime** (à partir de $20/mois)
- **Pingdom** (à partir de $10/mois)
- **UptimeRobot Pro** (à partir de $7/mois)
- **StatusCake** (à partir de $15/mois)
- **Hyperping** (à partir de $14/mois)

## 🔐 Sécurité

- **Pas d'auth par défaut** : protéger via reverse proxy avec BasicAuth ([[app-traefik]])
- **HTTPS** via [[app-traefik]] obligatoire
- **OAuth/OIDC** : via middleware Traefik forward-auth (Authelia, Authentik, etc.)
- **Secrets dans la config** : ne **jamais** commit les webhooks/tokens dans Git — utiliser un fichier `secrets.yaml` séparé
- **Rate limiting** : protéger l'API via Traefik si exposée

## 📚 Ressources

- [GitHub TwiN/gatus](https://github.com/TwiN/gatus)
- [Documentation officielle](https://github.com/TwiN/gatus/wiki)
- [Démo publique](https://status.twin.sh/)
- [Exemples de config](https://github.com/TwiN/gatus/tree/master/.examples)
- [Blog du créateur](https://twin.sh/)

## Pages Liées

- [[cat-monitoring]] — Catégorie Monitoring
- [[app-uptime-kuma]] — Monitoring d'uptime
- [[app-cachet]] — Status page dédiée
- [[app-traefik]] — Reverse proxy HTTPS
- [[observabilite]] — Vue d'ensemble observabilité
- [[checklist-monitoring-minimal]] — Checklist
