Ein lokaler Server mit Beispielmedien, zum Ausprobieren

`Tools/demo-medien.sh` legt unter `~/.flaro-medien` einen kleinen Bestand
an: Der Untergang, Matrix, Blade Runner 2049, Inception, Dark mit drei
Folgen, Notruf Hafenkante. Echte Namen, damit TMDB etwas zu finden hat —
aber jede Datei ist zwei Sekunden Testbild mit Ton und wiegt ein paar
Kilobyte.

**Eine davon hat zwei Tonspuren**, Deutsch und Audiodeskription, mit
gesetzter Sprache und gesetztem Namen. Das ist der Fall, um dessentwillen
der ganze Server existiert: Jellyfins Transcode-Endpunkt bildet eine
Tonspur je Sitzung ab, und einmal hat die App dabei still die
Audiodeskription gewählt — drei Gigabyte Mobilfunk für eine unbrauchbare
Datei. Wer das nachstellen will, braucht eine Datei, die es kann.

`docker-compose.local.yml` daneben: benannte Volumes statt NAS-Pfaden,
Port 18080 statt 8080, Beiwerk eingeschaltet.

**`user: "0:0"` ist eine Mac-Eigenheit und steht deshalb kommentiert da.**
Colimas Dateifreigabe reicht die Besitzverhältnisse des Wirts nicht in die
VM durch — eingehängte Ordner erscheinen im Container als root, und ein
Server, der als 1000 läuft, kann dort keine NFO ablegen. Auf einem
Linux-NAS gehört die Zeile weg.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-03 21:07:44 +02:00
co-authored by Claude Opus 5
parent 91eb934048
commit 705ec87416
2 changed files with 88 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
#!/bin/bash
# Erzeugt einen kleinen Bestand zum Ausprobieren: echte Dateinamen, winzige
# Dateien. Jede ist eine Sekunde Testbild mit Ton — damit der Scan, die
# Metadaten und das Umpacken etwas zu tun haben, ohne Gigabytes zu brauchen.
set -euo pipefail
ZIEL="${1:-$HOME/.flaro-medien}"
command -v ffmpeg >/dev/null || { echo "ffmpeg fehlt."; exit 1; }
mach() { # mach <pfad> <schachtel> [zweite-tonspur]
mkdir -p "$(dirname "$1")"
if [ "${3:-}" = "zwei" ]; then
ffmpeg -y -loglevel error \
-f lavfi -i "testsrc=duration=2:size=320x240:rate=12" \
-f lavfi -i "sine=frequency=440:duration=2" \
-f lavfi -i "sine=frequency=880:duration=2" \
-map 0:v -map 1:a -map 2:a \
-metadata:s:a:0 language=deu -metadata:s:a:0 title=Deutsch \
-metadata:s:a:1 language=deu -metadata:s:a:1 title=Audiodeskription \
-c:v libx264 -preset ultrafast -c:a aac "$1"
else
ffmpeg -y -loglevel error \
-f lavfi -i "testsrc=duration=2:size=320x240:rate=12" \
-f lavfi -i "sine=frequency=440:duration=2" \
-c:v libx264 -preset ultrafast -c:a aac "$1"
fi
echo " $(basename "$1")"
}
echo "Filme:"
mach "$ZIEL/Filme/Der Untergang (2004)/Der Untergang (2004).mkv" mkv zwei
mach "$ZIEL/Filme/The Matrix (1999)/The Matrix (1999).mkv" mkv
mach "$ZIEL/Filme/Blade Runner 2049 (2017)/Blade Runner 2049 (2017).mp4" mp4
mach "$ZIEL/Filme/Inception (2010)/Inception (2010).mkv" mkv
echo "Serien:"
mach "$ZIEL/Serien/Dark/Staffel 1/Dark - S01E01.mkv" mkv
mach "$ZIEL/Serien/Dark/Staffel 1/Dark - S01E02.mkv" mkv
mach "$ZIEL/Serien/Dark/Staffel 2/Dark - S02E01.mkv" mkv
mach "$ZIEL/Serien/Notruf Hafenkante/Staffel 1/Notruf Hafenkante - S01E01.mkv" mkv zwei
chmod -R a+rwX "$ZIEL"
echo
echo "Fertig: $ZIEL"
+45
View File
@@ -0,0 +1,45 @@
# Zum Ausprobieren auf dem eigenen Rechner — nicht für den Betrieb.
#
# Unterschiede zur Beispieldatei:
# * benannte Volumes statt Pfaden auf dem NAS
# * Medien aus ~/.flaro-medien, erzeugt von Tools/demo-medien.sh
# * Port 8080 bleibt frei, es läuft auf 18080
#
# docker compose -f docker-compose.local.yml up -d
# docker compose -f docker-compose.local.yml logs -f
# docker compose -f docker-compose.local.yml down -v (räumt auch die Daten weg)
services:
flaro:
image: flaro:local
# Der Bauzusammenhang ist das Repo, nicht server/ — das Image braucht
# auch web/ für die Oberfläche.
build:
context: ..
dockerfile: server/Dockerfile
container_name: flaro-local
restart: unless-stopped
ports:
- "18080:8080"
# **Nur auf dem Mac nötig.** Colimas Dateifreigabe reicht die
# Besitzverhältnisse des Wirts nicht in die VM durch — eingehängte Ordner
# erscheinen im Container als root. Auf einem Linux-NAS gehören sie dem
# Benutzer 1000, und dann gehört diese Zeile weg.
user: "0:0"
environment:
- TZ=Europe/Zurich
- FLARO_WRITE_SIDECARS=true
volumes:
- config:/config
- cache:/cache
- transcode:/transcode
- ${HOME}/.flaro-medien:/media
volumes:
config:
cache:
transcode: