Files
files/README.md
2026-06-18 19:17:51 +00:00

55 lines
1.9 KiB
Markdown

# 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/<datei>`
- Upload-Anfragen: `/_request/<id>`
Upload-Anfragen akzeptieren Browser-Multipart und rohe PUT-Uploads auf `/_request/<id>/upload`.
Beispiel mit `curl`:
```bash
curl -T ./datei.pdf -H 'X-File-Name: datei.pdf' 'https://files.example.tld/_request/<id>/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 <token>' '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 <SMTP_MAIL>`)
4. Stack starten: `docker compose up --build`
5. Als Admin anmelden und Benutzer über die UI anlegen