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

2.5 KiB

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.