Tutoriel

Héberger Homepage sur votre propre VPS

Self-hosting7 min de lecture5 étapes

Homepage est un tableau de bord auto-hébergé qui centralise tous vos services, widgets et liens favoris sur une page unique. Le déployer sur votre propre VPS vous donne une page d'accueil entièrement personnalisable, accessible depuis n'importe quel navigateur, sans dépendre d'un service tiers. Ce guide couvre l'installation complète avec Docker, la configuration avancée des widgets, la sécurisation et la sauvegarde de votre dashboard.

Sommaire· Pourquoi héberger Homepage sur votre VPS1/8
  1. 01Pourquoi héberger Homepage sur votre VPS
  2. 02Les bénéfices concrets d'un Homepage auto-hébergé
  3. 03Prérequis techniques
  4. 04Déployer Homepage avec Docker en 5 étapes
  5. 05Configurer les widgets de services
  6. 06Sécuriser l'accès à votre dashboard
  7. 07Sauvegarder et restaurer votre configuration
  8. 08Installer Homepage via le Marketplace ServOrbit

Pourquoi héberger Homepage sur votre VPS

Homepage (gethomepage.dev) est un dashboard statique écrit en Next.js, conçu pour être la page d'accueil de votre infrastructure. Contrairement aux solutions SaaS de type start page, tout reste sous votre contrôle : la configuration vit dans de simples fichiers YAML, les widgets interrogent vos propres services (Proxmox, qBittorrent, Sonarr, Pi-hole…), et aucune donnée ne transite par un cloud externe. L'héberger sur un VPS le rend accessible partout, depuis n'importe quel navigateur, la page étant quasi entièrement servie en statique.

C'est aussi le point d'entrée idéal pour piloter une stack Docker grandissante : un seul fichier services.yaml suffit pour cartographier des dizaines de conteneurs. Lorsque votre infrastructure gagne en complexité — plusieurs applications, plusieurs sous-domaines, des services sur plusieurs VPS — Homepage devient le cockpit unique depuis lequel vous vérifiez l'état de chacun en un coup d'œil, sans ouvrir cinq onglets.

Les bénéfices concrets d'un Homepage auto-hébergé

  • Configuration en YAML versionnable dans Git : vous reconstruisez votre dashboard à l'identique en quelques secondes après une réinstallation.
  • Widgets natifs pour plus de 100 services (Docker, Proxmox, Plex, Grafana, AdGuard, Pi-hole, Portainer…) avec affichage de stats en temps réel.
  • Détection automatique des conteneurs Docker via les labels, sans saisie manuelle des URLs.
  • Empreinte mémoire minime : moins de 128 Mo de RAM, idéal sur un petit VPS hébergeant déjà d'autres conteneurs.
  • Aucune télémétrie ni dépendance cloud : votre page d'accueil reste 100 % privée, même en cas de coupure réseau.
  • Personnalisation totale du thème, des fonds d'écran, de la barre de recherche et des groupes de services.
  • Rechargement à chaud de la configuration : aucun redémarrage du conteneur nécessaire après une modification des YAML.

Prérequis techniques

Homepage est très léger. Un VPS avec 1 vCPU et 512 Mo de RAM suffit en pratique, même en cumulant d'autres conteneurs. Comptez environ 300 Mo d'espace disque pour l'image et la configuration. Vous aurez besoin de :

- Docker et Docker Compose v2 installés (vérifiez avec docker compose version).
- Un nom de domaine ou sous-domaine pointant vers l'IP publique du VPS, par exemple home.votredomaine.com.
- Un reverse proxy — Caddy ou Traefik — pour gérer le HTTPS et le certificat Let's Encrypt.
- Le socket Docker /var/run/docker.sock monté en lecture seule si vous souhaitez utiliser les widgets Docker et la découverte automatique.

Si vous partez d'un VPS vierge, installez Docker selon la documentation officielle, puis activez le démarrage automatique avec systemctl enable --now docker.

