Skip to content

Konfiguration

Alle Einstellungen erfolgen über Umgebungsvariablen mit dem Präfix FunkArr__. Der doppelte Unterstrich (__) trennt verschachtelte Abschnitte — das ist die standardmäßige ASP.NET Core Konfigurationsbindung.

Die Standardwerte funktionieren sofort für die lokale Entwicklung. Für den Produktivbetrieb musst du normalerweise nur FunkArr__ApiKey und FunkArr__Download__Path setzen.

Allgemein

VariableStandardBeschreibung
FunkArr__ApiKeyfunkarr-default-api-keyAPI-Schlüssel für Prowlarr/Sonarr/Radarr
FunkArr__DataPathdataBasispfad für Datenbank, Regelwerke, temporäre Dateien

API-Schlüssel

Der API-Schlüssel authentifiziert alle Anfragen von Prowlarr, Sonarr und Radarr. Sowohl die Indexer-API (/index/api) als auch die Download-Client-API (/download/api) benötigen diesen Schlüssel. Verwende denselben Wert bei der Konfiguration von FunkArr in deinen *arr-Apps.

WARNING

Ändere den Standard-API-Schlüssel im Produktivbetrieb. Jeder mit dem Schlüssel kann über deine FunkArr-Instanz suchen und herunterladen.

Datenpfad

Der Datenpfad ist das Stammverzeichnis für alle persistenten Daten. FunkArr erstellt darin folgende Struktur:

data/
  funkarr.db            # SQLite-Datenbank (wenn kein PostgreSQL verwendet wird)
  rulesets/
    community/          # Automatisch synchronisierte Community-Regelwerke
    local/              # Deine eigenen Regelwerke
    version.txt         # Aktuell installierte Community-Regelwerk-Version
  temp/                 # Temporäre Dateien während Download/Remux

Downloads

VariableStandardBeschreibung
FunkArr__Download__Pathdata/downloadsStamm-Download-Verzeichnis
FunkArr__Download__ConcurrentDownloads3Maximale parallele Downloads

Download-Pfad

Der Download-Pfad enthält zwei Unterverzeichnisse, die FunkArr automatisch verwaltet:

  • incomplete/ — aktive Downloads und laufende Remux-Operationen
  • complete/ — fertige Downloads, nach Kategorie-Unterverzeichnissen organisiert

Sonarr und Radarr überwachen das complete/-Verzeichnis auf fertige Dateien. Stelle sicher, dass dieser Pfad sowohl für FunkArr als auch für deine *arr-Apps erreichbar ist (typischerweise über ein gemeinsames Docker-Volume-Mount).

Parallele Downloads

Steuert, wie viele Videos gleichzeitig heruntergeladen und remuxed werden. Jeder Download verwendet einen FFmpeg-Prozess. Erhöhe den Wert bei schnellen Verbindungen mit verfügbarer CPU; verringere ihn bei Timeouts oder Ressourcenproblemen.

Kategorien

Kategorien ordnen Sonarr/Radarr-Download-Kategorien Unterverzeichnissen innerhalb von complete/ zu. Konfiguriere eine Kategorie pro *arr-App-Typ:

FunkArr__Download__Categories__0__Name=tv
FunkArr__Download__Categories__0__Dir=tv
FunkArr__Download__Categories__1__Name=movies
FunkArr__Download__Categories__1__Dir=movies
VariableStandardBeschreibung
FunkArr__Download__Categories__N__NameKategoriename wie in Sonarr/Radarr konfiguriert
FunkArr__Download__Categories__N__DirUnterverzeichnis innerhalb von complete/ für diese Kategorie

Wenn Sonarr eine Download-Anfrage mit der Kategorie tv sendet, landet die fertige Datei in complete/tv/. Das N im Variablennamen ist ein nullbasierter Index — verwende 0, 1, 2 usw. für jede Kategorie.

Regelwerke

VariableStandardBeschreibung
FunkArr__RuleSet__Repositoryst0o0/funkarrGitHub-Repository für Community-Regelwerke
FunkArr__RuleSet__VersionlatestZu verwendende Regelwerk-Version
FunkArr__RuleSet__RefreshEnabledtrueAutomatische Regelwerk-Updates aktivieren

Repository

Das GitHub-Repository, in dem Community-Regelwerke als Release-Assets veröffentlicht werden. Ändere dies nur, wenn du einen Fork mit eigenen Regelwerk-Releases betreibst.

Version

Setze auf latest, um immer das neueste Community-Regelwerk-Release zu verwenden. Pinne auf einen bestimmten Versions-Tag (z.B. rulesets-v0.2.0), um automatische Updates zu verhindern — nützlich, wenn ein neues Release ein Mapping bricht, auf das du angewiesen bist.

Aktualisierung

Wenn aktiviert, prüft FunkArr alle 30 Minuten auf neue Regelwerk-Releases und lädt Updates automatisch herunter. Deaktiviere dies, wenn du eine bestimmte Version pinnst oder in einer isolierten Umgebung arbeitest.

Metadaten

VariableStandardBeschreibung
FunkArr__Tmdb__ApiKey(leer)TMDB API-Schlüssel
FunkArr__Tvdb__ApiKey(leer)TVDB API-Schlüssel

TMDB

Ein TMDB-API-Schlüssel ermöglicht die Metadaten-Auflösung für Filme und Serien. FunkArr verwendet ihn, um Mediathek-Einträge dem richtigen TMDB-Titel zuzuordnen und so die Genauigkeit für Radarr und Sonarr zu verbessern.

Einen kostenlosen API-Schlüssel gibt es unter themoviedb.org/settings/api.

