Konfiguration

Tunetorch wird an zwei Stellen eingestellt. Die beiden ergänzen sich, sie doppeln sich nicht:

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

Als Faustregel: Was der Container beim Hochfahren wissen muss, ist eine Umgebungsvariable. Alles andere stellst du in der Oberfläche ein.

Umgebungsvariablen

Alle beginnen mit TT_. Betreibst du Tunetorch 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. True setzt Secure + SameSite=Strict (Aufruf über HTTPS, auch über einen Proxy). False brauchst du bei reinem HTTP-Zugriff.
TT_TRUSTED_PROXIES1Anzahl der Reverse-Proxies davor. 0 heißt Direktzugriff ohne Proxy. Davon hängt ab, welche IP der Brute-Force-Schutz sperrt.
TT_CORS_ORIGINS(leer)Nur nötig, wenn das Frontend unter einer anderen Adresse läuft. Ab Werk ist CORS aus, weil Oberfläche und API von derselben Adresse kommen.

Setz TT_TRUSTED_PROXIES richtig. Ein zu hoher Wert (oder 1 ohne echten Proxy) erlaubt es, die Client-IP zu fälschen. Damit ist der Brute-Force-Schutz ausgehebelt.

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_WORKERS1Anzahl der Worker-Prozesse. Ein Worker mit vielen Threads läuft mit der SQLite-Datenbank stabiler als mehrere.
TT_GUNICORN_THREADS8Threads pro Worker.
TT_DLNA_TMPFS(automatisch)Wo die umgewandelten Dateien fürs DLNA-Casting liegen. Normalerweise nicht setzen, der Server wählt selbst.

Zeitpläne für Wartungs-Tasks gibt es hier nicht. Welche Tasks wann laufen, stellst du in der Oberfläche ein (siehe Server verwalten).

Server-Einstellungen

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

Eine Rubrik wird als Ganzes gespeichert: Lehnt der Server einen Wert ab, bleiben auch die übrigen unverändert, und die Meldung nennt das Feld, an dem es lag. Halb gespeicherte Rubriken gibt es nicht. Dasselbe gilt fürs Zurücksetzen auf die Standardwerte.

