Guide de déploiement

Héberger Glance sur un VPS : votre tableau de bord de démarrage

Déployer sur un VPS Cloud →

Tutoriel

Héberger Glance sur un VPS : votre tableau de bord de démarrage

Sécurité & Monitoring7 min de lecture10 étapes

Gérer plusieurs services sur un VPS sans vue d'ensemble, c'est naviguer à l'aveugle. Glance règle ce problème : un tableau de bord self-hosted léger qui réunit vos actualités tech (Hacker News, RSS), les métriques en direct de votre serveur et l'état de vos conteneurs Docker sur une seule page accessible depuis le navigateur. Un seul binaire Go, zéro base de données, zéro Redis — il démarre en moins d'une seconde, idle sous 25 Mo de RAM, et se configure entièrement via un fichier YAML. Ce guide couvre l'installation complète, la configuration avancée des widgets, la sécurité du socket Docker, les comparaisons avec les alternatives et le dépannage des erreurs courantes.

Sommaire· Pourquoi Glance convient parfaitement à un VPS1/16
  1. 01Pourquoi Glance convient parfaitement à un VPS
  2. 02Ce que vous obtenez par défaut
  3. 03Glance vs alternatives : Heimdall, Homepage, Homarr
  4. 04Comparaison des tableaux de bord self-hosted
  5. 05Prérequis
  6. 06Ce qu'il vous faut avant de commencer
  7. 07Déployer Glance sur votre VPS ServOrbit
  8. 08Installation pas à pas
  9. 09Configuration YAML avancée : widgets, thèmes et mise en page
  10. 10Options de configuration avancée
  11. 11Sécurité : le docker.sock en lecture seule
  12. 12Risques et mitigations
  13. 13Dépannage : erreurs courantes
  14. 14Problèmes fréquents et solutions
  15. 15Cas d'usage réels pour une agence web
  16. 16Comment structurer Glance pour une agence

Pourquoi Glance convient parfaitement à un VPS

Ce que vous obtenez par défaut

  • Widgets intégrés : flux RSS, Hacker News, Reddit, météo, bookmarks, horloge monde
  • Métriques serveur en direct : CPU, RAM, disque, charge système
  • État des conteneurs Docker (running / stopped / paused)
  • Thèmes clair/sombre et couleurs personnalisables via YAML
  • Aucune dépendance externe : un seul binaire statique Go (~15 Mo)
  • Rechargement à chaud de la configuration sans redémarrage

Glance vs alternatives : Heimdall, Homepage, Homarr

Comparaison des tableaux de bord self-hosted

Faites défiler le tableau

OutilLangageRAM idleConfigDocker metricsWidgets RSS/news
**Glance**Go< 25 MoYAML purOui (lecture seule)Oui (natif)
HomepageNode/React~120 MoYAMLOuiPartiel
HomarrNode/React~150 MoGUI + JSONOuiVia intégration
HeimdallPHP/Laravel~200 MoGUI MySQLNon natifNon

Glance s'impose quand la légèreté et la vitesse comptent plus qu'une interface de configuration graphique. Pour une équipe non-technique qui préfère cliquer plutôt qu'éditer du YAML, Homarr ou Heimdall sont des alternatives valables.

Prérequis

Ce qu'il vous faut avant de commencer

  • Un VPS ServOrbit sous Ubuntu 22.04 / Debian 12 (≥ 1 vCPU, 512 Mo RAM suffisent)
  • docker et docker compose installés (Docker Engine 24+, Compose v2)
  • Accès SSH root ou sudo
  • Un sous-domaine pointé sur votre VPS (ex. glance.mondomaine.tld) — optionnel mais recommandé pour HTTPS

Déployer Glance sur votre VPS ServOrbit

