helm-media-servarr

media-servarr helm charts

Lint Release App Update

media-servarr

A collection of Helm charts for self-hosted media - primarily built around the Servarr family of charts, with some complementary charts here and there.

All charts share the common base (media-servarr-base) so configuration patterns are consistent across every application.

The Charts

Chart Description
bazarr Automatic subtitle downloader; companion to Sonarr and Radarr — bazarr.media
cleanuparr Removes stalled, orphaned, and unwanted items from download clients — cleanuparr.github.io
flaresolverr Proxy to bypass Cloudflare protection; used by Prowlarr — github.com/FlareSolverr
homarr Dashboard for self-hosted services — homarr.dev
jellyfin Open-source media server for movies, TV, and music — jellyfin.org
lidarr Music library manager — lidarr.audio
profilarr Quality profile and custom format manager for the *arr stack — github.com/Dictionarry-Hub/profilarr
prowlarr Indexer manager and proxy for the *arr stack — prowlarr.com
radarr Movie library manager — radarr.video
readarr (deprecated) Book library manager — readarr.com
sabnzbd Usenet download client — sabnzbd.org
sonarr TV series library manager — sonarr.tv
tinymediamanager Media metadata scraper and manager — tinymediamanager.org
transmission BitTorrent download client — transmissionbt.com

Each chart has its own README.md under ./charts/<name>/ with per-app installation and configuration details.

Prerequisites

Usage

Add the Helm repository:

helm repo add media-servarr https://media-servarr.shw.al/charts
helm repo update

List available charts:

helm search repo media-servarr

Install a chart (Sonarr as an example):

helm install sonarr media-servarr/sonarr -f my-values.yaml

Upgrade an existing release:

helm upgrade sonarr media-servarr/sonarr -f my-values.yaml

Configuration

The media-servarr-base library gives every chart the same building blocks: secret injection (inline or by reference), config-as-code via a ConfigMap-mounted config file, declarative PersistentVolumeClaims (including binding to a pre-existing PV via volumeName), ingress with optional TLS, an optional Exportarr metrics sidecar for the *arr apps, and the usual pod-scheduling knobs.

For the full list of value keys, their types, and inline documentation:

A distinctive pattern used in these charts is the config-as-code with secret substitution: application config lives in values.yaml, gets rendered to a ConfigMap, and secrets are substituted at pod start, allowing use to use secrets and configmap without having to commit their values:

secrets:
  - name: apiKey
    ref: 'my-api-key'

application:
  config:
    filename: config.xml
    mountPath: /config/config.xml
    secrets: [apiKey]        # substituted as $apiKey in contents
    contents: |
      <Config>
        <ApiKey>$apiKey</ApiKey>
      </Config>