Ultraseeedbox · Sabra Tank NL

Seedbox Refresh Plan

pikietchu Sonarr v4 · Prowlarr · Bazarr · Recyclarr Hardlink Architecture Anime + Tesla Native Screen
OVERALL PROGRESS — 0%
// Table of Contents
00

What's Changing & Why

Old Stack
Sonarr v3 (abandoned)
Jackett (manual per-app indexer config)
Single Sonarr for TV + Anime
No quality profile management
No subtitle automation
Split /files/ download structure
New Stack
Sonarr v4 (anime abs. numbering)
Prowlarr (configure once, sync everywhere)
Sonarr TV + Sonarr Anime (separate)
Recyclarr (TRaSH Guides auto-sync)
Bazarr (ASS + SRT auto-fetch)
Unified /data/ structure
ABetterTheater fullscreen (Tesla native screen)

New Folder Architecture

/home/pikietchu/data/
├── torrents/          ← ruTorrent downloads & seeds here
│   ├── tv/
│   ├── movies/
│   └── anime/
└── media/             ← hardlinked library, Plex reads here
    ├── tv/
    ├── movies/
    └── anime/
Why unified /data/?
Hardlinks only work within the same filesystem. Keeping torrents and media under one parent folder guarantees this is always true, and makes future migration to a home server trivial — one rsync command moves everything.

Port Reference

Prowlarr
127.0.0.1:9696
Indexer manager
Sonarr TV
127.0.0.1:8989
Standard TV series
Sonarr Anime
127.0.0.1:8990
Anime series only
Radarr
127.0.0.1:7878
Movies
Bazarr
127.0.0.1:6767
Subtitle automation
ruTorrent
127.0.0.1:8080
Torrent client (untouched)
01

Screenshot Everything First

Do not skip this phase
Once you wipe Jackett and Sonarr v3 you cannot recover your indexer API keys or tracker passkeys from the app. Do this before touching anything else.
02

Migrate Folder Structure

We're moving from the split /files/ structure to a unified /data/ structure. This is done via SSH before uninstalling anything so your existing data stays intact.

SSH Required
Open a terminal and connect: ssh pikietchu@[your-seedbox-hostname] — your hostname is visible in the USB dashboard.

Create New Structure

# Create the new unified data directory
mkdir -p ~/data/torrents/tv
mkdir -p ~/data/torrents/movies
mkdir -p ~/data/torrents/anime
mkdir -p ~/data/media/tv
mkdir -p ~/data/media/movies
mkdir -p ~/data/media/anime

Move Existing Downloads

# Move torrent files to new structure
# (rsync preserves hardlinks, mv does not)
rsync -av --remove-source-files ~/files/sonarr/ ~/data/torrents/tv/
rsync -av --remove-source-files ~/files/radarr/ ~/data/torrents/movies/

# Move media library to new structure
rsync -av --remove-source-files ~/media/TV\ Shows/ ~/data/media/tv/
rsync -av --remove-source-files ~/media/Movies/ ~/data/media/movies/
rsync -av --remove-source-files ~/media/Anime/ ~/data/media/anime/

Verify Move Completed

# Confirm files are in new locations
ls ~/data/torrents/tv/
ls ~/data/media/tv/

# Check nothing was left behind
ls ~/files/sonarr/
ls ~/files/radarr/
Verify Hardlinks Still Work
Run ls -i ~/data/torrents/tv/[any file] and ls -i ~/data/media/tv/[same file] — the inode number (first column) must be identical. If it is, hardlinks survived the rsync.
03

Uninstall Old Apps

In the USB dashboard, uninstall in this exact order. Select delete config/data each time. Do not touch ruTorrent.

04

Install New Apps

Install in this order from the USB dashboard app installer. Don't configure anything yet — just get them all installed and running first.

Second Sonarr Instance
Ultraseeedbox may label this as "Sonarr (2)" or allow you to name it during install. If the dashboard doesn't support two Sonarr instances natively, check their documentation or support chat — it's a common request on the Sabra Tank plan.
05

Configure Prowlarr

