Les listes de diffusion existaient sans qu'on puisse les atteindre depuis la page d'accueil. Trois portes, selon ce que vient chercher le visiteur : la navigation et une carte dans « Nos services » mènent à l'inscription, le pied de page mène directement aux archives, pour qui veut d'abord lire ce qui a déjà été envoyé. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JYfYUZRcJmmEWJwAxZb4o2 |
||
|---|---|---|
| deploiement | ||
| site | ||
| .gitignore | ||
| README.md | ||
www.alpinux.org
La page d'accueil de l'association — du HTML statique, une seule page, servie sur
https://alpinux.org et https://www.alpinux.org.
Elle affiche deux choses qu'elle ne contient pas : l'agenda, lu dans le calendrier
public Nextcloud, et les dernières pages du wiki, lues dans
derniers-articles.json que le wiki
publie à chaque build. Si l'une ou l'autre source est injoignable, la section
correspondante se masque et le reste de la page tient debout.
Je veux…
| Ce que vous voulez faire | Ce que vous faites |
|---|---|
| Modifier la page | Éditer site/index.html, pousser sur main — la mise en ligne suit |
| Voir le rendu avant de pousser | python3 -m http.server -d site puis http://localhost:8000 |
| Comprendre pourquoi ça n'est pas en ligne | tail -20 /var/log/www-deploy.log sur le serveur |
| Republier sans nouveau commit | sudo -u abonnelc /opt/www-alpinux/deploy-www.sh |
| Réinstaller la chaîne de déploiement | sudo bash deploiement/installer.sh |
En local, l'agenda reste vide : /public-calendars/… est relayé vers Nextcloud par le
serveur, pas par http.server. Les articles du wiki, eux, s'affichent normalement.
Structure
alpinux-www/
├── site/ ce qui part en ligne, tel quel
│ ├── index.html
│ ├── robots.txt
│ └── sitemap.xml
└── deploiement/ la chaîne, versionnée avec le site
├── installer.sh pose tout sur le serveur (root, une fois)
├── deploy-www.sh git pull + rsync vers le DocumentRoot
├── webhook.py service d'écoute, 127.0.0.1:9877
├── www-webhook.service unité systemd
└── vhost-deploy.conf le relais Apache, pour trace
Ce qui se passe après un push
git push (sur main)
│
Gitea (origin/main)
│ webhook ──▶ https://alpinux.org/deploy ──▶ service d'écoute (signature vérifiée)
▼
deploy-www.sh : git pull → index.html complet ? → rsync vers le DocumentRoot
▼
https://alpinux.org
Compter moins d'une minute. Le garde-fou est modeste mais réel : un index.html tronqué
— transfert coupé, conflit mal résolu — ne part pas en ligne.
Les deux pièges à connaître
Supprimer un fichier ici ne le retire pas du serveur. Le rsync de déploiement est
volontairement sans --delete : le DocumentRoot contient aussi des fichiers qui ne sont
pas dans ce dépôt — le .htaccess qui relaie /public-calendars vers Nextcloud, les
pages d'erreur et les statistiques d'ISPConfig. Un --delete les emporterait. Retirer un
fichier en ligne se fait donc à la main, sur le serveur.
Le serveur n'écrit dans le DocumentRoot que par une ACL. web11/web appartient à
l'utilisateur web11 ; installer.sh pose un setfacl pour l'utilisateur du service.
Si ISPConfig réinitialise les droits du site un jour, le déploiement échouera avec une
erreur de permission — relancer installer.sh suffit à la remettre.
Historique
Ce dépôt est né le 2026-09-20, par détachement du monorepo alpinux.site.2026 où la page
vivait sous home/. Elle y était déployée à la main, et le dépôt avait fini par
diverger : la version en ligne portait quatre mois de modifications faites directement sur
le serveur et jamais revenues dans git. C'est ce qui a motivé le webhook.