Service Layer (native, systemd)


All Services run a fully native, systemd-managed media-automation stack with consistent permissions, predictable service behavior, and seamless integration with the storage layer.

Each application runs under its own dedicated user with standardized unit patterns, shared group access, and controlled file ownership. A unified Samba share (/media/plutus) provides a single source of truth for downloads and organized media.


Services Overview

Service Binary / Path User Config / Data
Sonarr /opt/Sonarr/Sonarr sonarr /var/lib/sonarr
Radarr /opt/Radarr/Radarr radarr /var/lib/radarr
Prowlarr /opt/Prowlarr/Prowlarr prowlarr /var/lib/prowlarr
qBittorrent /usr/bin/qbittorrent-nox qbittorrent-nox /home/qbittorrent-nox/.config/qBittorrent
NZBGet /home/plutus/nzbget/nzbget plutus /home/plutus/nzbget

Systemd Unit Patterns (PiJarr)

Units live in /etc/systemd/system/ and follow this pattern:

Ini, TOML

WorkingDirectory=/opt/<App>        
User=<app> 
Group=media        
UMask=0002        
ExecStart=/opt/<App>/... -data=/var/lib/<app>
Restart=on-failure

Note: NZBGet is a manual install running under the plutus user in forking mode.

Permissions Model


Samba Integration & Share Design

Share Definition

Ini, TOML

[Cornucopia]
   path = /media/plutus
   comment = Shared RAID Array, Plutus
   browsable = yes
   writable = yes
   guest ok = yes
   create mask = 0777
   directory mask = 0777
   force user = plutus

Directory Layout

Plaintext

/media/plutus
  ├─ dist/         # static site (NGINX reads)
  ├─ downloads/    # staging for download clients
  ├─ Media/
  │   ├─ Movies/
  │   ├─ Shows/
  │   ├─ Music/
  │   ├─ Pics/
  │   └─ Roms/
  └─ nginx.conf

Media Pipeline (End-to-End Flow)

  1. Indexing: Prowlarr manages indexers and supplies Sonarr/Radarr with search endpoints.

  2. Requesting: Sonarr/Radarr schedule searches and send jobs to qBittorrent-nox or NZBGet.

  3. Downloading: Clients write to /media/plutus/downloads.

  4. Importing: Sonarr/Radarr detect completed downloads, rename, and move files into /media/plutus/Media/<type>.

  5. Serving: Files are available via Samba and consumed by clients; static site served from /media/plutus/dist by NGINX gateway.