Installation pas à pas

  1. Créer le répertoire de travail

    Connectez-vous en SSH à votre VPS et créez le dossier qui accueillera la configuration Glance :

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

  2. Écrire le fichier `docker-compose.yml`

    Créez le fichier suivant. Le montage en lecture seule du socket Docker est impératif (voir section Sécurité plus bas) :

    services:
      glance:
        image: glanceapp/glance:latest
        restart: unless-stopped
        ports:
          - "8080:8080"
        volumes:
          - ./glance.yml:/app/glance.yml:ro
          - /var/run/docker.sock:/var/run/docker.sock:ro
          - /proc:/proc:ro
        environment:
          - TZ=Africa/Casablanca

    Remplacez Africa/Casablanca par votre fuseau horaire (TZ s'applique aux horloges et aux timestamps RSS).

  3. Créer la configuration de base `glance.yml`

    Ce fichier YAML définit vos pages, colonnes et widgets :

    server:
      port: 8080
    
    pages:
      - name: Accueil
        columns:
          - size: small
            widgets:
              - type: clock
                hour-format: 24h
              - type: resource-usage
          - size: full
            widgets:
              - type: hacker-news
              - type: rss
                feeds:
                  - url: https://blog.servOrbit.com/rss
                    title: ServOrbit Blog
          - size: small
            widgets:
              - type: docker-containers
  4. Démarrer le conteneur

    docker compose up -d

    Vérifiez que le conteneur tourne : docker compose ps — le statut doit afficher Up.

  5. Ouvrir le pare-feu (si UFW activé)

    ufw allow 8080/tcp

    Ouvrez http://<IP-VPS>:8080 dans votre navigateur pour confirmer que Glance répond.

  6. Configurer un reverse proxy nginx avec HTTPS

    Pour servir Glance sur https://glance.mondomaine.tld, créez un vhost nginx :

    server {
        listen 443 ssl http2;
        server_name glance.mondomaine.tld;
        ssl_certificate     /etc/letsencrypt/live/glance.mondomaine.tld/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/glance.mondomaine.tld/privkey.pem;
    
        location / {
            proxy_pass http://127.0.0.1:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

    Obtenez le certificat via Certbot : certbot --nginx -d glance.mondomaine.tld.

  7. Activer l'authentification HTTP basique (recommandé)

    Glance n'a pas d'auth intégrée. Protégez l'accès via nginx :

    htpasswd -c /etc/nginx/.htpasswd admin

    Ajoutez dans le bloc location / du vhost :

    auth_basic "Glance";
    auth_basic_user_file /etc/nginx/.htpasswd;

    Rechargez nginx : systemctl reload nginx.

  8. Vérifier les métriques système

    Le widget resource-usage lit /proc — le montage :ro dans docker-compose.yml est donc obligatoire. Si les métriques n'apparaissent pas, vérifiez : docker compose logs glance | grep -i proc.

  9. Recharger la config sans redémarrage

    Toute modification de glance.yml est prise en compte en envoyant le signal SIGHUP au conteneur :

    docker kill --signal=SIGHUP glance_glance_1

    Alternativement : docker compose restart glance (entraîne ~1 s d'indisponibilité).

  10. Activer les mises à jour automatiques (optionnel)

    Déployez [Watchtower](https://containrrr.dev/watchtower/) pour maintenir l'image Glance à jour automatiquement, ou gérez-le manuellement :

    docker compose pull && docker compose up -d

Configuration YAML avancée : widgets, thèmes et mise en page

La puissance de Glance réside dans son fichier YAML. Voici les personnalisations les plus utiles.

Options de configuration avancée

  • Thème personnalisé — ajoutez sous server: : theme: { background-color: "240 21 15", primary-color: "217 92 83" } (format HSL sans hsl())
  • Pages multiples — ajoutez autant de blocs - name: sous pages: qu'il y a de contextes (ex. "Dev", "Clients", "Perso")
  • Widget bookmarks — type: bookmarks avec des groupes de liens pour centraliser vos accès rapides aux outils internes
  • Widget monitor — type: monitor avec une liste d'URL : Glance effectue des checks HTTP et affiche latence + statut en temps réel
  • Widget GitHub releases — type: releases avec une liste de repos : idéal pour suivre les nouvelles versions de vos outils
  • Intervalle de rafraîchissement — chaque widget accepte cache: 1h (ou 30m, 5m) pour contrôler la fréquence de polling

Sécurité : le docker.sock en lecture seule

Monter /var/run/docker.sock dans un conteneur donne à ce conteneur un contrôle potentiellement total sur le daemon Docker de l'hôte — équivalent root. C'est le vecteur d'escalade de privilèges le plus courant dans les environnements Docker.

Risques et mitigations

  • Risque : un conteneur compromis avec accès :rw au socket peut lancer des conteneurs root, monter /, exfiltrer des secrets
  • Mitigation 1 — Montage en lecture seule : le :ro dans docker-compose.yml bloque toute écriture ; Glance n'a besoin que de lire l'état des conteneurs
  • Mitigation 2 — Proxy socket : déployez [Docker Socket Proxy](https://github.com/Tecnativa/docker-socket-proxy) pour n'exposer que les endpoints GET /containers et GET /version
  • Mitigation 3 — Network isolation : placez Glance dans un réseau Docker dédié, isolé de vos services applicatifs
  • Vérification : docker inspect glance_glance_1 | grep -A5 Mounts — la ligne Mode doit afficher ro, jamais rw

Si vous n'avez pas besoin des métriques Docker, supprimez simplement le montage /var/run/docker.sock du docker-compose.yml et retirez le widget docker-containers de glance.yml. Glance fonctionne parfaitement sans accès au daemon Docker.

Dépannage : erreurs courantes

Problèmes fréquents et solutions

  • Port 8080 déjà utilisé — ss -tlnp | grep 8080 pour identifier le process occupant le port. Changez le port hôte dans docker-compose.yml : "8181:8080" (le port conteneur reste 8080 côté Glance).
  • Widget non chargé / spinner permanent — vérifiez la connectivité réseau sortante du conteneur : docker exec glance_glance_1 curl -s https://news.ycombinator.com. Si timeout, votre VPS est derrière un pare-feu sortant restrictif — ouvrez les ports 80/443 en sortie via ufw.
  • Docker socket refusé (permission denied) — le conteneur tourne sous un UID non-root sans accès au groupe docker. Solution : ajoutez group_add: ["docker"] ou montez le socket avec les permissions correctes. Vérifiez : ls -la /var/run/docker.sock (groupe docker, mode 660).
  • Métriques /proc absentes — le montage /proc:/proc:ro est manquant dans docker-compose.yml. Sans lui, resource-usage affiche des valeurs nulles ou un message d'erreur. Ajoutez le volume et relancez : docker compose up -d.

Cas d'usage réels pour une agence web

Une agence qui gère N projets clients sur des VPS distincts peut centraliser la supervision dans Glance avec une page par client ou par environnement.

Comment structurer Glance pour une agence

  • Une page par client : chaque page pages[n] correspond à un projet — widget monitor avec les URLs critiques (front, API, backoffice), widget docker-containers si les services tournent localement
  • Page "Infra globale" : un widget resource-usage par VPS n'est pas supporté nativement, mais le widget monitor peut checker des endpoints d'healthcheck exposés sur chaque machine (ex. /healthz)
  • Flux RSS d'alerte : ajoutez le flux RSS de votre outil de monitoring (UptimeKuma, Gatus) pour remonter les incidents sans quitter Glance
  • Widget GitHub releases : suivez les releases des CMS/frameworks de vos clients pour anticiper les mises à jour critiques
  • Accès multi-équipe : un Glance par environnement (staging / prod), chacun protégé par une auth HTTP distincte via nginx, partageable par lien avec l'équipe concernée

La documentation officielle Glance (github.com/glanceapp/glance) liste tous les widgets disponibles et leurs options. La section glance.yml reference est la référence la plus à jour — les options évoluent à chaque release mineure.

Vos services VPS en un coup d'œil

Déployez Glance sur un VPS ServOrbit — tableau de bord self-hosted, sans base de données, actualités tech et stats serveur en temps réel depuis le navigateur.

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