Konfiguration

Tunetorch kennt zwei Ebenen der Konfiguration. Das ist keine Doppelung, sondern eine bewusste Trennung:

EbeneWoWann wirksamWofür
Umgebungsvariablendocker-compose.ymlnach Neustart des ContainersInfrastruktur: Pfade, Netzwerk, Prozessrechte
Server-EinstellungenAdmin-UI → Server-Einstellungensofort, ohne NeustartBetrieb: Zeitzone, Cover-Größen, Limits, Wartung

Faustregel: Was der Container beim Hochfahren wissen muss, ist eine Umgebungsvariable. Alles andere gehört in die Oberfläche.

Umgebungsvariablen

Alle tragen den Präfix TT_. Für den Normalbetrieb hinter einem TLS-Reverse-Proxy musst du keine einzige davon setzen.

Pfade

VariableStandardZweck
TT_DATA_DIR/app/dataBasisverzeichnis für Datenbank, Audiodateien, Cover, Logs und Schlüssel.
TT_MUSIK_PFAD/app/musikMusikordner für den Bibliothek-Scan.
TT_IMPORT_PFAD/app/importVerzeichnis für den einmaligen Sammlungs-Import.

Netzwerk & Sicherheit

VariableStandardZweck
TT_HTTPSTrueSteuert die Cookie-Attribute. TrueSecure + SameSite=Strict (Aufruf über HTTPS, auch via Proxy). False → nötig bei reinem HTTP-Zugriff.
TT_TRUSTED_PROXIES1Anzahl der Reverse-Proxies davor. 0 = Direktzugriff ohne Proxy. Bestimmt, welche IP der Brute-Force-Schutz sperrt.
TT_CORS_ORIGINS(leer)Nur nötig, wenn das Frontend von einer anderen Herkunft läuft. Standardmäßig ist CORS aus, weil Oberfläche und API von derselben Adresse kommen.

TT_TRUSTED_PROXIES bitte korrekt setzen. Ein zu hoher Wert — oder 1 ohne echten Proxy — macht die Client-IP fälschbar und hebelt damit den Brute-Force-Schutz aus.

Betrieb

VariableStandardZweck
TT_PUID / TT_PGID1000UID/GID, mit der die App läuft und der /app/data gehört.
TT_LOG_LEVELINFODEBUG, INFO, WARNING, ERROR, CRITICAL.
TT_GUNICORN_WORKERS1Worker-Prozesse. Ein Worker mit vielen Threads ist für die SQLite-Datenbank stabiler als mehrere.
TT_GUNICORN_THREADS8Threads pro Worker.
TT_DLNA_TMPFS(automatisch)Ablageort der DLNA-Transkodate. Normalerweise nicht setzen — der Server wählt selbst.

Cron-Zeitpläne gibt es hier bewusst nicht. Welche Wartungs-Tasks wann laufen, pflegst du zur Laufzeit in der Oberfläche (siehe Server verwalten).

Server-Einstellungen

Zu finden unter Server-Einstellungen in der Admin-Oberfläche, sortiert nach Rubriken. Änderungen greifen ohne Neustart.

