www.alpinux.org — page d'accueil statique de l'association, déployée par webhook
Find a file
Cédrix f0a0c96e75 Renvoyer vers messagerie.alpinux.org depuis l'accueil
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
2026-09-23 12:25:54 +02:00
deploiement Ancrer le relais sur le VirtualHost 443, pas sur certbot 2026-09-20 10:16:21 +02:00
site Renvoyer vers messagerie.alpinux.org depuis l'accueil 2026-09-23 12:25:54 +02:00
.gitignore Détacher www.alpinux.org du monorepo, avec son déploiement 2026-09-20 09:47:18 +02:00
README.md Détacher www.alpinux.org du monorepo, avec son déploiement 2026-09-20 09:47:18 +02:00

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.