Prowlarr replaces Jackett. Configure it first — Sonarr and Radarr will sync their indexers from it automatically.

Add Indexers

Connect to Sonarr TV

Settings → Apps → Add Application → Sonarr

Prowlarr Server:  http://127.0.0.1:9696
Sonarr Server:    http://127.0.0.1:8989
API Key:          [Sonarr TV → Settings → General → API Key]
Sync Level:      Full Sync

Connect to Sonarr Anime

Settings → Apps → Add Application → Sonarr

Prowlarr Server:  http://127.0.0.1:9696
Sonarr Server:    http://127.0.0.1:8990
API Key:          [Sonarr Anime → Settings → General → API Key]
Sync Level:      Full Sync

Connect to Radarr

Settings → Apps → Add Application → Radarr

Prowlarr Server:  http://127.0.0.1:9696
Radarr Server:    http://127.0.0.1:7878
API Key:          [Radarr → Settings → General → API Key]
Sync Level:      Full Sync
06

Configure Sonarr — TV

Download Client (ruTorrent)

Settings → Download Clients → Add → rTorrent

Name:      ruTorrent
Host:      127.0.0.1
Port:      [your ruTorrent port]
URL Path:  /RPC2
Username:  pikietchu
Password:  [your USB password]
Category:  sonarr-tv
Directory: /home/pikietchu/data/torrents/tv/

Media Management

Settings → Media Management

 Rename Episodes:              ON
 Use Hardlinks instead of Copy: ON  ← critical
 Import Extra Files:            ON
  Extra file extensions: srt,ass,ssa,sub,idx

Episode naming:
{Series Title} - S{season:00}E{episode:00} - {Episode Title}

Root Folder:
/home/pikietchu/data/media/tv/

Quality Profile — Standard HD

Settings → Profiles → Add

Name:          Standard HD
Upgrade Until: Bluray-1080p

Quality order (top = most preferred):
   Bluray-1080p Remux
   Bluray-1080p
   WEB-DL-1080p
   WEBRip-1080p
   720p and below (disable)

Import Existing Library

07

Configure Sonarr — Anime

This is a completely separate Sonarr instance on port 8990. Same process as TV but with anime-specific settings.

Download Client (ruTorrent)

Settings → Download Clients → Add → rTorrent

Name:      ruTorrent
Host:      127.0.0.1
Port:      [your ruTorrent port]
URL Path:  /RPC2
Username:  pikietchu
Password:  [your USB password]
Category:  sonarr-anime
Directory: /home/pikietchu/data/torrents/anime/

Media Management

Settings → Media Management

 Rename Episodes:              ON
 Use Hardlinks instead of Copy: ON
 Import Extra Files:            ON
  Extra file extensions: srt,ass,ssa,sub,idx

Episode naming:
{Series Title} - S{season:00}E{episode:00} - {Episode Title} [{Quality Title}]

Root Folder:
/home/pikietchu/data/media/anime/

Quality Profile — Anime

Settings → Profiles → Add

Name:          Anime
Upgrade Until: Bluray-1080p

Quality order:
   Bluray-1080p Remux
   Bluray-1080p
   WEB-DL-1080p
   WEBRip-1080p

Custom Formats (Settings → Custom Formats → Add):
  +100 SubsPlease
  +100 Erai-raws
   +50 Dual Audio
   +30 BluRay
   -100 FRENCH
   -100 VOSTFR
   -100 DUBBED
Series Type Setting
When adding any anime series, set Series Type → Anime on each series page. This enables absolute episode numbering — critical for long runners like One Piece, Naruto, Bleach where season/episode numbering breaks down.

Import Existing Anime Library

08

Configure Radarr

Download Client

Settings → Download Clients → Add → rTorrent

Name:      ruTorrent
Host:      127.0.0.1
Port:      [your ruTorrent port]
URL Path:  /RPC2
Username:  pikietchu
Password:  [your USB password]
Category:  radarr-movies
Directory: /home/pikietchu/data/torrents/movies/

Media Management

