Aller au contenu

« Trace install tas - Hugo » : différence entre les versions

De Loic Wiki
Loic (discussion | contributions)
Page créée avec « = Trace install tas - Hugo = == Objectif == Déployer un site statique simple à maintenir avec '''Hugo''', servi localement par '''Podman''' puis exposé par le reverse proxy '''Caddy'''. L'objectif est d'obtenir : * une maintenance faible * un contenu rédigé en Markdown * une publication reproductible * un rollback simple == Choix techniques retenus == * Générateur statique : '''Hugo''' * Build : conteneur `docker.io/klakegg/hugo:ext-alpine` * Service HT... »
 
Daneel (discussion | contributions)
Ajout de la trace d'installation de Hugo
 
Ligne 1 : Ligne 1 :
= Trace install tas - Hugo =
= Trace install tas - Hugo =


== Objectif ==
== Rôle ==
Déployer un site statique simple à maintenir avec '''Hugo''', servi localement par '''Podman''' puis exposé par le reverse proxy '''Caddy'''.
Site statique de documentation Hugo servi sur tas via un conteneur Nginx.


L'objectif est d'obtenir :
== Accès ==
* une maintenance faible
* Local : http://127.0.0.1:8100
* un contenu rédigé en Markdown
* Public : https://hugo.lololand.org/
* une publication reproductible
* un rollback simple


== Choix techniques retenus ==
== Ports ==
* Générateur statique : '''Hugo'''
8100 local, 443 public via domaine dédié
* Build : conteneur `docker.io/klakegg/hugo:ext-alpine`
* Service HTTP : conteneur `docker.io/library/nginx:alpine`
* Orchestration locale : '''Podman rootless''' + service utilisateur
* Port local : `8100`
* Exposition publique prévue :
** `hugo.lololand.org`
** `https://lololand.hopto.org:25700`
* Répertoire projet : `/home/loic/sites/hugo-docs`


== Arborescence ==
== Exécution / runtime ==
<pre>
Quadlet systemd user : hugo-docs.container ; conteneur hugo-docs ; unité générée : hugo-docs.service
/home/loic/sites/hugo-docs/
├── content/
├── layouts/
├── public/
├── hugo.toml
└── publish.sh
</pre>


== Fichiers importants ==
== Chemins de configuration ==
* Sources Hugo : `/home/loic/sites/hugo-docs`
* /home/loic/.config/containers/systemd/hugo-docs.container
* Site généré : `/home/loic/sites/hugo-docs/public`
* /home/loic/sites/hugo-docs/hugo.toml
* Service Podman user : `/home/loic/.config/containers/systemd/hugo-docs.container`
* /home/loic/sites/hugo-docs/publish.sh
* /etc/caddy/Caddyfile


== Principe de fonctionnement ==
== Volumes / persistance ==
Le contenu est rédigé dans le projet Hugo, puis généré en fichiers statiques dans le dossier `public/`.
* /home/loic/sites/hugo-docs/public:/usr/share/nginx/html:ro


Le service Podman ne génère pas le site lui-même :
== Dépendances ==
* '''Hugo''' produit les fichiers statiques
* network-online.target
* '''nginx''' sert ensuite le dossier `public/`
* Caddy sur le domaine `hugo.lololand.org`
* publication statique générée dans `/home/loic/sites/hugo-docs/public`


Cette séparation simplifie :
== Installation ==
* la maintenance
* Image de service : docker.io/library/nginx:alpine
* le diagnostic
* Déploiement rootless via Quadlet Podman
* le rollback
* Publication locale : 8100 -> 80 dans le conteneur
* la reproductibilité
* Service actif : hugo-docs.service
* Build du site via `publish.sh`, qui lance `docker.io/klakegg/hugo:ext-alpine` dans un conteneur Podman et génère le contenu dans `./public`


== Publication ==
== Configuration Hugo ==
=== Générer le site ===
* baseURL = https://hugo.lololand.org/
<pre>
* languageCode = fr-fr
cd /home/loic/sites/hugo-docs
* title = Hugo Docs Tas
./publish.sh
* enableRobotsTXT = true
</pre>


=== Redémarrer le service ===
== Vérifications post-installation ==
<pre>
* `systemctl --user status hugo-docs.service`
systemctl --user restart hugo-docs.service
* `curl -I http://127.0.0.1:8100`
</pre>
* vérifier le domaine public `https://hugo.lololand.org/`


=== Vérifier localement ===
== Supervision ==
<pre>
Le service est déjà supervisé par Uptime Kuma, comme montré par les requêtes User-Agent `Uptime-Kuma/2.2.1` dans les logs du conteneur.
curl -I http://127.0.0.1:8100
</pre>


== Service Podman ==
== Données / emplacements à sauvegarder ==
Le service utilisateur repose sur le fichier :
* Sources Hugo : /home/loic/sites/hugo-docs
<pre>
* Statique publié : /home/loic/sites/hugo-docs/public
/home/loic/.config/containers/systemd/hugo-docs.container
* Quadlet : /home/loic/.config/containers/systemd/hugo-docs.container
</pre>


Principe :
== Sauvegarde ==
* image `nginx:alpine`
* Sauvegarder /home/loic/sites/hugo-docs
* montage en lecture seule du dossier `public/`
* Sauvegarder le quadlet hugo-docs.container
* exposition locale sur le port `8100`
* Sauvegarder la configuration Caddy associée au domaine `hugo.lololand.org`
* redémarrage automatique du service


