Entrypoint runs as root, ensures /data/{db,uploads,logo} and
/webdav-config exist with UID 1000 ownership, then drops privileges
via gosu. Removes the manual sudo chown step from the README and
makes a fresh docker compose up succeed without prep.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Modern dark/light theme with CSS variables, pills, cards and a sticky nav
- New Branding section in admin settings: upload logo (png/jpg/svg/webp/gif,
2 MB) plus width/height sliders, proportional scale and reset
- Logo served publicly via /logo and displayed on admin portal and the
customer upload page; files persist under ./data/logo
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Customer upload via token link (no login), optional password + expiry,
drag & drop for files and folders with preserved structure
- Admin portal with setup wizard, role-based users (admin/staff),
per-customer WebDAV access rules (read/write), session auth
- WebDAV container (Debian apache2) with htpasswd + access.conf
auto-generated from the SQLite DB and reloaded via inotifywait
- Configurable public base URL and janitor cron interval in admin UI;
janitor reconciles the uploads table with the filesystem
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>