Example configuration¶
Copy the repository's
coldarr.example.yaml
to coldarr.yaml and adjust the paths and policy for your setup. In Docker,
place it in the host directory bound to /config. Alternatively, add tiers
through the web interface and let Coldarr create the file.
Connection credentials are configured separately; see Connections. See Storage tiers and Scoring and Favorites for how the policy is used, and Downloads and seeding for the commented-out download tiering section.
coldarr.example.yaml
# Coldarr example configuration.
#
# Copy this to coldarr.yaml and edit for your setup (or skip this file
# entirely and configure tiers through the web GUI - `coldarr serve`
# creates one for you as you go).
#
# Connection info (Radarr, Sonarr, Lidarr, Jellyfin, qBittorrent) does NOT
# live here - it's stored encrypted, separately, via the GUI's Connections
# page, the `coldarr connections set` CLI command, or RADARR_URL/
# RADARR_API_KEY (SONARR_*, LIDARR_*, JELLYFIN_*, QBITTORRENT_*) environment
# variables, which always take precedence over whatever is stored.
#
# Values in this file can still reference environment variables, e.g.
# ${SOME_VAR}, for anything below.
# Tiers are named storage policies applied to one or more physical paths.
# Every path in a tier is checked independently - a tier is a shared
# policy, not a pooled volume.
#
# - role: hot -> primary storage. Coldarr never proactively steers this
# toward any usage level - it's runoff, not a control
# variable. Every cold-eligible item sitting on a hot path
# is a move candidate, whenever cold tiers have room to
# accept it. No target_used_percent here. When Coldarr
# pulls a grow-risk item back onto hot (e.g. an unmet
# quality-cutoff file), it still won't push a hot path
# past 97% used unless you set max_used_percent yourself -
# packing hot storage to the wire would leave no room for
# the very growth that move exists to make space for.
# - role: cold -> overflow storage. Coldarr actively packs cold-eligible
# items toward target_used_percent (the fill goal),
# falling back to max_used_percent (the hard ceiling,
# never crossed) only when nothing has room under target.
#
# max_used_percent has no built-in ceiling on cold tiers - if you want a
# satellite drive packed to 100%, set it to 100. Coldarr will respect
# that. On a hot tier, max_used_percent overrides the 97% default
# described above (also up to 100 if that's genuinely what you want).
tiers:
- name: hot
role: hot
paths:
- /data/media/movies
- /data/media/tv
media_types: [movie, tv]
require_mount: false # the primary NAS mount is expected to always be present
- name: cold-movies
role: cold
paths:
- /mnt/sat1/movies
- /mnt/sat2/movies
media_types: [movie]
target_used_percent: 92
max_used_percent: 95
require_mount: true # refuse to use these paths if the drive isn't actually mounted
- name: cold-tv
role: cold
paths:
- /mnt/sat1/tv
media_types: [tv]
target_used_percent: 92
max_used_percent: 95
require_mount: true
policy:
# Don't touch anything moved within the last N days.
cooldown_days: 30
# Don't bother moving items smaller than this - not worth the risk for
# a couple of GB.
min_move_size_gb: 1
# Newly added items stay on hot storage for at least this long,
# regardless of score.
hot_grace_days: 14
# Tags that make an item completely untouchable.
never_move_tags: [never-move]
protected_tags: [keep-hot, favorite]
# Tag that pushes an item strongly toward cold storage.
cold_ok_tags: [cold-ok]
# A continuing/currently-airing series is always kept hot, regardless
# of score, when this is true.
protect_continuing_series: true
# Quality profiles considered lower priority - a small scoring bump
# toward cold storage.
low_priority_quality_profiles: []
# Minimum score (see internal/scoring) an item needs to be considered
# a cold candidate. Raise this to be more conservative about what
# moves, lower it to move things more aggressively.
cold_score_threshold: 40
history:
path: ./coldarr-history.json
# Optional download tiering, with qBittorrent connected: finished downloads
# move from the download drive to seed storage once they've settled, and
# can be removed once their trackers' seeding requirements are met. Add two
# tiers with `domain: downloads` - mounted into Coldarr at the same paths
# qBittorrent uses - and uncomment below. See the docs' "Downloads and
# seeding" page.
#
# - name: download-ssd # (under tiers:)
# domain: downloads
# role: hot
# paths: [/downloads]
#
# - name: seed
# domain: downloads
# role: cold
# paths: [/seed]
# target_used_percent: 92
# max_used_percent: 97
# require_mount: true
#
# torrents:
# settle_days: 3
# seed_label: seed # given only once a move has landed
# labels: # labels with no rule are left alone
# - {label: movies, action: move, imported_by: radarr}
# - {label: tv, action: move, imported_by: sonarr}
# - {label: transfer, action: ignore}
# seeding:
# min_seed_days: 0 # 0 = forever: nothing is done until you say so
# grace_days: 7
# overrides:
# - {host: tracker.example.org, min_seed_days: 14}
# removal:
# mode: off # off, report, or remove
# max_per_run: 25
# Optional web GUI authentication. Client secret is stored encrypted
# alongside connection credentials, not in this YAML. Environment variables
# named COLDARR_OIDC_* always override these saved values when set.
auth:
oidc:
enabled: false
issuer_url: https://auth.example.com
client_id: coldarr
redirect_url: https://coldarr.example.com/auth/callback
required_group: coldarr
groups_claim: groups
token_auth_method: auto # auto, client_secret_basic, or client_secret_post
auto_login: false