alpinux-owni/docs/proxy-calendar.md
Cédrix 89cc919906 Absorber alpinux-infra : un seul dépôt pour la machine
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
2026-09-27 12:55:45 +02:00

2.5 KiB

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) :

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.