Portail de services OnlyHub

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 LR accTitle: Chaîne de livraison continue d'OnlyHub accDescr: Le contenu versionné déclenche la construction d'une image, puis Argo CD déploie OnlyHub sur K3s derrière Traefik. subgraph CI ["Intégration continue"] direction TB Source["Contenu OnlyHub
Markdown, YAML et icônes"] -->|push sur main| Actions["GitHub Actions"] Actions --> Build["Build Docker
Hugo puis Nginx Alpine"] end subgraph CD ["Livraison continue"] direction TB GHCR[("GHCR
image versionnée")] -.->|nouveau digest| Argo["Argo CD
Image Updater"] Argo -->|rolling update| Prod["OnlyHub sur K3s
derrière Traefik"] end CI -->|publication de l'image| CD

Le déploiement du portail est entièrement automatisé selon les principes GitOps :

  1. Commit & Push : chaque modification des fichiers de contenu ou de la configuration est poussée sur le dépôt GitHub.
  2. 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.
  3. 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).
  4. 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