== Reverse proxy Caddy ==
== Restauration ==
Bloc prévu dans `/etc/caddy/Caddyfile` :
* Restaurer /home/loic/sites/hugo-docs
* Restaurer le quadlet hugo-docs.container
* Regénérer le site si nécessaire via `publish.sh`
* Relancer `systemctl --user daemon-reload` puis `systemctl --user start hugo-docs.service`


<pre>
== Maintenance documentaire ==
# Hugo docs
Lors d'un changement d'image, de domaine, de port, de chemin de build ou de mode de publication, mettre à jour cette page et la trace centrale.
hugo.lololand.org:443 {
    import common_acme
    reverse_proxy 127.0.0.1:8100
}


# Hugo docs (accès port dédié de secours)
== Trace documentaire ==
https://lololand.hopto.org:25700 {
Cette page fait partie de [[Trace install tas]].
    import common_acme
    reverse_proxy 127.0.0.1:8100
}
</pre>
 
== Utilisation courante ==
=== Ajouter une page ===
Créer un fichier Markdown dans `content/`.
 
Exemple :
<pre>
cd /home/loic/sites/hugo-docs
mkdir -p content/docs
cat > content/docs/bonjour.md <<'EOF'
---
title: "Bonjour"
---
 
# Bonjour
 
Première page de test.
EOF
</pre>
 
=== Regénérer le site ===
<pre>
cd /home/loic/sites/hugo-docs
./publish.sh
systemctl --user restart hugo-docs.service
</pre>
 
== Avantages du choix Hugo ==
* pas de base de données
* pas d'application dynamique à maintenir
* contenu lisible en texte brut
* publication très rapide
* très bon couplage avec git
* rollback facile en restaurant les sources ou le rendu généré
 
== Points d'attention ==
* toute modification du contenu nécessite une régénération du site
* le reverse proxy Caddy doit être configuré séparément
* il faut conserver une sauvegarde du `Caddyfile` avant modification
* le dossier `public/` ne doit pas être modifié manuellement
 
== Rollback ==
En cas de problème :
* restaurer la sauvegarde du `Caddyfile`
* corriger ou restaurer le projet Hugo
* régénérer le site
* redémarrer `hugo-docs.service`
* recharger `caddy`
 
== Commandes utiles ==
<pre>
cd /home/loic/sites/hugo-docs
./publish.sh
systemctl --user status hugo-docs.service
systemctl --user restart hugo-docs.service
curl -I http://127.0.0.1:8100
</pre>
 
== Résultat attendu ==
Une chaîne simple et maintenable :
* édition en Markdown
* génération statique via Hugo
* service local via Podman
* exposition publique via Caddy

Dernière version du 11 avril 2026 à 09:45

Trace install tas - Hugo

Rôle

Site statique de documentation Hugo servi sur tas via un conteneur Nginx.

Accès

Ports

8100 local, 443 public via domaine dédié

Exécution / runtime

Quadlet systemd user : hugo-docs.container ; conteneur hugo-docs ; unité générée : hugo-docs.service

Chemins de configuration

  • /home/loic/.config/containers/systemd/hugo-docs.container
  • /home/loic/sites/hugo-docs/hugo.toml
  • /home/loic/sites/hugo-docs/publish.sh
  • /etc/caddy/Caddyfile

Volumes / persistance

  • /home/loic/sites/hugo-docs/public:/usr/share/nginx/html:ro

Dépendances

  • network-online.target
  • Caddy sur le domaine `hugo.lololand.org`
  • publication statique générée dans `/home/loic/sites/hugo-docs/public`

Installation

  • Image de service : docker.io/library/nginx:alpine
  • Déploiement rootless via Quadlet Podman
  • Publication locale : 8100 -> 80 dans le conteneur
  • Service actif : hugo-docs.service
  • Build du site via `publish.sh`, qui lance `docker.io/klakegg/hugo:ext-alpine` dans un conteneur Podman et génère le contenu dans `./public`

Configuration Hugo

Vérifications post-installation

Supervision

Le service est déjà supervisé par Uptime Kuma, comme montré par les requêtes User-Agent `Uptime-Kuma/2.2.1` dans les logs du conteneur.

Données / emplacements à sauvegarder

  • Sources Hugo : /home/loic/sites/hugo-docs
  • Statique publié : /home/loic/sites/hugo-docs/public
  • Quadlet : /home/loic/.config/containers/systemd/hugo-docs.container

Sauvegarde

  • Sauvegarder /home/loic/sites/hugo-docs
  • Sauvegarder le quadlet hugo-docs.container
  • Sauvegarder la configuration Caddy associée au domaine `hugo.lololand.org`

Restauration

  • Restaurer /home/loic/sites/hugo-docs
  • Restaurer le quadlet hugo-docs.container
  • Regénérer le site si nécessaire via `publish.sh`
  • Relancer `systemctl --user daemon-reload` puis `systemctl --user start hugo-docs.service`

Maintenance documentaire

Lors d'un changement d'image, de domaine, de port, de chemin de build ou de mode de publication, mettre à jour cette page et la trace centrale.

Trace documentaire

Cette page fait partie de Trace install tas.