Prowlarr is an optional indexer management software, that can sync your trackers with other software from the Servarr suite such as Sonarr and Radarr.
You can deploy Prowlarr with a Terraform module just like the other apps from the Servarr stack. Prowlarr requires less configuration, since it's mostly a web application that syncs indexers with your other apps.
Use the Terraform module below to deploy Prowlarr in your Servarr stack:
terraform {
required_providers {
kubernetes = {
source = "hashicorp/kubernetes"
version = "2.13.1"
}
}
}
resource "kubernetes_deployment" "prowlarr" {
metadata {
name = "prowlarr"
namespace = var.namespace
labels = {
"servarr.app" = "prowlarr"
}
}
spec {
replicas = 1
selector {
match_labels = {
"servarr.app" = "prowlarr"
}
}
template {
metadata {
labels = {
"servarr.app" = "prowlarr"
}
}
spec {
container {
image = "lscr.io/linuxserver/prowlarr:develop"
name = "prowlarr"
env_from {
config_map_ref {
name = kubernetes_config_map.prowlarr_env.metadata.0.name
}
}
port {
container_port = 9696
}
volume_mount {
name = "data"
mount_path = "/config"
}
}
volume {
name = "data"
persistent_volume_claim {
claim_name = "prowlarr-data"
}
}
}
}
}
}
resource "kubernetes_persistent_volume_claim" "prowlarr_data" {
metadata {
name = "prowlarr-data"
namespace = var.namespace
}
spec {
access_modes = ["ReadWriteOnce"]
resources {
requests = {
storage = "10Gi"
}
}
storage_class_name = "local-path"
}
}
resource "kubernetes_service" "prowlarr" {
metadata {
name = "prowlarr"
namespace = var.namespace
}
spec {
type = "LoadBalancer"
selector = {
"servarr.app" = "prowlarr"
}
port {
port = 9696
}
}
depends_on = [
kubernetes_deployment.prowlarr
]
}
resource "kubernetes_config_map" "prowlarr_env" {
metadata {
name = "prowlarr-env"
namespace = var.namespace
}
data = {
"PUID" = 1000
"PGID" = 1000
"TZ" = "Europe/Zurich"
}
}
By default the LoadBalancer
service type will expose port 9696
to the local network. You can use a Kubernetes Ingress or Traefik's Ingress CRD to expose the Radarr service with a public domain, and switch to a ClusterIP service type to avoid exposing too many ports.
Making Prowlarr publicly accessible means anyone with your domain/hostname can access the application. Enable authentication in Prowlarr first, under Settings > General, enable Authencation with "Forms" and set a username and password.