[{"data":1,"prerenderedAt":148},["ShallowReactive",2],{"seo-verification":3,"blog-heberger-homepage-ma-fr":6,"promo-bar-likely":147},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-heberger-homepage-ma-fr",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":30,"intro":33,"sections":34,"ctaTitle":87,"ctaBody":88,"ctaButton":89,"ctaUrl":90,"relatedPosts":91},92,"heberger-homepage",{"fr":10,"en":12,"ar":13,"es":14},"hosting-homepage-on-your-own-vps","استضافة-homepage-على-خادم-vps-الخاص-بك","alojar-homepage-en-un-vps","Héberger Homepage sur votre propre VPS","Déployez Homepage, le dashboard open-source, sur VPS avec Docker. Guide complet : YAML, widgets, reverse proxy Caddy\u002FTraefik, SSL, sécurité et sauvegarde.",8,3,false,"2026-03-20T00:00:00+00:00","2026-11-08T01:13:13+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-homepage-poster.svg","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.",[35,39,50,53,72,75,78,81,84],{"type":36,"title":37,"body":38},"h2","Pourquoi héberger Homepage sur votre VPS","Homepage (gethomepage.dev) est un dashboard é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.\n\nC'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.",{"type":40,"title":41,"items":42},"ul","Les bénéfices concrets d'un Homepage auto-hébergé",[43,44,45,46,47,48,49],"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 légère, adaptée à 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.","Configuration déclarative : une modification des YAML se vérifie en rechargeant la page, et un `docker compose restart homepage` suffit si elle n'apparaît pas.",{"type":36,"title":51,"body":52},"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 :\n\n- **Docker** et **Docker Compose v2** installés (vérifiez avec `docker compose version`).\n- Un **nom de domaine ou sous-domaine** pointant vers l'IP publique du VPS, par exemple `home.votredomaine.com`.\n- Un **reverse proxy** — Caddy ou Traefik — pour gérer le HTTPS et le certificat Let's Encrypt.\n- Le socket Docker `\u002Fvar\u002Frun\u002Fdocker.sock` monté en lecture seule si vous souhaitez utiliser les widgets Docker et la découverte automatique — ou, plus sûr, un proxy de socket (voir la section sécurité).\n\nSi vous partez d'un VPS vierge, installez Docker selon la documentation officielle, puis activez le démarrage automatique avec `systemctl enable --now docker`.",{"type":54,"title":55,"steps":56},"steps","Déployer Homepage avec Docker en 5 étapes",[57,60,63,66,69],{"title":58,"body":59},"Préparer l'arborescence","Connectez-vous en SSH à votre VPS et créez les dossiers :\n\n```bash\nmkdir -p ~\u002Fhomepage\u002Fconfig\ncd ~\u002Fhomepage\n```\n\nLes fichiers `services.yaml`, `widgets.yaml`, `settings.yaml` et `bookmarks.yaml` seront générés automatiquement au premier démarrage dans ce dossier `config\u002F`. Vous pouvez aussi les créer vides à l'avance pour contrôler leur contenu dès le lancement.",{"title":61,"body":62},"Écrire le docker-compose.yml","Créez `~\u002Fhomepage\u002Fdocker-compose.yml` avec le contenu suivant :\n\n```bash\nservices:\n  homepage:\n    image: ghcr.io\u002Fgethomepage\u002Fhomepage:latest\n    container_name: homepage\n    restart: unless-stopped\n    ports:\n      - 127.0.0.1:3000:3000\n    volumes:\n      - .\u002Fconfig:\u002Fapp\u002Fconfig\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock:ro\n    environment:\n      - HOMEPAGE_ALLOWED_HOSTS=home.votredomaine.com\n```\n\nNotez 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.",{"title":64,"body":65},"Lancer le conteneur","Démarrez Homepage en arrière-plan et vérifiez les logs :\n\n```bash\ndocker compose up -d\ndocker compose logs -f\n```\n\nHomepage écoute sur le port `3000`. Testez localement avant d'ouvrir le reverse proxy :\n\n```bash\ncurl http:\u002F\u002Flocalhost:3000\n```\n\nSi la réponse est un document HTML, le conteneur fonctionne.",{"title":67,"body":68},"Brancher le reverse proxy et le SSL","**Avec Caddy** — ajoutez dans votre `Caddyfile` :\n\n```bash\nhome.votredomaine.com {\n    reverse_proxy localhost:3000\n}\n```\n\nCaddy génère et renouvelle automatiquement le certificat Let's Encrypt. Rechargez : `systemctl reload caddy`.\n\n**Avec Traefik** — ajoutez les labels au service dans `docker-compose.yml` :\n\n```bash\nlabels:\n  - traefik.enable=true\n  - traefik.http.routers.homepage.rule=Host(`home.votredomaine.com`)\n  - traefik.http.routers.homepage.entrypoints=websecure\n  - traefik.http.routers.homepage.tls.certresolver=letsencrypt\n```\n\nDans les deux cas, vérifiez que votre DNS pointe bien l'IP du VPS avant de tenter le challenge ACME.",{"title":70,"body":71},"Personnaliser les services et les widgets","Éditez `config\u002Fservices.yaml` pour déclarer vos applications en groupes :\n\n```bash\n- Outils:\n    - Portainer:\n        href: https:\u002F\u002Fportainer.votredomaine.com\n        description: Gestion des conteneurs\n        icon: portainer.png\n```\n\nAjoutez des widgets de ressources système dans `config\u002Fwidgets.yaml` :\n\n```bash\n- resources:\n    cpu: true\n    memory: true\n    disk: \u002F\n```\n\nRechargez la page dans le navigateur après chaque modification ; si un changement n'apparaît pas (notamment dans `settings.yaml`), redémarrez le conteneur avec `docker compose restart homepage`.",{"type":36,"title":73,"body":74},"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.\n\nPour activer un widget, ajoutez un bloc `widget` sous la déclaration du service dans `services.yaml`. Exemple avec **Portainer** :\n\n```bash\n- Portainer:\n    href: https:\u002F\u002Fportainer.votredomaine.com\n    widget:\n      type: portainer\n      url: https:\u002F\u002Fportainer.votredomaine.com\n      env: 1\n      key: {{HOMEPAGE_VAR_PORTAINER_KEY}}\n```\n\nLes 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. Passez-les au conteneur par des variables d'environnement préfixées `HOMEPAGE_VAR_`, par exemple depuis un fichier `.env` chargé par `env_file: .env` dans le `docker-compose.yml`, puis référencez-les avec la notation `{{HOMEPAGE_VAR_PORTAINER_KEY}}` dans le YAML : Homepage remplace chaque `{{HOMEPAGE_VAR_…}}` par la valeur de la variable.\n\nAutres widgets très utilisés : **Proxmox** (CPU, RAM, stockage du cluster), **Pi-hole** (requêtes bloquées, clients actifs), **Sonarr \u002F 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.",{"type":76,"body":77},"tip","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 l'instance Docker déclarée dans `config\u002Fdocker.yaml` 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.",{"type":36,"title":79,"body":80},"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.\n\n**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 :\n\n```bash\nhome.votredomaine.com {\n    @allowed remote_ip 203.0.113.42\n    handle @allowed {\n        reverse_proxy localhost:3000\n    }\n    respond 403\n}\n```\n\nSi 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. Depuis la v2.0, Homepage propose aussi sa propre porte d'authentification, par mot de passe ou OIDC (`HOMEPAGE_AUTH_ENABLED=true`).\n\n**Ne pas confier le socket Docker brut.** Le `:ro` du montage `\u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock:ro` ne protège que le fichier : l'API Docker reste entièrement accessible à travers lui, et un conteneur compromis peut créer de nouveaux conteneurs avec des volumes arbitraires sur l'hôte. La documentation de Homepage recommande un proxy de socket (`docker-socket-proxy`) qui n'autorise que la lecture : `CONTAINERS=1` et `POST=0`, port lié à `127.0.0.1`, puis `host: dockerproxy` et `port: 2375` dans `config\u002Fdocker.yaml`.\n\n**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 par une tâche cron. **Watchtower**, longtemps conseillé pour cela, n'est plus maintenu : son dépôt GitHub est archivé.",{"type":36,"title":82,"body":83},"Sauvegarder et restaurer votre configuration","Toute la configuration de Homepage vit dans le dossier `config\u002F` : c'est le seul répertoire à sauvegarder. Aucune base de données, aucun état persistant hors de ces fichiers YAML.\n\n**Versionner dans Git.** La méthode la plus fiable est d'initialiser un dépôt Git dans `~\u002Fhomepage\u002Fconfig\u002F` 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.\n\n**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 :\n\n```bash\nrestic -r s3:s3.example.com\u002Fmon-bucket\u002Fhomepage backup ~\u002Fhomepage\u002Fconfig\n```\n\n**Restauration.** En cas de perte du VPS, recréez le conteneur, restaurez le dossier `config\u002F` 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.",{"type":36,"title":85,"body":86},"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 volume de configuration persistant.\n\nLe template ne pose pas de reverse proxy : déclarez votre sous-domaine, branchez Caddy ou Traefik comme décrit plus haut pour le HTTPS, et restreignez `HOMEPAGE_ALLOWED_HOSTS` à ce sous-domaine, la recette le livrant ouvert à tous les hôtes (`*`). Il vous reste ensuite à personnaliser les fichiers YAML dans `config\u002F`.\n\nRetrouvez 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.","Déployer sur un VPS Cloud","\u002Fapplications\u002Fmonitoring\u002Fhomepage",[92,111,129],{"id":93,"slug":94,"slugs":95,"title":99,"excerpt":100,"readTime":101,"views":102,"isPinned":19,"noindex":19,"publishedAt":103,"updatedAt":104,"category":105,"categories":106,"featuredImage":30,"bgImage":31,"posterImage":108,"relatedSolution":109},71,"heberger-nextcloud",{"fr":94,"en":96,"ar":97,"es":98},"hosting-nextcloud-on-your-own-vps","استضافة-nextcloud-على-خادمك-الـvps-الخاص","alojar-nextcloud-en-su-propio-vps","Héberger Nextcloud sur VPS : guide NC 35, PHP 8.3 et MariaDB 11","Hébergez Nextcloud sur VPS : Docker Compose, Redis, sauvegarde MariaDB, envois de plus de 40 Go derrière Cloudflare et alternative à Office 2021.",20,1,"2026-04-10T00:00:00+00:00","2026-11-08T16:32:50+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[107],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-nextcloud-poster.svg",{"categorySlug":25,"appSlug":110},"nextcloud",{"id":112,"slug":113,"slugs":114,"title":118,"excerpt":119,"readTime":120,"views":102,"isPinned":19,"noindex":19,"publishedAt":121,"updatedAt":122,"category":123,"categories":124,"featuredImage":30,"bgImage":31,"posterImage":126,"relatedSolution":127},72,"heberger-ghost",{"fr":113,"en":115,"ar":116,"es":117},"hosting-ghost-on-your-own-vps","استضافة-ghost-على-خادمك-الـvps-الخاص","alojar-ghost-en-un-vps","Héberger Ghost sur VPS : guide complet 2026","Déployez Ghost v6 sur votre VPS avec Caddy, MySQL, Ghost CLI et Stripe Tax : installation, reverse proxy TLS, mise à jour et dépannage des erreurs fréquentes.",10,"2026-04-09T00:00:00+00:00","2026-11-04T16:30:25+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[125],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-ghost-poster.svg",{"categorySlug":25,"appSlug":128},"ghost",{"id":130,"slug":131,"slugs":132,"title":136,"excerpt":137,"readTime":23,"views":138,"isPinned":19,"noindex":19,"publishedAt":139,"updatedAt":140,"category":141,"categories":142,"featuredImage":30,"bgImage":31,"posterImage":144,"relatedSolution":145},73,"heberger-wordpress",{"fr":131,"en":133,"ar":134,"es":135},"host-wordpress-on-your-own-vps","استضافة-wordpress-على-خادم-vps-الخاص-بك","alojar-wordpress-en-un-vps","Héberger WordPress sur votre propre VPS","Hébergez WordPress sur votre VPS pour des performances et un contrôle maximaux : Docker, MariaDB, cache, reverse proxy et SSL.",0,"2026-04-08T00:00:00+00:00","2026-11-09T20:55:18+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[143],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-wordpress-poster.svg",{"categorySlug":25,"appSlug":146},"wordpress",true,1794270720635]