Guide de déploiement

Homarr ou Glance : tableau de bord self-hosted pour VPS

Déployer sur un VPS Cloud →

Tutoriel

Homarr ou Glance : tableau de bord self-hosted pour VPS

Self-hosting8 min de lecture11 étapes

Vous gérez cinq, dix, quinze conteneurs Docker sur un VPS et vous naviguez entre les interfaces une par une — Dozzle pour les logs, Uptime Kuma pour le statut, Gitea pour le code. Un tableau de bord self-hosted règle ce problème en moins d'une heure. Deux outils se distinguent aujourd'hui : **Homarr**, riche et visuel, et **Glance**, minimaliste et léger (< 50 Mo RAM). Ce guide compare les deux, installe chacun pas à pas et vous aide à choisir.

Sommaire· Pourquoi un tableau de bord self-hosted sur votre VPS1/11
  1. 01Pourquoi un tableau de bord self-hosted sur votre VPS
  2. 02Cas d'usage concrets
  3. 03Homarr : tableau de bord complet avec interface graphique
  4. 04Déployer Homarr avec Docker Compose
  5. 05Glance : un binaire Go, une config YAML, zéro base de données
  6. 06Déployer Glance avec Docker
  7. 07Homarr vs Glance : tableau comparatif
  8. 08Exposer en HTTPS avec un reverse proxy
  9. 09Durcissement : limiter l'accès au tableau de bord
  10. 10Dépannage : erreurs courantes
  11. 11Quel outil choisir ?

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

  1. 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/homarr

    Contenu 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_KEY est obligatoire : Homarr chiffre les secrets de ses intégrations (tokens API, mots de passe) avec cette clé. Générez-en une avec openssl rand -hex 32.

  2. Générer la clé de chiffrement

    Homarr exige une clé de 64 caractères hexadécimaux :

    openssl rand -hex 32

    Copiez la valeur dans SECRET_ENCRYPTION_KEY du fichier Compose. Sans cette variable, le conteneur refuse de démarrer.

  3. Démarrer le conteneur

    docker compose up -d

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

  4. 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 vers unix:///var/run/docker.sock. Homarr affichera automatiquement l'état (running/stopped) de vos conteneurs sur les tuiles associées.

  5. 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 ports si vous exposez uniquement via Traefik. Consultez l'article Déployer avec Traefik pour la configuration complète.

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

  1. Créer le répertoire et le fichier de configuration

    mkdir -p /opt/glance && cd /opt/glance

    Créez un fichier glance.yml minimal 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: false

    Glance expose le port 8080 par défaut.

  2. 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 -d

    Glance est accessible sur http://votre-domaine.com:8080.

  3. Ajouter un widget météo

    Le widget weather est 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: 24h

    Ajoutez ce bloc dans la section widgets de la colonne de votre choix.

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

  5. 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 -f affichera la ligne Config reloaded après quelques secondes.

Homarr vs Glance : tableau comparatif

Faites défiler le tableau

CritèreHomarrGlance
RAM au repos150 – 250 Mo< 50 Mo
ConfigurationInterface graphique drag & dropFichier YAML uniquement
Base de donnéesSQLite embarquéeAucune
Widgets disponiblesIntégrations (Sonarr, Jellyfin, Docker…) + tuiles libresRSS, Hacker News, météo, Docker, GitHub, calendrier…
Mise à jour`docker compose pull && docker compose up -d``docker compose pull && docker compose up -d`
LicenceAGPL-3.0AGPL-3.0
Idéal pourInfrastructure riche, usage quotidien, partage d'équipeVPS 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.

Un VPS pour héberger votre tableau de bord

Un VPS ServOrbit avec accès root et IPv4 dédiée vous donne la liberté d'exécuter Homarr, Glance et tous vos services derrière un reverse proxy, sans restriction de ports ni de conteneurs.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou contactez notre équipe — rappel, WhatsApp ou e-mail. Support en français, anglais et arabe.

Écrire sur WhatsApps'ouvre dans un nouvel onglet