TVDB

Ein TVDB-API-Schlüssel ermöglicht die Episodenguide-Auflösung. FunkArr nutzt TVDB-Daten, um datumsbasierte Mediathek-Einträge Staffel-/Episodennummern zuzuordnen, wenn das Regelwerk eine Airdate-Strategie verwendet.

Einen API-Schlüssel gibt es unter thetvdb.com/api-information.

TIP

Beide Schlüssel sind optional, aber empfohlen. Ohne sie verlässt sich FunkArr ausschließlich auf Regelwerk-Muster für die Zuordnung, was funktioniert, aber weniger Ergebnisse liefert.

Scoring

VariableStandardBeschreibung
FunkArr__Scoring__PoolSize4Parallele Scoring-Worker

Der Scoring-Pool verarbeitet Mediathek-Suchergebnisse parallel gegen Regelwerke. Jeder Worker wertet einen Regelwerk-Match gleichzeitig aus. Erhöhe den Wert für schnellere Suchantworten auf Multi-Core-Systemen; der Standardwert von 4 funktioniert für die meisten Setups gut.

Match-Verlauf

VariableStandardBeschreibung
FunkArr__MatchHistory__MaxSnapshots100Maximale Anzahl von Match-History-Snapshots
FunkArr__MatchHistory__MaxAgeDays30Tage, bevor alte Snapshots gelöscht werden
FunkArr__MatchHistory__SnapshotInterval20Intervall zwischen Snapshots

Der Match-Verlauf verfolgt, welche Regelwerk-Zuordnungen erfolgreiche Downloads erzeugt haben. Diese Daten fließen zurück in das Scoring — Regeln, die historisch korrekte Matches erzeugt haben, erhalten einen Konfidenz-Boost.

  • MaxSnapshots — begrenzt den Speicher für den Match-Verlauf. Höhere Werte liefern mehr historische Daten für das Scoring, verbrauchen aber mehr Speicherplatz.
  • MaxAgeDays — entfernt Snapshots, die älter als diese Anzahl Tage sind. Mediathek-Inhalte ändern sich regelmäßig, sodass alte Match-Daten weniger relevant werden.
  • SnapshotInterval — steuert, wie oft neue Snapshots erstellt werden. Niedrigere Werte erfassen detailliertere Daten, erhöhen aber die Datenbankschreibvorgänge.

PostgreSQL

Standardmäßig verwendet FunkArr SQLite mit der Datenbankdatei unter {DataPath}/funkarr.db. Setze FunkArr__Postgres__Host, um auf PostgreSQL umzustellen.

VariableStandardBeschreibung
FunkArr__Postgres__Host(leer)PostgreSQL-Host — setzen, um PostgreSQL zu aktivieren
FunkArr__Postgres__Port5432PostgreSQL-Port
FunkArr__Postgres__User(leer)PostgreSQL-Benutzer
FunkArr__Postgres__Password(leer)PostgreSQL-Passwort
FunkArr__Postgres__DatabasefunkarrPostgreSQL-Datenbankname

INFO

Wenn Host leer ist oder nicht gesetzt wurde, verwendet FunkArr SQLite. Das ist die empfohlene Standardeinstellung für Einzelinstanz-Setups. Verwende PostgreSQL, wenn du externes Datenbankmanagement brauchst oder skalieren möchtest.

Logging

FunkArr verwendet Serilog für strukturiertes Logging. Log-Level können pro Namespace angepasst werden:

VariableStandardBeschreibung
Serilog__MinimumLevel__DefaultInformationGlobales Mindest-Log-Level
Serilog__MinimumLevel__Override__AkkaWarningAkka.NET Actor-System Log-Level
Serilog__MinimumLevel__Override__Microsoft.AspNetCoreWarningASP.NET Core Request Log-Level

Gültige Level: Verbose, Debug, Information, Warning, Error, Fatal.

Setze den Standard auf Debug zur Fehlersuche. Die Akka- und ASP.NET-Overrides sind standardmäßig auf Warning gesetzt, um das Rauschen vom Actor-System und der HTTP-Pipeline zu reduzieren.

Netzwerk

FunkArr lauscht auf Port 6969 im Container. Mappe ihn auf einen beliebigen Host-Port in deiner Docker Compose:

yaml
ports:
  - "8080:6969"   # Zugriff über http://localhost:8080

FFmpeg

FFmpeg muss im PATH verfügbar sein — es ist im offiziellen Docker-Image enthalten. FunkArr verwendet FFmpeg um:

  • Videostreams herunterzuladen (einschließlich HLS .m3u8)
  • Nach MKV zu remuxen (kopiert Video-/Audio-Codecs ohne Neucodierung)
  • Untertitel als SRT-Spuren mit deutschem Sprach-Tag einzubetten

Es gibt keine Konfigurationsoptionen für das FFmpeg-Verhalten. Der Setup-Health-Check (/api/system/setup) überprüft, ob FFmpeg verfügbar ist.

Health Checks

FunkArr stellt drei Health-Endpunkte bereit, von denen keiner konfigurierbar ist:

EndpunktZweck
/healthzVollständiger Health-Check (Datenbank, Actor-System) — gibt 200 oder 503 zurück
/aliveEinfacher Liveness-Probe — gibt immer 200 zurück
/api/system/setupSetup-Validierung — prüft API-Schlüssel, Verzeichnisse, FFmpeg, API-Konnektivität

Verwende /healthz für Container-Orchestrierungs-Health-Probes und /api/system/setup in der Web-Oberfläche, um deine Konfiguration zu überprüfen.