À quoi ça sert ?
Homepage est un tableau de bord qui regroupe toutes vos applications auto-hébergées sur une seule page, avec leur état et des widgets (météo, stockage, statistiques…).
Pour qui ?
Ceux qui ont plusieurs applications et oublient leurs adresses.
Bon à savoir
Homepage n’accepte que l’adresse indiquée dans HOMEPAGE_ALLOWED_HOSTS (erreur « Host validation failed » sinon). Si vous y accédez par IP:port, ajoutez-la à cette variable, séparée par une virgule.
Après l'installation
- Modifiez les fichiers du dossier config (services.yaml, widgets.yaml) pour ajouter vos applications.
Le docker-compose
Exemple derrière Traefik, avec une explication sur chaque ligne. Pour l'adapter à votre cas (Nginx Proxy Manager, port local…), utilisez le générateur.
# docker-compose.yml : Homepage
# Ce fichier décrit les « conteneurs » à lancer : chaque conteneur est une petite
# boîte isolée qui contient un programme. Lancez-le avec : docker compose up -d
services:
homepage:
# Le programme à télécharger (l'« image »), avec sa version
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
# Redémarre tout seul après une panne ou un redémarrage du serveur
restart: unless-stopped
# Réglages de l'application. Les valeurs ${...} viennent du fichier .env
environment:
HOMEPAGE_ALLOWED_HOSTS: accueil.mondomaine.fr
PUID: "1000"
PGID: "1000"
TZ: Europe/Paris
# Dossiers du serveur partagés avec le conteneur (dossier_serveur:dossier_conteneur).
# Vos données sont stockées ici : ce sont ces dossiers qu'il faut sauvegarder.
volumes:
- ./config:/app/config
# Réseau partagé avec le reverse proxy pour qu'il puisse joindre l'application
networks:
- traefik
# Indique à Traefik de publier l'application sur https://accueil.mondomaine.fr avec un certificat HTTPS
labels:
- traefik.enable=true
- traefik.http.routers.homepage.rule=Host(`accueil.mondomaine.fr`)
- traefik.http.routers.homepage.entrypoints=websecure
- traefik.http.routers.homepage.tls.certresolver=letsencrypt
- traefik.http.services.homepage.loadbalancer.server.port=3000
# Le réseau du reverse proxy existe déjà : on s'y raccroche
networks:
traefik:
external: true