55 lines
1.9 KiB
Markdown
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
|