Settings → Media Management

 Rename Movies:                ON
 Use Hardlinks instead of Copy: ON
 Import Extra Files:            ON
  Extra file extensions: srt,ass,ssa,sub,idx

Movie naming:
{Movie Title} ({Release Year}) {tmdb-{TmdbId}}

Root Folder:
/home/pikietchu/data/media/movies/

Import Existing Library

09

Configure Recyclarr

Recyclarr automatically syncs TRaSH Guides quality profiles and custom formats into Sonarr and Radarr. This means your quality settings stay best-practice without manual maintenance.

What is Recyclarr?
TRaSH Guides is a community-maintained set of optimal quality profiles for Sonarr/Radarr. Recyclarr reads a config file you write once, and keeps your apps synced to these profiles automatically. It handles the complex custom format scoring so you don't have to.

Install via SSH

# Check if available in USB dashboard first
# If not, install manually:

# Download latest release
mkdir -p ~/recyclarr
cd ~/recyclarr
wget https://github.com/recyclarr/recyclarr/releases/latest/download/recyclarr-linux-x64.tar.gz
tar -xzf recyclarr-linux-x64.tar.gz

# Initialize config
./recyclarr config create

Config File

Edit the generated config at ~/.config/recyclarr/recyclarr.yml:

sonarr:
  tv:
    base_url: http://127.0.0.1:8989
    api_key: [sonarr-tv-api-key]
    quality_profiles:
      - name: Standard HD
    custom_formats:
      - trash_ids:
          - 85c61753a347e0f938f5e2e2  # x265 HD
          - 9b27ab6498ec0f31a3353992  # x264

  anime:
    base_url: http://127.0.0.1:8990
    api_key: [sonarr-anime-api-key]
    quality_profiles:
      - name: Anime
    custom_formats:
      - trash_ids:
          - 026d5aadd1a6b4e550b134cb6 # Anime BD Tier 01
          - b4a1b3d705159cdca36d71e8  # v0 (release group)

radarr:
  movies:
    base_url: http://127.0.0.1:7878
    api_key: [radarr-api-key]
    quality_profiles:
      - name: Standard HD

Run Recyclarr

# Test sync (dry run first)
./recyclarr sync --dry-run

# If output looks correct, run for real
./recyclarr sync

# Set up a cron job to keep it synced weekly
crontab -e
# Add this line:
0 4 * * 0 /home/pikietchu/recyclarr/recyclarr sync
10

Configure Plex

Library Setup

Add Library → TV Shows
  Name: TV
  Folders:
    /home/pikietchu/data/media/tv/
    /home/pikietchu/data/media/anime/  ← add both to same TV library

Add Library → Movies
  Name: Movies
  Folders:
    /home/pikietchu/data/media/movies/

Settings

Settings → Transcoder → Hardware AccelerationEnabled
Settings → Transcoder → Generate video preview thumbnailsAs a media scan job
Settings → Library → Scan my library automaticallyEnabled
Settings → Library → Run a partial scan when changes are detectedEnabled
Settings → Network → Enable RelayEnabled (fallback for Tesla/Airbnb)
11

Configure Bazarr

Bazarr automatically fetches subtitles for your entire library and new downloads. For anime it will pull ASS fansub subtitles as primary and SRT as fallback — giving you full styled subs in Kodi and compatible subs for Tesla.

Connect to Sonarr TV

Settings → Sonarr

Address:  127.0.0.1
Port:     8989
API Key:  [Sonarr TV API key]
→ Test → Save

Connect to Sonarr Anime

Settings → Sonarr (second connection if supported)
or manage anime series manually within same Sonarr connection

Address:  127.0.0.1
Port:     8990
API Key:  [Sonarr Anime API key]
→ Test → Save

Connect to Radarr

Settings → Radarr

Address:  127.0.0.1
Port:     7878
API Key:  [Radarr API key]
→ Test → Save

Subtitle Providers

Add in this priority order under Settings → Providers:

1. OpenSubtitles.comFree account required — best general coverage
2. JimakuJapanese/anime ASS subtitle specialist
3. AnimetoshoAnime fansub subtitle archive
4. SubsceneGeneral fallback

