Decision. Centralised indexer management
Alternative. Configuring indexers in each arr app
Why. One place to add or fix an indexer; every consumer updates automatically.
Manages the torrent indexers and feeds them to Sonarr, Radarr, and qBittorrent
Prowlarr manages indexers and hands them to Sonarr, Radarr, and the rest, with FlareSolverr behind it for protected sites.
templates/prowlarr/prowlarr-rollout.yaml Prowlarr Rollout
{{- $projectName := .Values.global.projectName }}
{{- $imagePullSecretsName := .Values.global.imagePullSecretsName }}
{{- $timeZone := .Values.global.timeZone -}}
{{- $userID := .Values.global.userID -}}
{{- with .Values.applications.prowlarr }}
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: {{ .name }}
namespace: {{ $projectName }}
spec:
replicas: 1
strategy:
canary:
maxSurge: 0
maxUnavailable: 1
steps:
- setWeight: 100
selector:
matchLabels:
app: {{ .name }}
template:
metadata:
labels:
app: {{ .name }}
spec:
{{- include "media-systems.nodePlacement" $ | nindent 6 }}
serviceAccount: {{ $projectName }}-service-account
serviceAccountName: {{ $projectName }}-service-account
automountServiceAccountToken: true
containers:
- name: {{ .name }}
image: {{ .image }}
imagePullPolicy: IfNotPresent
ports:
- name: {{ .name | substr 0 9 }}-http
containerPort: {{ .ports.http }}
protocol: TCP
env:
- name: PGID
value: {{ $userID | quote }}
- name: PUID
value: {{ $userID | quote }}
- name: TZ
value: {{ $timeZone | quote }}
volumeMounts:
- name: {{ .name }}-config
mountPath: {{ .configMount }}
resources:
requests:
memory: "128Mi"
cpu: "100m"
securityContext:
privileged: true
initContainers:
- name: {{ .name }}-configuration
image: busybox
command:
- "/bin/sh"
- "-c"
- |
echo "######## Mount config file #######";
mkdir -p {{ .configMount }};
cp /tmp/config.xml {{ .configMount }}/config.xml;
chown {{ $userID }}:{{ $userID }} {{ .configMount }}/config.xml;
chmod 400 {{ .configMount }}/config.xml;
chown -R {{ $userID }}:{{ $userID }} {{ .configMount }};
echo "Config Done";
volumeMounts:
- name: {{ .name }}-config
mountPath: {{ .configMount }}
- name: {{ .name }}-config-xml
mountPath: /tmp/config.xml
subPath: config.xml
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
volumes:
- name: {{ .name }}-config
emptyDir: {}
- name: {{ .name }}-config-xml
secret:
secretName: apps-configs-secret
items:
- key: prowlarr_config
path: config.xml
{{- end -}} templates/_shared-templates/config-tpl/prowlarr-config-tpl.yaml Config volume template: renders the Prowlarr config directory
apiVersion: v1
kind: ConfigMap
metadata:
name: prowlarr-configs-config-tpl
namespace: {{ .Release.Namespace }}
data:
prowlarr_config: |
<Config>
<BindAddress>*</BindAddress>
<Port>9696</Port>
<SslPort>6969</SslPort>
<EnableSsl>False</EnableSsl>
<LaunchBrowser>True</LaunchBrowser>
<ApiKey>{{ `{{ .prowlarr_api_key }}` }}</ApiKey>
<AuthenticationMethod>Forms</AuthenticationMethod>
<AuthenticationRequired>DisabledForLocalAddresses</AuthenticationRequired>
<Branch>master</Branch>
<LogLevel>debug</LogLevel>
<SslCertPath></SslCertPath>
<SslCertPassword></SslCertPassword>
<UrlBase></UrlBase>
<InstanceName>Prowlarr</InstanceName>
<UpdateMechanism>Docker</UpdateMechanism>
<AnalyticsEnabled>False</AnalyticsEnabled>
<PostgresUser>{{ `{{ .db_username }}` }}</PostgresUser>
<PostgresPassword>{{ `{{ .db_password }}` }}</PostgresPassword>
<PostgresPort>{{ `{{ .db_port }}` }}</PostgresPort>
<PostgresHost>{{ `{{ .db_host_name }}` }}</PostgresHost>
<PostgresMainDb>{{ `{{ .prowlarr_db_name }}` }}</PostgresMainDb>
<PostgresLogDb>{{ `{{ .prowlarr_db_name }}` }}_logs</PostgresLogDb>
</Config> Decision. Centralised indexer management
Alternative. Configuring indexers in each arr app
Why. One place to add or fix an indexer; every consumer updates automatically.