Was 3 tiers (phone/tablet/desktop at 640/1280/1920px). Renamed the 1920px tier to laptop and added a new desktop tier at 2560px for 5K-iMac-class screens, matching the launcher's own top breakpoint. docs/photo-pipeline.md writes down the whole path from upload (Tailscale or SMB) through resizing to the pictures/<motiv>/<device>/ naming convention, since it wasn't documented anywhere before.
65 lines
2.5 KiB
Markdown
65 lines
2.5 KiB
Markdown
# Foto-Pipeline
|
|
|
|
Wie Fotos von einem Gerät bis zu einer öffentlichen, für jede
|
|
Bildschirmgröße passenden URL unter `data.0ff.space` kommen.
|
|
|
|
## 1. Upload nach blunix
|
|
|
|
Zwei Wege, beide landen als rohe Originaldateien (HEIC/JPEG,
|
|
volle Kameraauflösung) auf blunix:
|
|
|
|
- **Tailscale (Taildrop):** vom Absender-Gerät aus per Tailscale-Share
|
|
verschickt, auf blunix abgeholt mit
|
|
`tailscale file get --verbose <zielordner>` — leert die Ablage
|
|
(Dateien verschwinden aus der Warteschlange, sobald sie abgeholt
|
|
wurden).
|
|
- **SMB:** über die Samba-Freigabe aus `hosts/pinix/localServices/webdav.nix`.
|
|
|
|
## 2. Verkleinern
|
|
|
|
`scripts/resize-image.sh` (ImageMagick, `magick`-Befehl):
|
|
|
|
```
|
|
scripts/resize-image.sh INPUT [BASENAME] [OUTPUT_ROOT]
|
|
```
|
|
|
|
Erzeugt aus einer Eingabedatei vier Größenstufen als WebP
|
|
(`-auto-orient -strip -quality 82`, jeweils nur verkleinert, nie
|
|
hochskaliert):
|
|
|
|
| Ordner | Suffix | Breite | Zielgerät |
|
|
| --------- | ------ | ------- | -------------------- |
|
|
| `phone` | `_s` | 640px | Handy |
|
|
| `tablet` | `_m` | 1280px | Tablet |
|
|
| `laptop` | `_l` | 1920px | Laptop / normaler Desktop |
|
|
| `desktop` | `_xl` | 2560px | 5K-iMac-Klasse (selbe Breite wie der oberste Breakpoint im Launcher, siehe `launcher/style.css`) |
|
|
|
|
`BASENAME` fehlt → Dateiname ohne Endung. `OUTPUT_ROOT` fehlt →
|
|
`/var/www/data/external/pictures`.
|
|
|
|
## 3. Ablage-Schema
|
|
|
|
Ein Ordner pro Motiv/Anlass unter `pictures/`, darin die vier
|
|
Geräte-Unterordner:
|
|
|
|
```
|
|
/var/www/data/external/pictures/<motiv>/phone/<name>_s.webp
|
|
/var/www/data/external/pictures/<motiv>/tablet/<name>_m.webp
|
|
/var/www/data/external/pictures/<motiv>/laptop/<name>_l.webp
|
|
/var/www/data/external/pictures/<motiv>/desktop/<name>_xl.webp
|
|
```
|
|
|
|
Beispiel (bestehend): `pictures/nog26/{phone,tablet,laptop,desktop}/…`.
|
|
Öffentlich erreichbar unter
|
|
`https://data.0ff.space/pictures/<motiv>/<gerät>/<name>_<suffix>.webp`
|
|
(Traefik-Route `data`, siehe `hosts/blunix/localServices/traefik/routes-external.nix`,
|
|
Server läuft lokal auf blunix per `hosts/blunix/localServices/fileserver-external.nix`).
|
|
|
|
**Namensschema:** kein striktes globales Schema, aber durchgängig kurze,
|
|
beschreibende Kleinbuchstaben-Slugs ohne Leerzeichen (`cyber`, `wolfen1`,
|
|
`apolda`, …). Nummern nur, wenn mehrere Bilder zum selben Motiv gehören
|
|
(`wolfen1`/`wolfen2`) — `<motiv>` und `<name>` folgen demselben Muster.
|
|
|
|
Ältere Bilder direkt in `pictures/` (ohne Motiv-Unterordner, ohne
|
|
Größenstufen) sind Fotos von vor dieser Pipeline und keine Vorlage für
|
|
neue Uploads.
|