session.clear() seul ne déconnectait pas la session Keycloak,
provoquant une reconnexion automatique immédiate.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- stats.html : bouton "Générer et ouvrir" avec polling async ; supprime
le window.open automatique (bloqué par les navigateurs)
- app.py : routes POST /stats/generate et GET /stats/status ; exécution
GoAccess en thread daemon, verrou anti-doublon
- .env.example : documente STATS_LOG_FILE et STATS_GENERATE_CMD
- README.md : flux de publication local→git→serveur, variables d'env,
procédure première installation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Ajoute la route POST /upload (admin uniquement) et la zone de dépôt
dans browse.html — glisser-déposer ou sélection multiple, destination
= dossier courant du navigateur.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Push : additive uniquement (pas de suppression sur le serveur)
Pull : idem, wiki/ exclu des deux côtés
Excludes communs : .git/, scripts/, README.md, .env*, .gitignore, wiki/
Correction bug bash set -e avec ((VAR++)) → VAR=$(( VAR + 1 ))
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Connexion SSH via abonnelc (sudo NOPASSWD:ALL)
- --rsync-path="sudo rsync" pour accéder à web17/web/logo/ (owner web17)
- STATIC_PATH pointe sur web17/web/logo/ (pas la racine ISPConfig)
- .env.example neutre : STATIC_USER reste un placeholder
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
push-assets.sh : synchronise les assets locaux vers le serveur (dry-run, confirmation, --delete)
pull-assets.sh : récupère les assets distants en local (dry-run, confirmation)
Gestion des fichiers nouveaux, modifiés et supprimés via rsync --checksum.
Config SSH dans .env (non versioné).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Les vhosts, SSL et certificats sont gérés via ISPConfig (owni.alpinux.org:8080).
Supprime les références à a2ensite, certbot et la copie manuelle de vhost.conf.