Language Profiles

Settings → Languages → Add Profile

Profile: Anime
  Language: English
  Formats in priority order:
    1. ASS   ← fansub styled subs for Kodi
    2. SSA   ← older ASS format fallback
    3. SRT   ← Tesla/browser compatibility fallback

Profile: Standard
  Language: English
  Formats:
    1. SRT

Assign Profiles

12

Verify & Test

Before declaring victory, run through this verification checklist to confirm the full pipeline works end to end.

Pipeline Test

Hardlink Verification (SSH)

# Compare inode numbers — must be identical for hardlinks to be working
ls -i /home/pikietchu/data/torrents/tv/[downloaded-file.mkv]
ls -i /home/pikietchu/data/media/tv/[same-file-after-import.mkv]

# Example of correct output (same inode = hardlink confirmed):
48293847 /home/pikietchu/data/torrents/tv/show.mkv
48293847 /home/pikietchu/data/media/tv/Show/Season 1/show.mkv
#  ↑ same number ✓

# If numbers differ — hardlinks are not working
# Most likely cause: folders on different mount points

Repeat for Anime and Movies

13

Tesla Playback — Native Screen

Tesla Has No Native Local Video Playback
Tesla's USB media player supports audio only — video via USB is not supported on any Model 3. Tesla Theater only works with approved streaming services (Netflix, YouTube, Hulu). There is no file manager, no USB video, no sideloading of any kind. Playing your library on the Tesla screen requires going through the browser.

The best available option for native-feeling playback on the Tesla screen is Plex web via ABetterTheater — a fullscreen redirect trick using the YouTube app that removes all browser chrome and fills the entire display with your content. It's the same Plex web interface you already use, just actually fullscreen.

How ABetterTheater Works

Tesla's YouTube app can be used as a fullscreen browser launcher. ABetterTheater exploits this to open any URL — including Plex — in true fullscreen Theater mode, bypassing the normal browser UI chrome that clips the bottom of the screen.

Alternative: Direct Plex URL
You can also access Plex directly in the Tesla browser at app.plex.tv without ABetterTheater. The difference is ABetterTheater gives you true fullscreen via the YouTube Theater wrapper — the direct browser URL shows browser chrome around the video. Both work, fullscreen looks significantly better.

Browser Codec Reality on MCU3

Your 2023 Model 3 has MCU3 (AMD Ryzen) — the most capable Tesla infotainment hardware. The browser is Chromium-based and handles these natively without transcoding:

HEVC / H.265✓ Native decode on MCU3
H.264✓ Native decode — universal
AAC stereo✓ Native — required for direct play audio
FLAC / Opus (in video)✗ Not supported in browser — forces transcode
DTS / TrueHD / AC3✗ Not supported — forces transcode
ASS / SSA subtitles✗ Not supported — forces burn-in transcode
SRT subtitles✓ Native text render — no transcode needed
PGS / image subs✗ Not supported — forces burn-in transcode
The Subtitle Problem for Anime
ASS subtitles — which carry all your anime's custom fonts, positioning, and styling — cannot render in the Tesla browser. Plex will either burn them in (forcing a full video transcode and losing styling) or fall back to a plain SRT track if one exists. This is why having a clean SRT fallback track in every file matters. The SRT won't have animations or precise sign positioning, but it's readable without any transcoding penalty.

What This Means in Practice

For Tesla browser direct play with zero transcoding your files need:

Video:     HEVC Main 10   (MCU3 handles it natively)
Audio:     AAC stereo 256k   (keep as Track 2 — FLAC/Opus stays as Track 1)
Subtitles: SRT   (keep as Track 2 — ASS stays as Track 1 for Kodi)
Container: MKV or MP4  (both work in browser)

This means Tdarr's AAC compatibility track job and Bazarr's SRT fallback job are both essential — not optional. Files missing either will transcode on Tesla, causing buffering and quality loss.

Plex Settings for Tesla

In Plex web on your Tesla, set these to minimize unnecessary transcoding:

Quality → Video qualityOriginal (Maximum) — never let Plex downgrade unnecessarily
Quality → Allow insecure connectionsEnabled — reduces relay overhead
Subtitles → Subtitle modeShown with foreign audio — won't auto-force subs
Subtitles → Burn subtitlesOnly image formats — burns PGS but not SRT
14

Encoding Targets Reference

Every encoding decision below is driven by two device requirements: Kodi on Steam Deck (primary, full quality) and Plex browser on Tesla MCU3 (secondary, browser constraints). All other devices — Airbnb TVs, phones — are handled by Plex server-side transcoding and need no special consideration.

Target File Specification

anime_show_s01e01.mkv
├── Video:    HEVC Main 10
│             CRF 18–20 · -tune animation · yuv420p10leDirect play: Kodi ✓ · Tesla MCU3 ✓ · Plex apps ✓
│
├── Audio 1:  FLAC 2.0 or Opus   (DEFAULT — for Kodi)
├── Audio 2:  AAC 2.0 256k        (Tesla browser direct play)
├── Audio 3:  AAC 5.1 384k        (if source has surround — Airbnb TVs)
│
├── Sub 1:    ASS / SSA           (DEFAULT — full styling for Kodi)
└── Sub 2:    SRT                 (Tesla browser fallback — no transcode)

Tdarr Processing Pipeline

These are the only operations Tdarr should perform. Order matters — audio mux runs first since it's fast and safe, video re-encode last since it's slow and lossy.

① Audio — always runMissing AAC stereo track? → Mux AAC 2.0 256k from existing audio. Fast operation, no video touch.
② Audio surround — conditionalSource has surround + missing AAC 5.1? → Mux AAC 5.1 384k. Skip if source is stereo only.
③ Subtitles — flag onlyMissing SRT track? → Flag file for Bazarr, do not convert in Tdarr. Bazarr fetches proper timed SRT from providers.
④ Dolby Vision — convertDV detected? → Convert to HDR10. DV unsupported outside Apple ecosystem, breaks most players.
⑤ Video VC-1 / MPEG-2 — re-encodeOld codec detected → Re-encode to HEVC Main 10 CRF 18 -tune animation. Only affects old rips.
⑥ Existing HEVC — skip alwaysNever re-encode HEVC to HEVC. Generation loss with no meaningful size benefit.
⑦ Existing H.264 — skip by defaultLeave untouched unless storage is critical. H.264 plays everywhere already.

CRF Reference (When Re-encoding)

ffmpeg -i input.mkv \
  -c:v libx265 \
  -crf 18 \              # anime flat colors need lower CRF to prevent banding
  -preset slow \
  -tune animation \     # critical — optimises flat colors + sharp edges for anime
  -profile:v main10 \
  -pix_fmt yuv420p10le \ # preserve 10-bit colour depth
  -c:a copy \            # copy ALL existing audio tracks untouched
  -c:s copy \            # copy ALL existing subtitle tracks untouched
  output.mkv

# CRF guide:
# Anime BD source:       CRF 18
# Anime WEB-DL source:   CRF 20
# Live action BD:        CRF 20
# Live action WEB-DL:    CRF 22
# Never exceed CRF 23 for anything you intend to keep long term

Full Playback Compatibility Matrix

DeviceMethodAudio usedSubs used
Steam Deck (primary)Kodi — direct playFLAC / Opus (Track 1)ASS full styling
Tesla Model 3 2023Plex web via ABetterTheaterAAC (Track 2)SRT (Track 2)
Airbnb smart TVsPlex native appPlex transcodes as neededSRT or burn-in
Any phone / tabletPlex mobile appPlex transcodes as neededSRT or burn-in
Verification — Is Plex Direct Playing on Tesla?
While a file is playing on Tesla, open Plex on any browser → go to your server dashboard → Now Playing. If it says "Direct Play" the file is playing without transcoding. If it says "Transcode", the file is missing an AAC track, SRT track, or has a container issue. Use this to audit which files still need Tdarr processing.