Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 

Repository files navigation

StashApp auf Proxmox LXC (Community-Scripts-Stil)

Dieses Repository enthält ein Community-Scripts-artiges Setup für StashApp auf Proxmox VE in einem LXC-Container.

Inhalt des Repositories

  • ct/stashapp.sh — ursprüngliches Host-seitiges Proxmox-CT-Skript
  • ct/stashapp-fixed.shrepariertes Host-seitiges Proxmox-CT-Skript für den empfohlenen Neuaufbau
  • install/stashapp-install.sh — ursprüngliches Installationsskript im Container
  • install/stashapp-install-standalone.shrepariertes standalone Installationsskript im Container

Empfohlener Start

Für neue Installationen oder einen Neuaufbau des Containers solltest du jetzt das reparierte CT-Skript verwenden:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/Nanja-at-web/StashAtProxmox/main/ct/stashapp-fixed.sh)"

Wenn bereits ein fehlerhaft erstellter Container existiert, ist der saubere Weg:

pct stop 101
pct destroy 101
bash -c "$(curl -fsSL https://raw.githubusercontent.com/Nanja-at-web/StashAtProxmox/main/ct/stashapp-fixed.sh)"

Was das reparierte Setup macht

Das Setup folgt dem allgemeinen Aufbau der Proxmox Community Scripts: ein CT-Skript erstellt den LXC und ein Installationsskript richtet die Anwendung im Gast ein. Die reparierte Variante trennt diese Rollen sauber und ruft den Installer nach dem Containerbau direkt im LXC auf.

1. Es erstellt einen unprivilegierten Debian-LXC

Im Community-Scripts-Projekt werden Container-Skripte im Bereich ct/ dokumentiert, während containerinterne Installationsskripte im Bereich install/ liegen. Das offizielle Docker-CT-Skript der Community Scripts setzt standardmäßig Debian und unprivilegierte Container. Das StashApp-Skript orientiert sich an diesem Muster.

Warum unprivilegiert?
Ein unprivilegierter LXC ist in Proxmox in der Regel die sicherere Standardwahl. Für Stash ist das sinnvoll, weil die Medien auf einer NAS-Freigabe liegen und die eigentliche Anwendung zusätzlich isoliert per Docker läuft.

2. Es startet danach den Installer direkt im Container

Der wichtigste Fix ist: ct/stashapp-fixed.sh ruft nach dem erfolgreichen Containerbau gezielt das neue Script install/stashapp-install-standalone.sh im Container auf. Dadurch hängt die Installation nicht mehr von einem fehlenden Framework-Import ab.

3. Es installiert Docker im Container

Das standalone Installationsskript richtet Docker direkt im Container ein. Es installiert zuerst Basiswerkzeuge wie curl und ca-certificates und nutzt danach den offiziellen Docker-Installationsweg über get.docker.com.

Warum Docker?
Stash dokumentiert Docker Compose als offiziellen Installationsweg. Dabei wird eine docker-compose.yml gespeichert, angepasst und anschließend mit docker compose up -d gestartet.

4. Es erstellt eine Docker-Compose-Konfiguration für Stash

Stash stellt eine offizielle Compose-Vorlage bereit. Dort werden unter anderem diese Pfade verwendet:

  • /data
  • /generated
  • /metadata
  • /cache
  • /blobs

Dieses Repository erzeugt eine dazu passende Compose-Datei unter:

/opt/stash/docker-compose.yml

Zusätzlich werden lokale Verzeichnisse für Konfiguration und Begleitdaten angelegt:

/opt/stash/config
/opt/stash/metadata
/opt/stash/cache
/opt/stash/blobs
/opt/stash/generated

5. Es veröffentlicht Stash auf Port 9999

In der offiziellen Docker-Dokumentation von Stash wird der Standard-Port in der Compose-Datei mit

ports:
  - "9999:9999"

gezeigt. Beim Compose-Start ist Stash danach standardmäßig über Port 9999 erreichbar.

Beispiel:

http://192.168.1.50:9999

6. Es verwendet standardmäßig /mnt/stash-library als Bibliothekspfad im LXC

Das Installationsskript verwendet standardmäßig:

/mnt/stash-library

Dieser Pfad ist bewusst so gewählt, dass er gut zu einem Bind-Mount aus Proxmox passt. Statt die NAS direkt im Docker-Container zu mounten, wird die Freigabe zuerst auf dem Proxmox-Host eingebunden und danach in den LXC durchgereicht.

7. Es bindet diesen Pfad im Stash-Container als /data ein

Die Compose-Datei mappt den Bibliothekspfad des LXC nach /data in den eigentlichen Stash-Container.

Beispiel:

  • Proxmox-Host: /mnt/qnap-stash
  • LXC-Container: /mnt/stash-library
  • Stash-Docker-Container: /data

Damit ergibt sich folgende Kette:

