# lehnert.cloud/files File server infrastructure hosted on [files.lehnert.cloud](https://files.lehnert.cloud). ## Komponenten - `webserver` (Apache) stellt das öffentliche Dateiverzeichnis bereit - `nextjs` enthält die Next.js-App für Verwaltung und Authentifizierung - `traefik` übernimmt TLS und Routing ## Management-UI - Benutzer-Dashboard: `/manage/login` - Admin-Dashboard: `/manage/admin` - Datei-Downloads: `/_share/` - Upload-Anfragen: `/_request/` Upload-Anfragen akzeptieren Browser-Multipart und rohe PUT-Uploads auf `/_request//upload`. Beispiel mit `curl`: ```bash curl -T ./datei.pdf -H 'X-File-Name: datei.pdf' 'https://files.example.tld/_request//upload' ``` Admins können scoped Upload-Tokens unter `/manage/admin/tokens` erstellen. Diese Tokens erlauben `curl -T`-Uploads in einen festen Dateimanager-Ordner. Pfade unterhalb des Tokens dürfen Unterordner enthalten; `..` und `.php`-Zieldateien werden abgelehnt. ```bash curl -T ./file.txt -H 'Authorization: Bearer ' 'https://files.example.tld/_token-upload/subdir/file.txt' ``` ## Lokale Initialisierung Dev-Vorschau ohne lokale Node/npm-Installation: ```bash ./scripts/dev ``` Admin-Benutzer: `john.doe` / `123456`. Adminbereich: `/manage/admin`, Passwort `123456`. Dev-Container laufen mit `--rm`; `Ctrl-C`/`SIGTERM` entfernen den laufenden Container per `rm -f`. ```bash ./initialize.sh ``` Danach: 1. `.env` anpassen (`SERVICE_FQDN`, `LETSENCRYPT_EMAIL`, `DATA_DIR`, `UPLOAD_TTL_SECONDS`, `MANAGEMENT_ADMIN_HASH`, optional `UPLOAD_MAX_BYTES` Standard: 25 GiB, und `COOKIE_SECURE`) 2. Optional `PUBLIC_BASE_URL` setzen, falls absolute Links in E-Mails einen festen Host verwenden sollen 3. Für Upload-Anfragen mit E-Mail-Benachrichtigung SMTP setzen (`SMTP_HOST`, `SMTP_PORT`, `SMTP_USER`, `SMTP_PASS`, `SMTP_MAIL`, `SMTP_NAME`; Absender: `SMTP_NAME `) 4. Stack starten: `docker compose up --build` 5. Als Admin anmelden und Benutzer über die UI anlegen