Pourquoi un tableau de bord self-hosted sur votre VPS
Un VPS multi-applications sans page centrale est une infrastructure gérée à l'aveugle. Vous mémorisez chaque port (http://votre-domaine.com:3001, :8080, :9000…), vous perdez du temps à retrouver l'interface d'un service arrêté il y a trois semaines, et vous n'avez aucune vue consolidée de l'état de vos conteneurs.
Un tableau de bord self-hosted résout ça sans alourdir votre infrastructure : une page unique, accessible en HTTPS derrière votre reverse proxy, qui agrège statut, raccourcis et métriques. Vous ne cédez aucune donnée à un service tiers, et vous ne payez pas d'abonnement supplémentaire.
Cas d'usage concrets
- Page d'accueil de votre navigateur pointant vers votre propre VPS : tous vos services accessibles en un clic.
- Vue d'état en temps réel de vos conteneurs Docker sans ouvrir Portainer ou Dozzle.
- Agrégation de flux RSS et d'actualités tech (Hacker News, Reddit, GitHub releases) sur le même écran que vos services.
- Centralisation des accès pour une équipe ou une agence qui partage un VPS commun.
- Page de démarrage de votre homelab ou de votre infrastructure de développement.
- Supervision légère sans déployer une pile Grafana/Prometheus complète.
Homarr : tableau de bord complet avec interface graphique
Homarr est un tableau de bord self-hosted en Next.js avec une interface de configuration entièrement graphique — vous glissez-déposez des tuiles, configurez des intégrations Docker, Sonarr, Radarr, Jellyfin ou tout service disposant d'une API. Il tourne dans un seul conteneur Docker (image ghcr.io/homarr-labs/homarr) et persiste sa configuration sur un volume.
Prérequis : un VPS avec au moins 512 Mo de RAM disponibles après vos autres conteneurs, Docker et Docker Compose installés, et un nom de domaine ou sous-domaine pointé vers votre IP. Comptez 150 à 250 Mo de RAM au repos selon les intégrations actives.
Déployer Homarr avec Docker Compose
Créer le répertoire et le fichier Compose
Sur votre VPS, créez un répertoire dédié et un fichier
docker-compose.yml:mkdir -p /opt/homarr && cd /opt/homarrContenu du fichier
docker-compose.yml:services: homarr: image: ghcr.io/homarr-labs/homarr:latest container_name: homarr restart: unless-stopped volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./appdata:/appdata environment: - SECRET_ENCRYPTION_KEY=votre-cle-aleatoire-32-chars ports: - "7575:7575"SECRET_ENCRYPTION_KEYest obligatoire : Homarr chiffre les secrets de ses intégrations (tokens API, mots de passe) avec cette clé. Générez-en une avecopenssl rand -hex 32.Générer la clé de chiffrement
Homarr exige une clé de 64 caractères hexadécimaux :
openssl rand -hex 32Copiez la valeur dans
SECRET_ENCRYPTION_KEYdu fichier Compose. Sans cette variable, le conteneur refuse de démarrer.Démarrer le conteneur
docker compose up -dHomarr est accessible sur
http://votre-domaine.com:7575. Lors du premier accès, créez votre compte administrateur. La configuration initiale (tuiles, thème, intégrations) se fait entièrement depuis l'interface web.Configurer l'intégration Docker
Le socket Docker (
/var/run/docker.sock) est monté en lecture seule. Dans l'interface Homarr, allez dans Paramètres → Intégrations et ajoutez une intégration Docker pointant versunix:///var/run/docker.sock. Homarr affichera automatiquement l'état (running/stopped) de vos conteneurs sur les tuiles associées.Configurer Traefik comme reverse proxy
Pour exposer Homarr en HTTPS, ajoutez ces labels à votre service dans le fichier Compose :
labels: - "traefik.enable=true" - "traefik.http.routers.homarr.rule=Host(`dashboard.votre-domaine.com`)" - "traefik.http.routers.homarr.entrypoints=websecure" - "traefik.http.routers.homarr.tls.certresolver=letsencrypt" - "traefik.http.services.homarr.loadbalancer.server.port=7575"Supprimez le bloc
portssi vous exposez uniquement via Traefik. Consultez l'article Déployer avec Traefik pour la configuration complète.Alternative nginx
Si vous utilisez nginx, créez un vhost
/etc/nginx/sites-available/homarr.conf:server { listen 443 ssl; server_name dashboard.votre-domaine.com; ssl_certificate /etc/letsencrypt/live/dashboard.votre-domaine.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/dashboard.votre-domaine.com/privkey.pem; location / { proxy_pass http://127.0.0.1:7575; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }Certificat Let's Encrypt via
certbot --nginx -d dashboard.votre-domaine.com.
Glance : un binaire Go, une config YAML, zéro base de données
Glance est à l'opposé de Homarr dans le spectre de complexité. C'est un binaire Go statique : pas de Node.js, pas de base de données, pas d'interface de configuration. Tout se déclare dans un fichier glance.yml. Il consomme moins de 50 Mo de RAM au repos, ce qui en fait le choix naturel pour un VPS serré ou pour un serveur où chaque mégaoctet compte.
Licence : AGPL-3.0 (identique à Homarr). Code source sur GitHub.
Déployer Glance avec Docker
Créer le répertoire et le fichier de configuration
mkdir -p /opt/glance && cd /opt/glanceCréez un fichier
glance.ymlminimal avec un widget Hacker News et un widget Docker :server: host: 0.0.0.0 port: 8080 pages: - name: Accueil columns: - size: full widgets: - type: hacker-news title: Hacker News - size: small widgets: - type: docker-containers title: Conteneurs collapsed-by-default: falseGlance expose le port 8080 par défaut.
Lancer avec Docker Compose
Créez un fichier
docker-compose.yml:services: glance: image: glanceapp/glance:latest container_name: glance restart: unless-stopped volumes: - ./glance.yml:/app/glance.yml:ro - /var/run/docker.sock:/var/run/docker.sock:ro ports: - "8080:8080"Démarrez avec :
docker compose up -dGlance est accessible sur
http://votre-domaine.com:8080.Ajouter un widget météo
Le widget
weatherest l'un des plus simples à configurer — il ne demande qu'une localisation :- type: weather title: Météo location: Paris, France units: metric hour-format: 24hAjoutez ce bloc dans la section
widgetsde la colonne de votre choix.Configurer le reverse proxy pour Glance
Avec Traefik, ajoutez dans votre
docker-compose.yml:labels: - "traefik.enable=true" - "traefik.http.routers.glance.rule=Host(`glance.votre-domaine.com`)" - "traefik.http.routers.glance.entrypoints=websecure" - "traefik.http.routers.glance.tls.certresolver=letsencrypt" - "traefik.http.services.glance.loadbalancer.server.port=8080"Avec nginx, même structure que Homarr, en remplaçant le port par
8080.Rechargement à chaud de la configuration
Glance surveille son fichier de configuration et se recharge automatiquement quand vous le modifiez. Pas besoin de redémarrer le conteneur après chaque ajout de widget —
docker logs glance -faffichera la ligneConfig reloadedaprès quelques secondes.
Homarr vs Glance : tableau comparatif
Faites défiler le tableau
| Critère | Homarr | Glance |
|---|---|---|
| RAM au repos | 150 – 250 Mo | < 50 Mo |
| Configuration | Interface graphique drag & drop | Fichier YAML uniquement |
| Base de données | SQLite embarquée | Aucune |
| Widgets disponibles | Intégrations (Sonarr, Jellyfin, Docker…) + tuiles libres | RSS, Hacker News, météo, Docker, GitHub, calendrier… |
| Mise à jour | `docker compose pull && docker compose up -d` | `docker compose pull && docker compose up -d` |
| Licence | AGPL-3.0 | AGPL-3.0 |
| Idéal pour | Infrastructure riche, usage quotidien, partage d'équipe | VPS léger, homelabs minimalistes, consultation rapide |
Exposer en HTTPS avec un reverse proxy
Les deux outils écoutent sur HTTP en local (7575 pour Homarr, 8080 pour Glance). Exposer un tableau de bord directement sur Internet sans TLS revient à transmettre vos jetons d'intégration et vos sessions en clair.
Deux options courantes :
Traefik — l'option recommandée si vous avez déjà Traefik sur votre VPS. Les labels suffisent (exemples ci-dessus). Traefik demande et renouvelle les certificats Let's Encrypt automatiquement via ACME DNS-01 ou HTTP-01. Voir l'article Déployer avec Traefik pour la configuration du resolver letsencrypt.
nginx — l'option naturelle si votre VPS tourne déjà sous nginx. Le vhost de type proxy_pass http://127.0.0.1:<port> est identique pour les deux outils ; seul le port change.
Durcissement : limiter l'accès au tableau de bord
Un tableau de bord self-hosted expose vos services internes. Quelques précautions :
Authentification Homarr : activez l'authentification intégrée dès la première connexion. Ne laissez pas le tableau de bord ouvert sans mot de passe, même derrière un sous-domaine obscur.
Glance : ne propose pas d'authentification native. Protégez-le avec un middleware Traefik (BasicAuth ou ForwardAuth) ou via un auth_basic nginx avant de l'exposer publiquement.
Réseau Docker dédié : créez un réseau internal: true pour les services qui n'ont pas besoin d'accès extérieur, et connectez uniquement Homarr ou Glance au réseau Traefik.
Accès en lecture seule au socket Docker : les deux outils montent /var/run/docker.sock — montez-le en :ro (lecture seule) comme dans les exemples ci-dessus. Un conteneur compromis ne pourra pas lancer de nouveaux conteneurs via le socket.
Dépannage : erreurs courantes
Homarr refuse de démarrer — SECRET_ENCRYPTION_KEY missing : la variable d'environnement est absente ou vide. Générez une clé avec openssl rand -hex 32 et ajoutez-la dans le fichier Compose.
Homarr affiche « Docker integration error » : vérifiez que /var/run/docker.sock est bien monté dans le conteneur (docker inspect homarr | grep docker.sock) et que le socket est lisible par l'utilisateur qui fait tourner Docker.
Glance ne charge pas le widget docker-containers : le socket Docker n'est pas monté ou le service Docker n'est pas accessible depuis le conteneur. Ajoutez le volume /var/run/docker.sock:/var/run/docker.sock:ro dans le Compose.
Glance affiche un écran blanc : votre glance.yml contient une erreur de syntaxe YAML (indentation, tabulation au lieu d'espaces). Vérifiez avec docker logs glance — le message d'erreur indique la ligne exacte.
Erreur 502 Bad Gateway derrière nginx/Traefik : le conteneur n'est pas démarré ou le port ne correspond pas. Vérifiez avec docker ps | grep homarr ou docker ps | grep glance, et assurez-vous que le port dans votre reverse proxy correspond à celui exposé (7575 ou 8080).
Quel outil choisir ?
Choisissez Homarr si vous avez plusieurs services avec des APIs (Sonarr, Radarr, Jellyfin, Pi-hole…), si vous préférez configurer via une interface graphique, ou si vous partagez votre tableau de bord avec d'autres personnes. Comptez 200 Mo de RAM de plus dans votre budget conteneur.
Choisissez Glance si votre VPS est serré en mémoire, si vous êtes à l'aise avec YAML, ou si vous cherchez un outil qui démarre en quelques secondes et consomme le minimum. La configuration versionnée dans un fichier texte est aussi un avantage pour les environnements gérés en infrastructure-as-code.
Les deux coexistent sans problème sur le même VPS si vous avez la RAM — Homarr comme tableau de bord principal, Glance comme vue rapide côte à côte.