QNAP/NAS -> Proxmox Host -> LXC -> Stash Container

Oder ganz konkret:

/mnt/qnap-stash        -> Host
/mnt/stash-library     -> LXC
/data                  -> Docker-Container

Warum dieser Ablauf für eine QNAP-Freigabe sinnvoll ist

Für NAS-gebundene Bibliotheken ist der sauberste Weg in Proxmox normalerweise:

  1. NAS-Freigabe auf dem Proxmox-Host mounten
  2. im CT mit Advanced -> Mount Filesystems nach /mnt/stash-library durchreichen
  3. in Stash unter Settings -> Library den Pfad /data hinzufügen und speichern

Der Vorteil dieses Modells:

  • die NAS-Anbindung wird an einer Stelle verwaltet, nämlich auf dem Proxmox-Host
  • der LXC bekommt nur ein normales Verzeichnis durchgereicht
  • Stash selbst sieht nur noch den internen Containerpfad /data
  • spätere Änderungen an NFS oder SMB/CIFS betreffen nicht die Docker-Compose-Logik

Beispiel mit QNAP und Proxmox-Bind-Mount

Angenommen, deine QNAP-Freigabe heißt Multimedia und wird auf dem Proxmox-Host unter folgendem Pfad eingebunden:

/mnt/qnap-stash

Dann sollte der Container diesen Pfad so erhalten:

  • Host path: /mnt/qnap-stash
  • Container path: /mnt/stash-library

In der Compose-Datei wird daraus:

  • LXC path: /mnt/stash-library
  • Stash path: /data

Danach trägst du in Stash selbst nur diesen Pfad ein:

/data

Erster Start von Stash

Nach erfolgreicher Installation:

  1. Browser öffnen
  2. Stash unter http://<CT-IP>:9999 aufrufen
  3. Settings -> Library öffnen
  4. /data hinzufügen
  5. Save klicken
  6. einen Scan starten

Was Stash mit dem Library-Pfad macht

Laut Stash-Dokumentation dient der Bereich Library dazu, Verzeichnisse hinzuzufügen oder zu entfernen, die von Stash erkannt werden sollen. Diese Verzeichnisse werden für das Scannen neuer Dateien und zum Aktualisieren der Dateipfade in der Stash-Datenbank verwendet.

Die Verzeichnisse lassen sich getrennt für folgende Typen setzen:

  • Videos
  • Images
  • Both

Wichtig: Nach Änderungen an den Verzeichnissen muss Save geklickt werden.

Excluded Patterns / Ausschlussmuster

Stash unterstützt Ausschlussmuster per Regex. Dateien, deren Pfad oder Dateiname auf das Muster passt, werden beim Scan nicht in die Datenbank aufgenommen. Auch beim Clean-Task können sie wieder entfernt werden.

Beispiele aus der Praxis:

sample.mp4$

Schließt alle Dateien aus, die auf sample.mp4 enden.

^/data/exclude/

Schließt ein bestimmtes Verzeichnis unterhalb deiner eingebundenen Bibliothek aus.

/\.[[:word:]]+/

Schließt versteckte Verzeichnisse aus.

Empfohlene Einstellungen für NAS- oder Netzwerkspeicher

1. Hashing: eher oshash als MD5

Stash unterstützt laut Doku zwei Hash-Verfahren für Videos:

  • oshash
  • MD5

MD5 liest die gesamte Datei, was bei Dateien auf Netzlaufwerken langsam sein kann. oshash liest dagegen nur 64 KB am Anfang und 64 KB am Ende der Datei. Für Bibliotheken auf einer QNAP- oder anderen NAS ist oshash daher in vielen Fällen die bessere Wahl.

2. Parallel Scan/Generation konservativ wählen

Stash dokumentiert, dass die Einstellung für parallele Scan-/Generierungsaufgaben besonders bei remote/cloud filesystems relevant ist. Wenn die Medien nicht lokal auf einer SSD liegen, sondern auf einer NAS, ist es oft besser, die Parallelität nicht unnötig hoch zu setzen.

Praxisbeispiel:

  • kleiner NUC + alte QNAP + 1 Gbit LAN -> eher konservativ beginnen
  • zuerst Standardwert testen
  • nur bei Bedarf schrittweise erhöhen

Rolle von StashDB

StashDB ist keine Installationsvoraussetzung für Stash selbst. Laut StashDB-Richtlinien ist StashDB eine öffentliche Instanz der Stash-Box-Software und dient als Metadatenquelle für Szenen, Studios und Performer. Video-Dateien selbst werden dort nicht gehostet.

Für dieses Repository ist StashDB also nur am Rand relevant; die eigentliche Installation basiert auf Proxmox Community Scripts, Docker und der Stash-Dokumentation.

Quellen

Proxmox Community Scripts

Stash

StashDB

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages