Für Radarr & Sonarr

Jeder Titel im richtigen Ordner, von Ihren Regeln entschieden.

Routarr liest Ihre Bibliotheken, reichert jeden Titel aus den von Ihnen geordneten Metadatenquellen an und entscheidet, in welchen Stammordner er gehört. Sie sehen zuerst den ganzen Plan, geschrieben wird erst, wenn Sie es sagen.

Selbst gehostet. Ein Container. Der Probelauf bleibt an, bis Sie ihn ausschalten.

Abflüge · Probelauf
Der Plan des Probelaufs: sechs Abflüge, die Regel, die jeden entschieden hat, sein Ziel, sein Gate und sein Status.
TitelÜber RegelZielGateStatus
#10Japan-Animation/movies/animeRADARRvorgeschlagenRadarr
#20Konzertfilme/movies/concertsRADARRvorgeschlagenRadarr
#10Japan-Animation/tv/animeSONARRbestätigenSonarr
#30Familie & Kinder/movies/kidsRADARRvorgeschlagenRadarr
keine Regel trifft zu/moviesRADARRbleibtRadarr
#20Konzertfilme/movies/concertsRADARRam PlatzRadarr
20 geprüft · 13 vorgeschlagen · 7 am PlatzKlicken Sie einen Abflug an, um zu sehen, warum er dorthin geht
  • v0.1.0
  • GPLv3-Lizenz
  • amd64 & arm64
  • Keine Telemetrie

Die erste zutreffende Regel gewinnt. Ausschlüsse können ihr Veto einlegen. Alles wird erklärt.

In aktiver Entwicklung. Regelwerk und Schutzmechanismen sind stabil. Die Oberfläche wird sich weiter verändern.

Die Lücke

Ihre Arrs wissen das alles bereits. Nichts davon wählt einen Ordner.

Routarr ist genau diese fehlende Entscheidungsschicht: ein Ort, an dem die Logik lebt, mit den Ordnern, die Ihre Arrs schon haben, und per Webhook entscheidet es schon bevor der Download ankommt, solange der Ordner noch leer ist und sich nichts bewegen muss.

Was die Nutzlast bereits enthältWo es landet

  • Akira (1988)AnimationScience Fictionja15/movies
  • Heat (1995)CrimeThrilleren15/movies
  • My Neighbor TotoroAnimationFamilyjaU/movies
  • Perfect BlueAnimationThrillerja18/movies
  • Stop Making SenseDocumentaryMusicenUconcert/movies

von keiner Regel gelesenein Ordner, fünf Filme

Von Routarr gelesenWo es landet

  • Akira (1988)AnimationScience Fictionja15#10/movies/anime
  • Heat (1995)CrimeThrilleren15/movies
  • My Neighbor TotoroAnimationFamilyjaU#30/movies/kids
  • Perfect BlueAnimationThrillerja18#10/movies/anime
  • Stop Making SenseDocumentaryMusicenUconcert#20/movies/concerts
So funktioniert es

Vier Schritte, und Sie dürfen nach dem dritten aufhören.

Nichts wird geschrieben, bevor eine ausdrückliche Aktion es verlangt, und der globale Probelauf blockiert Schreibzugriffe am Server, ganz gleich was die Oberfläche tut.

Der SchrittLiestSchreibt

01

Sync

Liest Filme, Serien, Tags und Stammordner von jedem verbundenen Radarr und Sonarr. Eine leere Antwort wird nie als Massenlöschung verstanden.

Radarr, Sonarr

nichts

02

Anreichern

Genres, Sprache und Altersfreigabe kommen mit der Synchronisation gratis. TMDb ergänzt Schlagwörter und Land: ein Aufruf je Titel, zwischengespeichert, entdoppelt, mit begrenzter Parallelität.

TMDb, AniList, OMDb…

seinen eigenen Cache

03

Entscheiden

Regeln laufen nach aufsteigender Priorität. Die erste Übereinstimmung gewinnt. Ausschlüsse legen ihr Veto gegen eine sonst zutreffende Regel ein. Was nirgends passt, fällt an Ihre Standardkategorie.

Ihre Regeln

einen Plan, den Sie lesen können

04

Anwenden

Verschiebungen werden je Instanz und Zielordner gebündelt, über die Arr-API geschrieben und dann neu eingelesen. Jede angewandte Verschiebung lässt sich zurücknehmen.

den Plan, den Sie freigegeben haben

Ihre Bibliothek

ein Schritt schreibt in Ihre Bibliothekund der globale Probelauf-Schalter blockiert genau den am Server

Der Probelauf-Bildschirm: 20 geprüfte Einträge, 13 nötige Verschiebungen, 7 bereits korrekt, und eine Tabelle der vorgeschlagenen Verschiebungen mit Quellordner, Zielordner, zutreffender Regel, Konfidenz und Begründung.
Ein Probelauf: 13 vorgeschlagene Verschiebungen, jede mit ihrem Warum, noch nichts geschrieben.
Die Regel-Engine

28 Bedingungen, nach Ihrer Logik verknüpft.

Verknüpfen Sie Bedingungen mit ALLE oder BELIEBIGE, ergänzen Sie ausdrückliche Ausschlüsse, ordnen Sie Regeln nach Priorität. Genre, Schlagwort, Originalsprache, Land, Altersfreigabe, Jahr, Status, aktueller Ordner, Titel, externe IDs, Alter, dazu Signale, die nur Ihr Arr hat: Tags, Sonarrs Serientyp, Belegung auf der Platte und Staffelanzahl.

Japan-Animation

Priorität 10Filme & Serien

leitet weiter nach anime

Bedingungen

AlleMindestens eine

original_languageist eines vonja

genre_containsenthältAnimation

Außer wenn

certification_inist eines vonGUTV-Y

Ausschlüsse sind der Grund, warum das funktioniert. „Japanische Animation“ würde Mein Nachbar Totoro verschlucken. Der bewusste Ausschluss jugendfreier Freigaben übergibt ihn stattdessen an kids, und die Oberfläche sagt das auch.

Regeln lassen sich als JSON exportieren und importieren, also außerhalb der Anwendung versionieren, und eine Vorschau zeigt genau, was eine Änderung bewirken würde, bevor sie gespeichert wird.

Nachvollziehbarkeit

Jede Entscheidung zeigt ihren Rechenweg, auch die Regeln, die verloren haben.

Eine Einstufung, die Sie nicht prüfen können, ist eine Einstufung, der Sie nicht trauen können. Routarr hält Bedingung für Bedingung fest, was erwartet und was beobachtet wurde, für die siegreiche Regel wie für jede Regel, die nicht gewonnen hat.

Akira (1988) · jede Regel, die ihn geprüft hat

#10

Japan-Animation

hat gewonnen

erfüllt — original_languageerwartet ja
beobachtet ja

erfüllt — genre_containserwartet Animation
beobachtet Animation, Science Fiction

erfüllt — certification_inerwartet not G, U, TV-Y
beobachtet 15

weitergeleitet nach anime, 70% Konfidenz
#20

Konzertfilme

passt nicht

nicht erfüllt — genre_containserwartet Documentary, Music
beobachtet Animation, Science Fiction

eine Bedingung fehlt
#30

Familie & Kinder

passt nicht

nicht erfüllt — certification_inerwartet G, U, TV-Y
beobachtet 15

erfüllt — genre_containserwartet Animation
beobachtet Animation, Science Fiction

Genre passt, Altersfreigabe nicht

Die Engine selbst schreibt niemals Fließtext: sie liefert Schlüssel und Parameter, und der Text entsteht in Ihrer Sprache erst bei der Anzeige, die Begründungen sind in allen 26 Sprachen übersetzt und nicht im Moment ihrer Berechnung auf Englisch eingefroren.

Das Erklärungsfenster für Akira: vorgeschlagene Kategorie anime mit 70 % Konfidenz, die TMDb-Metadaten und jede Regel mit ihren Bedingungen als erfüllt oder nicht erfüllt markiert.
Sicherheit

Nichts wird geschrieben, bevor sechs Tore zustimmen.

Routarr verschiebt Dateien auf der Platte. Jedes dieser Tore ist standardmäßig aktiv, sie laufen in dieser Reihenfolge, und das erste, das widerspricht, stoppt die übrigen. Das erste allein genügt, um die ganze Anwendung schreibgeschützt zu machen.

  1. 01

    Globaler Testlauf

    lehnt ab

    Ab dem ersten Start aktiv. Solange er an ist, wird nichts geschrieben, ganz gleich, worauf Sie klicken und welche Automatik aktiviert ist.

  2. 02

    Obergrenze pro Durchlauf

    lehnt ab

    Eine harte Obergrenze dafür, wie viele Einträge ein einzelner Anwendungslauf berühren darf. Eine ganze Bibliothek neu einzuordnen ist eine eigene, bewusste Handlung.

  3. 03

    Erreichbarkeit

    fragt

    Ein Ziel, das beim letzten Nachsehen nicht geantwortet hat. Ein NAS im Ruhezustand lässt sich nicht von einer toten Platte unterscheiden, also fragt dieses Tor, statt abzulehnen.

  4. 04

    Kapazität

    fragt

    Der Plan gewogen gegen den freien Platz, den die Synchronisation bereits erfasst hat, und gezählt werden nur die Bytes, die das Dateisystem wechseln.

  5. 05

    Bestätigungsschwelle

    fragt

    Ab einer von Ihnen gewählten Zahl ist eine zweite, ausdrückliche Bestätigung nötig, erkannt an einem stabilen Fehlercode, nicht am Abgleich englischen Textes.

  6. 06

    Erneute Prüfung beim Anwenden

    lehnt ab

    Jede Entscheidung wird erneut gegen die aktuellen Regeln und die aktuelle Bibliothek geprüft. Ein Vorschlag, den die Regeln nicht mehr rechtfertigen, wird abgelehnt statt ausgeführt.

lehnt abbricht die Anwendung abfragtstellt unter eigenem Namen eine Frage, die Sie beantworten

Automatisches Anwenden gibt es, und es ist standardmäßig aus. Aktiviert berührt es nur Titel ohne Dateien auf der Platte, den Fall, in dem ein Ordnerwechsel ein Metadaten-Schreibvorgang ist und sich nichts bewegt. Alles bereits Heruntergeladene bleibt in der menschlichen Warteschlange.

Stammordner

Ihre Ordner, Ihre Namen, nichts erfunden.

Routarr legt niemals eine Bibliotheksstruktur an. Es liest die Stammordner, die Radarr und Sonarr melden, und wo Sie ein Ziel wollen, das dort nicht steht, tragen Sie es hier ein und es wird so gekennzeichnet. So oder so hängen Sie es an eine Kategorie, die Sie benannt haben, und ein deklarierter Ordner übernimmt freien Platz und Erreichbarkeit vom synchronisierten Ordner, unter dem er liegt.

PfadInstanzHerkunftFreier PlatzKategorie

/moviesRadarrsynchronisiert2.4 TiBstandard

/movies/animeRadarrdeklariert2.4 TiBanime

/movies/kidsRadarrdeklariert2.4 TiBkids

/movies/concertsRadarrdeklariert2.4 TiBconcerts

/tvSonarrsynchronisiert6.1 TiBstandard

/tv/animeSonarrsynchronisiert6.1 TiBanime

/mnt/archiveSonarrsynchronisiertnicht erreichbarohne Kategorie

sieben Ziele auf zwei Instanzendrei hier deklariert, vier von den Arrs gelesen

Freier Speicher und Erreichbarkeit kommen direkt vom Arr. Zwei Ordner, die auf einer Instanz dieselbe Kategorie beanspruchen, werden abgelehnt statt stillschweigend aufgelöst, und eine Kategorie, die kein Ordner bereitstellt, wird gemeldet, bevor sie Ihre Medien unbemerkt übergehen kann.

Die Stammordner-Ansicht: sieben Ordner auf Radarr und Sonarr, jeder mit Pfad, freiem Platz, Erreichbarkeit und zugeordneter Kategorie.
Sieben Ordner auf zwei Instanzen, jeder einer Kategorie zugeordnet.
Funktionen

Alles, was es außerdem kann.

Ein Dashboard über alle verbundenen Instanzen: was erfasst ist, was angereichert ist, was auf Sie wartet.

Das Dashboard: 14 Filme, 6 Serien, 4 aktive Regeln, 13 offene Entscheidungen, vollständige TMDb-Abdeckung und beide Instanzen, Radarr und Sonarr, als verbunden gemeldet.

Datenblattv0.1.0

Instanzen

beliebig vieleMehrere Server

Beliebig viele Radarr- und Sonarr-Server, jeder mit eigenem Synchronisationsintervall, eigenen Ordnern und Zuordnungen.

Eingang

eine geheime URL je InstanzWebhooks in Echtzeit

Eine geheime URL je Instanz. Neuzugänge werden sofort synchronisiert, angereichert und bewertet, statt beim nächsten Abruf.

Vorrang

geht jeder Regel vorÜberschreiben und zurücknehmen

Heften Sie einen Titel an eine Kategorie, und die Engine hört auf zu diskutieren, eine Überschreibung schlägt jede Regel. Jede angewandte Verschiebung lässt sich aus der Historie zurücknehmen.

Beobachtbarkeit

/metrics, derselbe API-SchlüsselPrometheus-Metriken

Bibliotheksgröße, Entscheidungen nach Kategorie und Status, Zustand der Instanzen und der Schutzgeländer, hinter demselben API-Schlüssel.

Benachrichtigungen

ein generischer JSON-WebhookAusgehende Benachrichtigungen

Ein generischer JSON-Webhook, Discord, Gotify, ntfy, Apprise, ausgelöst bei einem Zustandswechsel, nie in einer Schleife.

Portabilität

AES-256-GCM im RuhezustandPortable Konfiguration, versiegelte Schlüssel

Regeln, Kategorien, Zuordnungen und Überschreibungen lassen sich als JSON exportieren und zwischen Installationen mitnehmen. Arr-API-Schlüssel sind AES-256-GCM-verschlüsselt und verlassen das System nie.

Installation

Läuft mit einem docker compose up.

Ein Image trägt Backend und Oberfläche, für amd64 und arm64, ein Synology- oder QNAP-NAS, Unraid, TrueNAS, ein Raspberry Pi oder ein schlichter VPS. Compose-Datei speichern, starten, und der erste Lauf braucht keine Konfigurationsdatei.

  1. 01

    mkdir -p data && sudo chown 1000:1000 data

    Der Container läuft als uid 1000 und gibt alle Capabilities ab, also muss ihm das Volume gehören.

  2. 02

    docker compose up -d

    Ein Image, Server und Oberfläche zusammen. Sonst ist nichts zu installieren.

  3. 03

    docker exec routarr cat /data/routarr.api_key

    Der Schlüssel entsteht beim ersten Start und wird neben die Datenbank geschrieben. Das Log zeigt ihn einmal, die Datei behält ihn.

  4. 04

    http://localhost:9876

    Der globale Probelauf ist bereits an. Es kann nichts geschrieben werden, solange Sie ihn nicht ausschalten.

docker-compose.yml
services:
  routarr:
    image: ghcr.io/routarr/routarr:latest
    container_name: routarr
    ports:
      - "9876:9876"
    volumes:
      - ./data:/data
    restart: unless-stopped
    cap_drop:
      - ALL
    security_opt:
      - no-new-privileges:true

Sichern Sie routarr.db und routarr.key gemeinsam. Ohne den Schlüssel sind die gespeicherten Arr-Zugangsdaten nicht wiederherstellbar.

Dann: Ihre Arrs verbinden, Ordner auf Kategorien abbilden, eine Regel schreiben und in der Vorschau ansehen, einen Probelauf fahren, und den globalen Probelauf erst ausschalten, wenn Ihnen der Plan zusagt.

Fragen

Bevor Sie es installieren.

Die meisten Antworten unten sind nein, und das ist das Nützlichste, was dieser Abschnitt zu sagen hat.

Die SorgeDie AntwortWas es sichert

Verschiebt es meine Dateien?

nur wenn Sie zweimal fragen

Der globale Probelauf, standardmäßig an

Der globale Probelauf ist ab dem ersten Start aktiv, die Option, Dateien auf der Platte zu verschieben, ist standardmäßig nicht gesetzt, und ab einer Schwelle verlangt das Anwenden eine ausdrückliche Bestätigung. Ohne die Verschiebe-Option richtet Routarr nur den Bibliothekseintrag neu aus und lässt die Dateien, wo sie sind.

Benennt es meine Ordner um?

nein

Der Stammordner, nicht der Name

Ein Verschieben ändert den Stammordner über Ihrem Titel und behält den Ordnernamen exakt so, wie er ist, eine Plex- oder Jellyfin-Bibliothek, die darauf zeigt, funktioniert weiter.

Brauche ich einen TMDb-Schlüssel?

nein

Die Arrs sind eine eigene Quelle

Radarr und Sonarr sind selbst eine Metadatenquelle, sie liefern bereits Genres, Originalsprache und Altersfreigabe, und Routarr liest sie aus derselben Antwort, mit der es die Bibliothek synchronisiert. Für Schlagwörter und Herkunftsland kommt auch AniList ohne Schlüssel aus. TMDb, OMDb und TheTVDB stehen bereit, wenn Sie sie wollen. Quellen sind eine geordnete Liste: Sie entscheiden, wer bei Widerspruch gewinnt.

Ersetzt es Radarr oder Sonarr?

nein

Zwei Felder, über ihre eigene API

Es versucht es bewusst nicht. Routarr verwaltet niemals Downloads, Indexer oder die Bibliothek selbst. Es schreibt über die Arr-API genau zwei Dinge, den Stammordner und den Pfad, und bittet dann um einen erneuten Scan.

Funkt es nach Hause?

niemals

Keine ausgehende Anfrage, die niemand wollte

Keine Telemetrie, keine Analytik, keine Update-Prüfung. Die einzigen ausgehenden Aufrufe gehen an Ihre Radarr- und Sonarr-Instanzen, an die Metadatenquellen, die Sie aktivieren (TMDb, AniList, Jikan, OMDb, TheTVDB), an Ihren OpenID-Connect-Anbieter, falls Sie einen nutzen, und an einen Benachrichtigungs-Webhook, falls Sie einen einrichten.

Kann ich es hinter einen Reverse Proxy stellen?

ja

Eine Umgebungsvariable

Auch unter einem Unterpfad. Setzen Sie ROUTARR_BASE_PATH=/routarr, und die API, die Oberfläche und die Webhook-URLs ziehen mit, ohne das Image neu zu bauen.

Worauf läuft es?

ein Pi genügt

Ein Image, eine Datei

Ein Docker-Image für amd64 und arm64, ein Pi oder ein N100 genügt also. Der Speicher ist eine einzelne SQLite-Datei. Es läuft kein Datenbankdienst.

Schluss mit der Ordnerwahl von Hand.

Lesen Sie den Plan, behalten Sie, was Ihnen zusagt, und überlassen Sie den Rest den Regeln.

Was Sie gerade gesehen haben

Es kann nichts schreiben, bevor Sie es erlauben

Der globale Probelauf ist ab dem ersten Start aktiv, und fünf weitere Tore stehen dahinter.

Jede Entscheidung zeigt ihren Rechenweg

Was jede Bedingung erwartet hat, was sie beobachtet hat, und die Regeln, die verloren haben.

Ein Image, eine Datei, ein Port

amd64 und arm64, eine einzige SQLite-Datei, kein Datenbankdienst.