This repository has been archived on 2026-09-17. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
nixos-config/docs/photo-pipeline.md
pijukka 1c08e144b3 resize-image.sh: add a 4th (xl/desktop) tier, document the pipeline
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.
2026-08-04 10:03:28 +02:00

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.