RubrikWas du dort einstellst
ÜberblickLive-Status des Servers: Bibliotheksgröße, Speicher, Cache-Trefferquote, Laufzeit, Version — und als erste Karte der Pro-Stand (aktiv oder nicht, bis wann, letzte und nächste Prüfung).
BenutzerKonten anlegen, Rechte vergeben, Betreuer zuordnen. → Benutzer & Rechte
ZeitzoneIANA-Zeitzone des Servers. Standard ist Europe/Berlin.
Anmeldung & SitzungenWie lange Benutzer angemeldet bleiben (Tage). Der Takt, in dem der Zugang im Hintergrund erneuert wird (Minuten), steht darunter unter Erweitert — er ist ein Sicherheits-Detail, von dem im Alltag niemand etwas merkt.
Brute-Force-SchutzZeitfenster, erlaubte Fehlversuche, Sperrdauer.
Cover & Interpret-BilderDie Bildqualität als eine Auswahl — sparsam, ausgewogen oder hoch — setzt alle sechs Maße und die Cover-Qualität auf einmal. Die Einzelwerte (drei Cover-Kantenlängen, drei Interpret-Bild-Höhen) lassen sich darunter aufklappen, wenn es genauer sein muss. Nach dem Speichern — und ebenso nach einem Zurücksetzen — fragt Tunetorch, ob die bestehenden Bilder neu erzeugt werden sollen (sie behalten sonst ihre bisherige Auflösung) → Server verwalten. Ganz unten: wie viele Vorschau-Treffer eine Internet-Bildsuche zunächst lädt.
Audio-UploadZiel-Bitrate für Opus und die maximale Dateigröße. Eine Anfrage darf insgesamt das Vierfache davon umfassen — das ergibt sich aus der Dateigröße und ist nicht getrennt einstellbar.
Metadaten normalisierenRegeln für Großschreibung und verbotene Zeichen, je Feld einzeln. Dazu der Auflösungs-Vorschlag für zusammengesetzte Interpreten — abschaltbar, dann schweigen Editoren und Metadaten-Assistent dazu.
HörbücherWelche Genres als Hörbuch behandelt werden. → Hörbücher
DLNAMaster-Schalter, Server-Adresse fürs Heimnetz, Geräte und Zugriffslisten. → Casting
Wartung & Cron-TasksWelche Tasks laufen, in welchem Intervall oder zu welcher Uhrzeit.
Zum Löschen vorgemerktTitel und Konten, die auf ihre endgültige Löschung warten.
ErweitertZwei Tempo-Schrauben, die im Normalbetrieb nichts brauchen: die Pause zwischen den Teilschritten langer Jobs (Scan, Lautheit, Upload — je höher, desto schonender für den Server) und das Speicherlimit des Zwischenspeichers. Lohnt sich, wenn der Server unter Last träge wird.
Export-SitzungenLaufende und fertige Exporte, plus der Gesamt-Datenbank-Export (Pro).
Tunetorch ProAktivierungs-Code eintragen (das Feld steht nur, solange der Server nicht verbunden ist) und Lizenz-Status prüfen; bei aktivem Abo zusätzlich Name dieses Servers — wie sich deine Installation nennt, statt „Tunetorch“ etwa „Familie Schmitt Musik“ (→ unten). Den Aktivierungs-Code verwaltet, wem der Server gehört — weitere Admins sehen im Reiter nur den Server-Namen. → Tunetorch Pro

Standardwerte zurücksetzen

Jede Rubrik trägt im Kopf einen ↺-Knopf. Er bleibt unauffällig, solange alle Werte auf dem Standard stehen, und färbt sich in die Akzentfarbe, sobald einer abweicht — auch bei zugeklappter Rubrik. Ein Klick zeigt vor dem Speichern, was sich ändert (aktuell → Standard).

Praktischer Nebeneffekt: Weil der Standard direkt vom Server kommt, übernimmt eine bestehende Installation per Klick auch einen später geänderten Standardwert.

Denselben Knopf gibt es übrigens in den Benutzer-Einstellungen jedes Kontos.

Der Name deines Servers

Standardmäßig heißt deine Installation überall „Tunetorch“. Mit einem aktiven Pro-Abo gibst du ihr unter Server-Einstellungen → Tunetorch Pro → Name dieses Servers einen eigenen Namen — etwa „Familie Schmitt Musik“. Ein leeres Feld bedeutet „Tunetorch“.

Ohne aktives Abo ist die Rubrik nicht da. Das ist kein Verlust: Ohne Pro meldet sich der Server ohnehin wieder als „Tunetorch“, das Feld hätte also nichts zu zeigen, was gerade gilt. Dein eingetragener Name bleibt unangetastet gespeichert und steht mit dem Abo unverändert wieder da.

Wo der Name erscheint:

Ort
Kopfzeile der Oberflächesofort
Titel des Browser-Tabssofort
Anmeldeseitesofort — siehe Hinweis unten
Name der installierten Web-App (PWA)erst ab der nächsten Installation
Name der Android-App im Startbildschirmgar nicht — siehe unten