Déployer Homepage avec Docker en 5 étapes

  1. Préparer l'arborescence

    Connectez-vous en SSH à votre VPS et créez les dossiers :

    mkdir -p ~/homepage/config
    cd ~/homepage

    Les fichiers services.yaml, widgets.yaml, settings.yaml et bookmarks.yaml seront générés automatiquement au premier démarrage dans ce dossier config/. Vous pouvez aussi les créer vides à l'avance pour contrôler leur contenu dès le lancement.

  2. Écrire le docker-compose.yml

    Créez ~/homepage/docker-compose.yml avec le contenu suivant :

    services:
      homepage:
        image: ghcr.io/gethomepage/homepage:latest
        container_name: homepage
        restart: unless-stopped
        ports:
          - 127.0.0.1:3000:3000
        volumes:
          - ./config:/app/config
          - /var/run/docker.sock:/var/run/docker.sock:ro
        environment:
          - HOMEPAGE_ALLOWED_HOSTS=home.votredomaine.com

    Notez le binding 127.0.0.1:3000:3000 : le port n'est accessible que depuis le loopback local, jamais exposé directement sur l'IP publique. Le reverse proxy est la seule porte d'entrée.

  3. Lancer le conteneur

    Démarrez Homepage en arrière-plan et vérifiez les logs :

    docker compose up -d
    docker compose logs -f

    Homepage écoute sur le port 3000. Testez localement avant d'ouvrir le reverse proxy :

    curl http://localhost:3000

    Si la réponse est un document HTML, le conteneur fonctionne.

  4. Brancher le reverse proxy et le SSL

    Avec Caddy — ajoutez dans votre Caddyfile :

    home.votredomaine.com {
        reverse_proxy localhost:3000
    }

    Caddy génère et renouvelle automatiquement le certificat Let's Encrypt. Rechargez : systemctl reload caddy.

    Avec Traefik — ajoutez les labels au service dans docker-compose.yml :

    labels:
      - traefik.enable=true
      - traefik.http.routers.homepage.rule=Host(`home.votredomaine.com`)
      - traefik.http.routers.homepage.entrypoints=websecure
      - traefik.http.routers.homepage.tls.certresolver=letsencrypt

    Dans les deux cas, vérifiez que votre DNS pointe bien l'IP du VPS avant de tenter le challenge ACME.

  5. Personnaliser les services et les widgets

    Éditez config/services.yaml pour déclarer vos applications en groupes :

    - Outils:
        - Portainer:
            href: https://portainer.votredomaine.com
            description: Gestion des conteneurs
            icon: portainer.png

    Ajoutez des widgets de ressources système dans config/widgets.yaml :

    - resources:
        cpu: true
        memory: true
        disk: /

    Homepage relit la configuration à chaud : rechargez simplement la page dans le navigateur après chaque modification, sans redémarrer le conteneur.

Configurer les widgets de services

Les widgets sont la valeur ajoutée de Homepage par rapport à une simple liste de liens. Chaque widget interroge l'API de son service cible et affiche des métriques en temps réel directement sur la carte.

Pour activer un widget, ajoutez un bloc widget sous la déclaration du service dans services.yaml. Exemple avec Portainer :

- Portainer:
    href: https://portainer.votredomaine.com
    widget:
      type: portainer
      url: https://portainer.votredomaine.com
      env: 1
      key: votre-token-api

Les clés d'API ne doivent jamais être écrites en clair dans services.yaml si ce fichier est versionné dans un dépôt public. Créez un fichier .env à côté du docker-compose.yml et référencez les secrets avec la notation {{PORTAINER_KEY}} dans le YAML — Homepage résout ces variables au démarrage.

Autres widgets très utilisés : Proxmox (CPU, RAM, stockage du cluster), Pi-hole (requêtes bloquées, clients actifs), Sonarr / Radarr (téléchargements en cours), Grafana (panels embarqués), Uptime Kuma (état de chaque moniteur). La liste complète est dans la documentation officielle de gethomepage.dev.

