Avec la multiplication des applications hébergées sur mon infrastructure (stockage cloud Nextcloud, multimédia Plex/Komga, métriques Grafana, documentation), j’avais besoin d’une page d’accueil unique, claire et rapide à charger pour centraliser tous les accès. C’est l’objectif d’OnlyHub.
Pourquoi un générateur statique ?
Plutôt que d’installer un tableau de bord complexe dépendant d’une base de données ou de services tiers, j’ai choisi de concevoir ce portail avec Hugo :
- Performance brute : le site est constitué de pages HTML/CSS pré-générées, servies instantanément avec un temps de réponse imperceptible.
- Configuration simplifiée en YAML : chaque service, catégorie d’outils, icône et statut est déclaré dans un fichier de configuration structuré. Ajouter un nouveau conteneur ou réorganiser les liens prend moins de deux minutes.
- Ressources minimales : l’hébergement consomme moins de 15 Mo de mémoire vive sur le serveur.
Chaîne de livraison continue (CI/CD)
flowchart TD
A["1. J'ajoute un nouveau service dans un fichier simple"] --> B["2. Envoi des modifications sur GitHub"]
B --> C["3. Le site se régénère automatiquement"]
C --> D["4. La nouvelle tuile apparaît immédiatement sur onlymore.net"]
Le déploiement du portail est entièrement automatisé selon les principes GitOps :
- Commit & Push : chaque modification des fichiers de contenu ou de la configuration est poussée sur le dépôt GitHub.
- GitHub Actions : un workflow automatise le build avec Hugo, minifie les fichiers statiques et construit une image de conteneur minimale basée sur Nginx Alpine.
- Déploiement continu : l’image est publiée sur le registre de conteneurs (GHCR). Le service est ensuite mis à jour en production sans aucune interruption de service (zero-downtime).
- Exposition sécurisée : le trafic passe par le reverse-proxy Traefik avec terminaison TLS et renouvellement automatique des certificats SSL Let’s Encrypt.
Accès
Le portail est en ligne à cette adresse : https://onlymore.net
