Post

Prowlarr - Media search from the Arr family of applications

Prowlarr - Media search from the Arr family of applications

Prowlarr is an indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps. Prowlarr supports management of both Torrent Trackers and Usenet Indexers. It integrates seamlessly with LazyLibrarian, Lidarr, Mylar3, Radarr, Readarr, and Sonarr offering complete management of your indexers with no per app Indexer setup required (we do it all).

I use PostgreSQL instead of SQLite

Since this uses media from my NAS i have simply decided to run this as a Docker Container on UnRAID on my NAS instead of having it as part of my kubernetes cluster to remove the need to access the NAS media remotely

Kubernetes Manifest

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: prowlarr
    app.kubernetes.io/instance: prowlarr
    app.kubernetes.io/name: prowlarr
  name: prowlarr
  namespace: arr
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: prowlarr
  template:
    metadata:
      labels:
        app: prowlarr
        app.kubernetes.io/name: prowlarr
    spec:
      nodeSelector:
        worker: "true"
      containers:
      - image: hotio/prowlarr
        name: prowlarr
        ports:
        - containerPort: 9696
          name: web
          protocol: TCP
        env:
        - name: TZ
          value: Europe/London
        volumeMounts:
        - mountPath: "/config"
          readOnly: false
          name: config
      volumes:
        - name: config
          persistentVolumeClaim:
            claimName: prowlarr
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: prowlarr
  name: prowlarr
  namespace: arr
spec:
  ports:
  - name: web-tcp
    port: 9696
    protocol: TCP
    targetPort: 9696
  selector:
    app: prowlarr
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: prowlarr
  namespace: arr
  annotations: 
    kubernetes.io/ingress.class: traefik-external
    gethomepage.dev/href: "https://prowlarr.f9.casa"
    gethomepage.dev/enabled: "true"
    gethomepage.dev/description: Media Search
    gethomepage.dev/group: Media Management
    gethomepage.dev/icon: prowlarr.png
    gethomepage.dev/name: Prowlarr
    gethomepage.dev/widget.type: prowlarr
    gethomepage.dev/widget.url: "http://prowlarr.arr:9696"
    gethomepage.dev/widget.key: "[REDACTED]"
spec:
  entryPoints:
    - websecure
  routes:
    - match: Host(`prowlarr.f9.casa`)
      kind: Rule
      services:
        - name: prowlarr
          port: 9696
      middlewares:
        - name: default-headers
          namespace: default
        - name: authentik
          namespace: authentik
  tls:
    secretName: f9-casa-tls

Docker Compose

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
version: '3.9'
services:
  prowlarr:
    image: ghcr.io/hotio/prowlarr
    hostname: prowlarr
    networks:
      - traefik-public
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - /srv/cephfs/docker/appdata/prowlarr:/config
    deploy:
      labels:
        - "traefik.enable=true"
        - "traefik.http.routers.prowlarr.rule=Host(`prowlarr.f9.casa`)"
        - "traefik.http.services.prowlarr.loadbalancer.server.port=9696"
        - "traefik.http.routers.prowlarr.entrypoints=https"
        - "traefik.http.routers.prowlarr.tls=true"
        - "traefik.http.routers.prowlarr.tls.certresolver=letsencrypt"
        - "traefik.http.routers.prowlarr.middlewares=authentik@docker"

        - homepage.group=Media Management
        - homepage.name=Prowlarr
        - homepage.icon=prowlarr.png
        - homepage.href=https://prowlarr.f9.casa
        - homepage.description=Media Search
        - homepage.siteMonitor=http://prowlarr:9696
        - homepage.widget.type=prowlarr
        - homepage.widget.url=http://prowlarr:9696
        - homepage.widget.key=[REDACTED]
      mode: replicated
networks:
  traefik-public:
    external: true

Configuration

config.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<Config>
  <BindAddress>*</BindAddress>
  <Port>9696</Port>
  <SslPort>6969</SslPort>
  <EnableSsl>False</EnableSsl>
  <LaunchBrowser>True</LaunchBrowser>
  <ApiKey>[REDACTED]</ApiKey>
  <AuthenticationMethod>External</AuthenticationMethod>
  <Branch>master</Branch>
  <LogLevel>info</LogLevel>
  <SslCertPath></SslCertPath>
  <SslCertPassword></SslCertPassword>
  <UrlBase></UrlBase>
  <InstanceName>Prowlarr</InstanceName>
  <UpdateMechanism>Docker</UpdateMechanism>
  <AuthenticationRequired>Enabled</AuthenticationRequired>
  <PostgresUser>prowlarr</PostgresUser>
  <PostgresPassword>[REDACTED]</PostgresPassword>
  <PostgresPort>5432</PostgresPort>
  <PostgresHost>postgresql</PostgresHost>
</Config>
This post is licensed under CC BY 4.0 by the author.