Activez la découverte automatique en ajoutant des labels homepage.group, homepage.name, homepage.href et homepage.icon directement sur vos autres conteneurs Docker. Homepage les détecte via le socket monté et les ajoute au dashboard sans toucher à services.yaml. Coupler cette approche à un fichier .env pour stocker vos clés d'API de widgets (jamais en clair dans le YAML versionné) vous donne un dashboard qui se met à jour seul à chaque nouveau déploiement : vous posez les labels une fois, Homepage les lit en permanence.

Sécuriser l'accès à votre dashboard

Un dashboard qui liste l'ensemble de vos services est une cible intéressante. Deux mesures de base s'imposent avant d'exposer Homepage sur Internet.

Restreindre l'accès par IP ou authentification. Si Homepage n'est destiné qu'à vous, la solution la plus simple est d'autoriser uniquement votre adresse IP dans la configuration de votre reverse proxy. Avec Caddy :

home.votredomaine.com {
    @allowed remote_ip 203.0.113.42
    handle @allowed {
        reverse_proxy localhost:3000
    }
    respond 403
}

Si vous accédez au dashboard depuis plusieurs réseaux, préférez une authentification HTTP basique ou un middleware d'authentification comme Authelia ou Authentik devant Homepage.

Ne pas exposer le socket Docker en écriture. Le montage /var/run/docker.sock:/var/run/docker.sock:ro en lecture seule est suffisant pour Homepage. N'accordez jamais l'écriture : un conteneur compromis qui dispose de l'écriture sur le socket peut créer de nouveaux conteneurs avec des volumes arbitraires sur l'hôte.

Mettre à jour l'image régulièrement. Utilisez docker compose pull && docker compose up -d pour mettre à jour Homepage dès qu'une nouvelle image est disponible. Vous pouvez automatiser ce geste avec Watchtower configuré pour surveiller uniquement le conteneur homepage.

Sauvegarder et restaurer votre configuration

Toute la configuration de Homepage vit dans le dossier config/ : c'est le seul répertoire à sauvegarder. Aucune base de données, aucun état persistant hors de ces fichiers YAML.

Versionner dans Git. La méthode la plus fiable est d'initialiser un dépôt Git dans ~/homepage/config/ et de commiter après chaque modification. Si votre configuration contient des clés d'API (même via variables), ajoutez un .gitignore pour exclure le fichier .env et versionner uniquement les YAML.

Sauvegarde incrémentale vers un stockage objet. Avec restic et un bucket S3 ou compatible (Garage, MinIO, Backblaze B2), planifiez une sauvegarde quotidienne depuis un cron :

restic -r s3:s3.example.com/mon-bucket/homepage backup ~/homepage/config

Restauration. En cas de perte du VPS, recréez le conteneur, restaurez le dossier config/ depuis la sauvegarde, et relancez docker compose up -d. Homepage est opérationnel en moins d'une minute — c'est l'un des avantages concrets d'une configuration 100 % déclarative en YAML.

Installer Homepage via le Marketplace ServOrbit

Si vous préférez ne pas configurer Docker manuellement, le Marketplace ServOrbit propose Homepage en installation guidée. En quelques clics depuis votre tableau de bord client, un VPS est provisionné avec Homepage prêt à l'emploi : image officielle, port lié en loopback et variable HOMEPAGE_ALLOWED_HOSTS préconfigurée.

Le template inclut également Caddy pré-installé avec la configuration reverse proxy minimale, de sorte que votre dashboard est accessible en HTTPS dès la fin du provisionnement. Il vous reste à déclarer votre sous-domaine et à personnaliser les fichiers YAML dans config/.

Retrouvez la fiche complète, les spécifications minimales et le bouton d'installation sur la page dédiée du Marketplace.

Installer Homepage en un clic

Déployez Homepage sur un VPS Cloud ServOrbit avec un template Docker préconfigurée. SSD, Docker prêt à l'emploi et bande passante généreuse pour servir votre page d'accueil.

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