Der Name steht auf der Anmeldeseite, also vor dem Login. Wer die Adresse deines Servers kennt, sieht ihn, ohne sich anzumelden — und genau dafür ist er da: Er soll begrüßen, nicht erst nach dem Passwort auftauchen. Wenn du das nicht möchtest, lässt du das Feld leer; dann steht dort weiterhin „Tunetorch“. Deine Musik und deine Daten sind davon nicht berührt, es ist ausschließlich dieser eine Text.

Eine bereits installierte Web-App behält ihren alten Namen. Der Name unter dem Symbol auf dem Homescreen wird beim Installieren festgelegt; Browser übernehmen eine spätere Änderung verzögert oder gar nicht. Wer den neuen Namen dort sehen will, entfernt die installierte App und installiert sie erneut.

Die Android-App heißt weiterhin „Tunetorch“ — und das ändert sich auch nicht. Sie kann mehrere Server verwalten; bei drei hinterlegten Installationen gäbe es keine richtige Antwort darauf, welcher Name auf dem Startbildschirm stehen soll. Der Name gehört der App, nicht einem der Server, die sie anzeigt. Innerhalb der App siehst du deinen Server-Namen ganz normal in der Kopfzeile.

Läuft dein Abo aus, meldet sich der Server wieder als „Tunetorch“ — dein eingetragener Name bleibt dabei gespeichert und ist sofort wieder da, sobald Pro zurück ist.

Zeitzone

Der Server läuft standardmäßig in Europe/Berlin. Die Zeitzone wird nicht per Docker-Variable gesetzt, sondern in der Oberfläche (Server-Einstellungen → Zeitzone) aus der vollständigen IANA-Liste gewählt — wer woanders sitzt, stellt sie dort einmal um.

Sie beeinflusst Log-Zeitstempel, alle Datumsangaben und die festen Uhrzeiten der Wartungs-Tasks. Eine Änderung greift sofort.

Reverse-Proxy & HTTPS

Für den Zugriff aus dem Internet — und für die installierbare PWA — brauchst du einen Reverse-Proxy mit TLS-Zertifikat. Er leitet auf Port 5000 des Containers weiter.

Caddy (kümmert sich selbst um das Zertifikat):

musik.example.com {
    reverse_proxy 127.0.0.1:5000
}

Nginx:

server {
    server_name musik.example.com;
    listen 443 ssl;

    location / {
        proxy_pass         http://127.0.0.1:5000;
        proxy_set_header   Host              $host;
        proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_read_timeout 300s;
    }
}

Wichtig ist der X-Forwarded-For-Header: Daraus liest Tunetorch die echte Client-IP für den Brute-Force-Schutz. Wie viele Proxies davorstehen, sagst du über TT_TRUSTED_PROXIES (Standard 1).

Große Uploads brauchen unter Nginx zusätzlich ein passendes client_max_body_size.

Aufbau des Datenverzeichnisses

/app/data/
├── db/                   die SQLite-Datenbank (WAL)
├── backups/              Sicherungskopien der Datenbank (automatisch vor Schema-Updates)
├── audio/                hochgeladene Originaldateien + Metadaten-Sicherung (.txt)
├── audio_cache/          konvertierte Fassungen (wird automatisch begrenzt)
├── cover/                Cover in vier Größen
├── interpret_hero/       Künstlerbilder
├── person_hero/          Personenfotos
├── logs/                 Server-Logs (rotierend)
├── jwt/                  Signaturschlüssel der Anmeldung
├── lizenz/               Zustand der Pro-Lizenz
├── redis/                persistente Sicherheitsdaten (Sperren, Token-Sperrliste)
├── upload_temp/          laufende Upload-Sitzungen
└── temp/                 Exporte und kurzlebige Zwischendateien

Für ein Backup genügt dieses eine Verzeichnis — siehe Sicherheit & Datensicherung.

Nächster Schritt

Zurück zur Dokumentations-Übersicht