Il y avait deux dépôts d'infrastructure et aucune frontière entre eux. La seule distinction défendable — « documentation » d'un côté, « fichiers de configuration » de l'autre — ne tenait plus : infra avait fini par contenir plus de documentation qu'owni, pendant qu'owni décrivait du concret (IP, bases, comptes). Tout vient donc ici : conf/ (vhosts de référence), dns/ (export de zone), services/ (units systemd), scripts/ (sauvegarde) et docs/ (courrier sortant, certificats, sauvegardes, et le déploiement par service). Dans ce sens plutôt que l'inverse parce qu'« owni » nomme la machine, là où « infra » ne dit pas de quoi il s'agit — et c'est le nom que Cédric emploie spontanément, y compris pour le dossier de secrets. Les renvois croisés entre les deux dépôts deviennent des liens internes : un lien vers un dépôt qu'on s'apprête à archiver aurait pourri en silence. Reste une incohérence, signalée plutôt que corrigée à la hâte : docs/admin.md, static.md, wiki.md, dynamic.md et proxy-calendar.md décrivent le déploiement de sites, pas la machine. Ils ont la même place ici que celle que la messagerie n'avait pas — ils devraient rejoindre leurs dépôts. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SFbwnJurBwTs7x7t93ecku
69 lines
2.5 KiB
Markdown
69 lines
2.5 KiB
Markdown
# Proxy cache calendrier public — `alpinux.org/public-calendars/`
|
|
|
|
## Rôle
|
|
|
|
Ce composant expose le calendrier Nextcloud d'Alpinux en iCal public, avec mise en cache locale pour éviter de solliciter le serveur Nextcloud à chaque requête.
|
|
|
|
## Localisation
|
|
|
|
| Élément | Chemin |
|
|
|---|---|
|
|
| Script PHP | `/var/www/clients/client1/web11/web/public-calendars/index.php` |
|
|
| Cache ICS | `/var/www/clients/client1/web11/web/public-calendars/{token}.ics` |
|
|
| Lien symlink | `/var/www/alpinux.org/web/` → même racine |
|
|
|
|
## Flux de données
|
|
|
|
```
|
|
Visiteur / JS page d'accueil
|
|
│
|
|
▼
|
|
GET https://alpinux.org/public-calendars/{token}
|
|
│
|
|
▼
|
|
index.php
|
|
├── Cache valide (< 1 h) ? ──▶ sert le fichier .ics local
|
|
└── Cache expiré ou absent ──▶ fetch Nextcloud DAV
|
|
│
|
|
▼
|
|
https://alpinux.yourownnet.fr/remote.php/dav/public-calendars/{token}?export
|
|
│
|
|
▼
|
|
Écrit {token}.ics ──▶ sert le fichier
|
|
```
|
|
|
|
## TTL du cache
|
|
|
|
**3 600 secondes (1 heure).** Passé ce délai, la prochaine requête déclenche un nouveau fetch Nextcloud et écrase le fichier.
|
|
|
|
## Modes d'accès
|
|
|
|
| URL | Comportement |
|
|
|---|---|
|
|
| `/public-calendars/{token}` | Flux iCal brut (usage principal) |
|
|
| `/public-calendars/{token}?p=webcal` | Redirige vers `webcal://…` pour abonnement depuis une appli calendrier |
|
|
| `/public-calendars/{token}?p=html` | Aperçu HTML des 8 prochains événements (dans les 4 mois) |
|
|
|
|
## Invalidation manuelle du cache
|
|
|
|
Lorsqu'un événement est ajouté ou modifié dans Nextcloud et doit apparaître immédiatement (sans attendre 1 heure) :
|
|
|
|
```bash
|
|
sudo rm /var/www/clients/client1/web11/web/public-calendars/n5BWPYsxw7FCYozM.ics
|
|
```
|
|
|
|
La prochaine requête HTTP sur `/public-calendars/n5BWPYsxw7FCYozM` régénère le cache automatiquement.
|
|
|
|
## Token du calendrier Alpinux
|
|
|
|
| Calendrier | Token |
|
|
|---|---|
|
|
| Alpinux évènements (`president@alpinux.org`) | `n5BWPYsxw7FCYozM` |
|
|
|
|
## Source Nextcloud
|
|
|
|
Le calendrier est géré dans l'interface Nextcloud de l'association. L'événement doit impérativement être placé dans le calendrier **« Alpinux évènements »** pour apparaître dans le flux public. Un événement dans un autre agenda (personnel, secondaire) ne sera pas exporté.
|
|
|
|
## Relation avec la page d'accueil
|
|
|
|
`alpinux.org/index.html` charge le flux via `fetch('/public-calendars/n5BWPYsxw7FCYozM')` côté client (JS) pour alimenter la grille planning et les cartes « Prochains rendez-vous ». Voir `home/index.html` pour le code de parsing iCal.
|