---
title: Pulse
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, monitoring, proxmox, virtualisation, go, typescript, dashboard, homelab]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Monitoring, https://github.com/rcourtman/Pulse]
---

# 📊 Pulse

> **Le dashboard moderne et temps réel pour Proxmox VE** : surveillez votre cluster PVE et vos backups PBS dans une interface claire, avec alertes Telegram/Discord, sans déployer le moindre agent — Pulse interroge l'API Proxmox en lecture seule.

## 📋 Informations Générales

| Champ | Valeur |
| :--- | :--- |
| **Site web** | (GitHub) |
| **GitHub** | [rcourtman/Pulse](https://github.com/rcourtman/Pulse) |
| **License** | MIT |
| **Langage** | Go (backend) + TypeScript (frontend) |
| **Étoiles GitHub** | 5 855 ⭐ |
| **Dernière MAJ** | 2026-06-06 |
| **Catégorie** | [[cat-monitoring\|Monitoring]] |

## 📝 Description

**Pulse** est un **tableau de bord moderne pour Proxmox VE** qui se greffe sur l'API REST du cluster pour afficher en temps réel l'état des nœuds, des VM et des containers LXC. Pensé par et pour les utilisateurs de Proxmox, c'est la pièce qui manque à l'écosystème : **l'interface web de Proxmox est puissante mais datée**, et il n'existait pas (avant Pulse) de dashboard aussi lisible pour suivre un cluster à plusieurs nœuds, un pool de VM ou un serveur de backup PBS.

Le principe est volontairement simple : **aucun agent à installer** sur les hôtes Proxmox. Pulse se connecte à l'API via un **utilisateur en lecture seule** (Realm `pve` ou `pam`, avec le rôle `PVEAuditor`), interroge les métriques toutes les X secondes, et expose ses propres dashboards : charge CPU/RAM/disk/réseau par nœud, par VM, par container ; température CPU ; état des services Ceph, ZFS, ZED ; liste des tâches en cours ; et bien sûr l'**état des backups PBS** (dernière exécution, taille, statut, durée).

La **surveillance des PBS** (Proxmox Backup Server) est un autre point fort : Pulse sait lister les datastores, l'état des prune/gc, les snapshots, et alerter en cas d'échec ou de retard. Couplé à un check Telegram/Discord, on a un **système d'alerte léger et efficace** pour qui ne veut pas sortir la grosse artillerie Zabbix/Prometheus.

- ✅ **Monitoring Proxmox VE** complet : nœuds, VM, LXC, storage, réseau
- ✅ **Monitoring Proxmox Backup Server** (PBS) : datastores, jobs, snapshots
- ✅ **Aucune installation d'agent** : interroge l'API en lecture seule
- ✅ **Interface moderne et rapide** : SPA en TypeScript, dark mode, responsive
- ✅ **Alertes riches** : Telegram, Discord, Slack, Email, Gotify, Ntfy, webhook
- ✅ **Données temps réel** : polling configurable (5-30 s), historique conservé
- ✅ **Multi-cluster** : surveillez plusieurs clusters Proxmox depuis une seule instance
- ✅ **Authentification intégrée** (utilisateurs locaux) ou **proxy auth** (OIDC, Oauth2)
- ✅ **Mode agent optionnel** (Go) pour récupérer des métriques système non exposées par l'API
- ✅ **Métriques Prometheus** (endpoint `/metrics`) — peut alimenter Grafana
- ✅ **Docker** et binaire unique Go

**Public cible** : **tout utilisateur de Proxmox VE**, du homelabber avec 2-3 nœuds au MSP qui gère plusieurs clusters clients. Pulse est devenu l'**add-on de facto** pour qui veut un coup d'œil rapide sur son infra sans ouvrir la console Proxmox.

**Limites à connaître** : Pulse ne remplace pas un monitoring applicatif (il ne rentre pas dans la VM pour voir ce qui s'y passe) ; pour un serveur Linux, [[app-netdata]] ou [[app-glances]] reste pertinent. L'historique long terme est limité (suffisant pour des alertes, moins pour des analyses de tendance sur 1 an — brancher Grafana en complément).

## 🚀 Installation

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

```yaml
# docker-compose.yml
version: '3.8'

services:
  pulse:
    image: rcourtman/pulse:latest
    container_name: pulse
    restart: unless-stopped
    ports:
      - "8765:8765"   # Web UI + API
    environment:
      - PULSE_CONFIG=/data/config/config.json
      - TZ=Europe/Paris
    volumes:
      - pulse-data:/data
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.pulse.rule=Host(`pulse.example.com`)"
      - "traefik.http.routers.pulse.entrypoints=websecure"
      - "traefik.http.routers.pulse.tls.certresolver=letsencrypt"

volumes:
  pulse-data:
```

L'image expose l'UI sur `http://IP:8765`. La configuration se fait **au premier lancement via l'UI** : on renseigne l'URL de l'API Proxmox, le token d'API, et Pulse est opérationnel.

### Option 2 : Binaire Go natif

```bash
# Télécharger la dernière release
wget https://github.com/rcourtman/Pulse/releases/latest/download/pulse-linux-amd64.tar.gz
tar -xzf pulse-linux-amd64.tar.gz
sudo mv pulse /usr/local/bin/
sudo useradd -r -s /usr/sbin/nologin pulse
sudo mkdir -p /var/lib/pulse
sudo chown pulse:pulse /var/lib/pulse

# Lancer
pulse --config /var/lib/pulse/config.json
```

Pour un service systemd complet, créer un unit file pointant vers le binaire — idéal pour un déploiement en LXC privilégié sur le cluster lui-même.

### Création du token Proxmox

```bash
# Sur le nœud Proxmox, créer un utilisateur en lecture seule
pveum useradd pulse-monitor@pve --comment "Pulse monitoring"
pveum passwd pulse-monitor@pve
pveum aclmod / --roles PVEAuditor --user pulse-monitor@pve

# Créer un token API
pveum userTokenAdd pulse-monitor@pve pulse-token --privsep 0
# → noter le token ID et le secret (formulaire Pulse)
```

## ⚙️ Configuration Initiale

1. **Accéder à l'UI** : `https://pulse.example.com` (ou `http://IP:8765` en local)
2. **Créer le compte admin local** (premier lancement) : email + mot de passe
3. **Ajouter un endpoint Proxmox** : Settings → Endpoints → Add
   - URL : `https://pve1.example.com:8006/api2/json` (adapter le port si custom)
   - Username : `pulse-monitor@pve!pulse-token`
   - Token : `<secret généré par userTokenAdd>`
   - Cocher « Skip TLS verify » seulement si certificat self-signed
4. **Ajouter un endpoint PBS** (optionnel) : même logique sur l'API PBS (port 8007 par défaut)
5. **Configurer les alertes** : Settings → Notifications → activer Telegram/Discord (un bot Telegram se crée en 2 minutes via @BotFather)
6. **Tester** : arrêter une VM non critique et vérifier qu'un événement apparaît dans Pulse et que la notification Telegram arrive

## 🔄 Alternatives

### Open Source

- **pve-dashboard** — concurrent direct, look plus proche de l'UI Proxmox, moins riche en alerting
- **ProxUI** — autre alternative communautaire, orienté statistiques
- **Cockpit** + module **Cockpit-PVE** — monitoring système généraliste avec extension Proxmox
- [[app-netdata]] — pour les métriques système à l'intérieur des VM (complémentaire)
- [[app-prometheus]] + `pve-exporter` — stack plus complexe, plus flexible
- **Grafana + InfluxDB + Telegraf** — pipeline complet, demande plus d'huile de coude
- **Homepage** / **Dashy** / **Homarr** — pages d'accueil avec widgets Proxmox (lecture partielle, pas un vrai monitoring)

### Comparaison Pulse vs alternatives Proxmox

| Critère | Pulse | pve-dashboard | Proxmox UI | Prometheus + pve-exporter |
| :--- | :--- | :--- | :--- | :--- |
| **Installation** | 2 min (Docker) | 2 min | Native | 30+ min (stack) |
| **UI moderne** | ✅ | ⚠️ | ❌ | ⚠️ (via Grafana) |
| **Alertes intégrées** | Telegram, Discord, ... | Basique | Email | ⚠️ (Alertmanager) |
| **Multi-cluster** | ✅ | ❌ | ❌ | ✅ |
| **Métriques / API** | Endpoint Prometheus | ❌ | API native | ✅ natif |
| **Historique** | Plusieurs semaines | Court | ❌ | Illimité |
| **PBS** | ✅ natif | ⚠️ partiel | ❌ | via exporter |
| **License** | MIT | MIT | AGPL-3.0 | Apache-2.0 |

**Verdict** : Pulse est aujourd'hui **le meilleur rapport signal/bruit** pour qui veut un monitoring Proxmox complet en self-hosted léger. Si on cherche des dashboards d'accueil, [[app-glances]] ou [[app-netdata]] restent utiles pour le système à l'intérieur des VM/LXC.

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

- **Proxmox Cloud** — abonnement Proxmox officiel pour monitoring centralisé
- **ManageEngine OpManager** (avec module PVE)
- **PRTG** (avec capteur SNMP/Proxmox)
- **Datadog** + intégration PVE communautaire

## 🔐 Sécurité

- **Compte API read-only** : ne **jamais** donner à Pulse un compte `root@pam` ou `PVEAdmin` ; le rôle `PVEAuditor` (lecture seule) est suffisant et limite l'impact en cas de fuite du token
- **Activer HTTPS** via [[app-traefik]] — Pulse n'embarque pas de serveur TLS
- **Stocker le token API** dans le fichier de configuration avec les permissions `0600` ; ne jamais le commiter dans un dépôt
- **Changer le mot de passe admin par défaut** et limiter l'accès (IP allowlist ou auth proxy OIDC) — l'UI Pulse expose le détail de votre infra (hostname, IP, charge)
- **Mettre à jour régulièrement** : image Docker `rcourtman/pulse:latest` suit la branche active ; épingler un tag précis (ex `:v3.2.0`) en production

## 📚 Ressources

- [GitHub rcourtman/Pulse](https://github.com/rcourtman/Pulse)
- [Documentation](https://github.com/rcourtman/Pulse/blob/main/docs/README.md)
- [Wiki Proxmox — API tokens](https://pve.proxmox.com/wiki/Proxmox_VE_API)
- [Releases](https://github.com/rcourtman/Pulse/releases)

## Pages Liées

- [[cat-monitoring]] — Catégorie Monitoring
- [[app-uptime-kuma]] — Pour l'uptime check HTTP
- [[app-netdata]] — Métriques système temps réel
- [[app-prometheus]] — Stack cloud-native
- [[app-glances]] — Monitoring terminal
- [[app-traefik]] — Reverse proxy HTTPS
- [[observabilite]] — Concepts monitoring/alerting
- [[checklist-monitoring-minimal]] — Checklist de déploiement