RubrikWas du dort einstellst
ÜberblickAktueller Zustand des Servers: Größe der Bibliothek, Speicher, Cache, Laufzeit, Version. Die letzte Karte („Tunetorch“) zeigt den Pro-Stand (verbunden oder nicht, Pro oder Free, 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 & SitzungenNach wie vielen Tagen ohne Nutzung die Anmeldung abläuft. Darunter, unter Erweitert, steht der Takt, in dem die Anmeldung im Hintergrund erneuert wird (in Minuten). Davon merkt im Alltag niemand etwas.
Brute-Force-SchutzZeitfenster, erlaubte Fehlversuche, Sperrdauer.
Cover & Interpret-BilderDie Bildqualität wählst du mit einem Schalter: sparsam, ausgewogen oder hoch. Er setzt alle sechs Maße und die Cover-Qualität auf einmal. Wer es genauer braucht, klappt darunter die Einzelwerte auf (drei Cover-Kantenlängen, drei Höhen für Interpret-Bilder). Nach dem Speichern oder Zurücksetzen fragt Tunetorch, ob die vorhandenen Bilder neu erzeugt werden sollen. Sonst behalten sie ihre bisherige Auflösung → Server verwalten. Ganz unten stellst du ein, wie viele Vorschaubilder eine Internet-Bildsuche zuerst lädt.
Audio-UploadZiel-Bitrate für Opus und die maximale Dateigröße. Eine Anfrage darf insgesamt das Vierfache davon umfassen. Dieser Wert folgt aus der Dateigröße und lässt sich nicht getrennt einstellen.
Metadaten normalisierenRegeln für Großschreibung und verbotene Zeichen, für jedes Feld einzeln. Dazu der Vorschlag, zusammengesetzte Interpreten aufzulösen. Schaltest du ihn ab, schweigen Editoren und Metadaten-Assistent dazu.
HörbücherWelche Genres als Hörbuch gelten. → Hörbücher
DLNAHauptschalter, Server-Adresse im Heimnetz, Geräte und Zugriffslisten. → Casting
Wartung & Cron-TasksWelche Tasks laufen, in welchem Abstand oder zu welcher Uhrzeit.
Zum Löschen vorgemerktTitel und Konten, die auf ihre endgültige Löschung warten.
Datenbank-SicherungEine Kopie der Datenbank jetzt anlegen und die vorhandenen sehen. Zurückgespielt wird nur am Server. → Sicherheit
ErweitertZwei Stellschrauben fürs Tempo, die du normalerweise nicht brauchst: die Pause zwischen den Teilschritten langer Jobs (Scan, Lautheit, Upload; je höher, desto mehr Luft hat der Server) und die Speichergrenze des Zwischenspeichers. Nützlich, wenn der Server unter Last träge wird.
Export-SitzungenLaufende und fertige Exporte, dazu der Export der Gesamt-Datenbank (Pro).
Tunetorch ProVerbindungs-Code eintragen (das Feld gibt es nur, solange der Server nicht verbunden ist) und Lizenz-Status prüfen. Mit aktivem Abo stellst du hier auch den Namen dieses Servers ein, also zum Beispiel „Familie Schmitt Musik“ statt „Tunetorch“ (siehe unten). Den Verbindungs-Code verwaltet, wem der Server gehört. Weitere Admins sehen im Reiter nur den Server-Namen. → Tunetorch Pro

Standardwerte zurücksetzen

Jede Rubrik hat oben einen ↺-Knopf. Solange alle Werte auf Standard stehen, fällt er kaum auf. Weicht einer ab, färbt er sich in der Akzentfarbe, auch wenn die Rubrik zugeklappt ist. Vor dem Speichern zeigt er dir, was sich ändert (aktuell → Standard).

Weil der Standard direkt vom Server kommt, übernimmt eine bestehende Installation mit einem Klick auch einen Standardwert, der sich mit einem Update geändert hat.

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

Der Name deines Servers

Ab Werk 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, zum Beispiel „Familie Schmitt Musik“. Bleibt das Feld leer, heißt sie „Tunetorch“.

Ohne aktives Abo fehlt das Feld. Du verlierst dadurch nichts: Ohne Pro heißt der Server sowieso wieder „Tunetorch“. Dein Name bleibt gespeichert und ist mit dem Abo sofort 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 bei der nächsten Installation
Name der Android-App auf dem Startbildschirmgar nicht, siehe unten

Der Name steht auf der Anmeldeseite, also schon vor dem Login. Wer die Adresse deines Servers kennt, sieht ihn ohne Anmeldung. Das ist Absicht: Der Name soll dich begrüßen. Wenn du das nicht möchtest, lass das Feld leer, dann steht dort weiter „Tunetorch“. Deine Musik und deine Daten betrifft das nicht, es geht nur um diesen einen Text.

Eine schon installierte Web-App behält ihren alten Namen. Der Name unter dem Symbol auf dem Startbildschirm wird bei der Installation festgelegt. Browser übernehmen spätere Änderungen erst verzögert oder gar nicht. Um den neuen Namen dort zu sehen, entfernst du die App und installierst sie neu.

Die Android-App heißt weiter „Tunetorch“, und das bleibt so. Sie kann mehrere Server verwalten. Bei drei eingetragenen Servern gäbe es keine richtige Antwort, welcher Name auf dem Startbildschirm stehen soll. In der App selbst siehst du deinen Server-Namen ganz normal in der Kopfzeile.

Läuft dein Abo aus, heißt der Server wieder „Tunetorch“. Dein Name bleibt gespeichert und ist sofort wieder da, sobald Pro zurück ist.

Zeitzone

Der Server läuft ab Werk in Europe/Berlin. Die Zeitzone setzt du nicht per Docker-Variable, sondern in der Oberfläche (Server-Einstellungen → Zeitzone). Dort wählst du sie aus der vollständigen IANA-Liste.

Sie wirkt auf die Zeitstempel im Log, alle Datumsangaben und die festen Uhrzeiten der Wartungs-Tasks. Eine Änderung gilt 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 (besorgt das Zertifikat selbst):

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 Header X-Forwarded-For. Aus ihm liest Tunetorch die echte IP des Aufrufers für den Brute-Force-Schutz. Wie viele Proxies davorstehen, gibst du mit TT_TRUSTED_PROXIES an (Standard 1).

Für große Uploads brauchst du unter Nginx außerdem 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/                dauerhafte Sicherheitsdaten (Sperren, Token-Sperrliste)
├── upload_temp/          laufende Upload-Sitzungen
└── temp/                 Exporte und kurzlebige Zwischendateien

Für ein Backup reicht dieses eine Verzeichnis, siehe Sicherheit & Datensicherung.

Nächster Schritt

Zurück zur Dokumentations-Übersicht