# Géré par Ansible (rôle portail) — ne pas modifier à la main. # Bloc C (CLAUDE.md) : dossier de l'élève monté comme lecteur réseau. # N'écoute qu'en local (127.0.0.1) : Nginx authentifie (délégué au portail) # et restreint chaque élève à son sous-dossier avant de relayer ici — voir # ansible/roles/portail/templates/nginx-portail.conf.j2 et # App\Http\Controllers\WebdavAuthController. [Unit] Description=Serveur WebDAV (rclone) pour le dossier des élèves — Syllabus After=network.target [Service] Type=simple User=www-data Group=www-data # --dir-cache-time : sans ça, les dossiers créés par Laravel (un par élève, # en dehors de rclone) restent invisibles jusqu'à 5 minutes (la valeur par # défaut) — constaté le 2026-10-14, un nouveau dossier élève répondait 404 # tant que rclone ne l'avait pas découvert lui-même. ExecStart=/usr/bin/rclone serve webdav {{ portail_dossier_app }}/storage/app/webdav --addr 127.0.0.1:{{ portail_port_webdav }} --no-modtime --vfs-cache-mode off --dir-cache-time 1s Restart=on-failure RestartSec=5 NoNewPrivileges=true ProtectSystem=strict ReadWritePaths={{ portail_dossier_app }}/storage/app/webdav [Install] WantedBy=multi-user.target