Skip to main content

Configuration

homescreen-hero stores its settings in config.yaml. Most settings can be managed through the dashboard UI, but you can also edit this file directly.

tip

Sensitive values like API keys and passwords should be set using environment variables instead of putting them directly in config.yaml.

Example Config

plex:
base_url: http://192.168.1.100:32400
token: null # Use HSH_PLEX_TOKEN env var instead
libraries:
- name: Movies
enabled: true
- name: TV Shows
enabled: true

auth:
enabled: true
username: admin
password: null # Use HSH_AUTH_PASSWORD env var instead
secret_key: null # Use HSH_AUTH_SECRET_KEY env var instead
token_expire_days: 30

rotation:
enabled: true
interval_hours: 12
max_collections: 5
strategy: random
allow_repeats: false
sync_all_on_rotation: true
blacklisted_collections: []

groups:
- name: Favorites
enabled: true
min_picks: 1
max_picks: 2
weight: 1
min_gap_rotations: 0
visibility_home: true
visibility_shared: false
visibility_recommended: false
collections:
- Best of 2024
- Award Winners

- name: Christmas
enabled: true
min_picks: 0
max_picks: 1
weight: 1
min_gap_rotations: 0
visibility_home: true
visibility_shared: true
visibility_recommended: false
date_range:
start: "11-20"
end: "12-26"
collections:
- Holiday Movies
- Christmas Classics

trakt:
enabled: false
client_id: null # Use HSH_TRAKT_CLIENT_ID env var instead
base_url: https://api.trakt.tv
sources:
- name: Popular Movies This Week
url: https://trakt.tv/users/username/lists/popular
plex_library: Movies

letterboxd:
enabled: false
sources:
- name: Top 250 Narrative Films
url: https://letterboxd.com/dave/list/official-top-250-narrative-feature-films/
plex_library: Movies

mdblist:
enabled: false
api_key: null # Use HSH_MDBLIST_API_KEY env var instead
base_url: https://api.mdblist.com
sources:
- name: Trending Movies
url: https://mdblist.com/lists/username/trending
plex_library: Movies

tautulli:
enabled: false
api_key: null # Use HSH_TAUTULLI_API_KEY env var instead
base_url: http://localhost:8181
collect_on_rotation: true
collect_interval_hours: 24

seerr:
enabled: false
api_key: null # Use HSH_SEERR_API_KEY env var instead
base_url: http://localhost:5055

logging:
level: INFO

Section Reference

plex

FieldTypeDefaultDescription
base_urlstring-Plex server URL
tokenstringnullPlex API token (prefer env var)
librarieslist-Libraries to manage
libraries[].namestring-Library name in Plex
libraries[].enabledbooltrueWhether this library is active

rotation

FieldTypeDefaultDescription
enabledbooltrueEnable automatic rotation
interval_hoursint12Hours between rotations (min: 1)
max_collectionsint5Max collections on homescreen at once (min: 1)
strategystringrandomSelection strategy: random, weighted, or lru
allow_repeatsboolfalseAllow same collection in consecutive rotations
sync_all_on_rotationbooltrueSync all third-party lists when rotating
blacklisted_collectionslist[]Collections to never select during rotation

Strategies

  • random - Randomly select from eligible collections
  • weighted - Prioritize groups with higher weight values
  • lru - Least Recently Used, picks collections that haven't been featured recently

groups

Groups organize your Plex collections for rotation.

FieldTypeDefaultDescription
namestring-Group name
enabledbooltrueWhether group is active
min_picksint0Minimum collections to pick per rotation
max_picksint1Maximum collections to pick per rotation
weightint1Priority for weighted strategy (higher = more likely)
min_gap_rotationsint0Rotations before reusing a collection from this group
visibility_homebooltrueShow on admin Home page
visibility_sharedboolfalseShow on shared users' Home pages
visibility_recommendedboolfalseShow in Library Recommended section
date_rangeobjectnullRestrict group to a yearly date window
date_range.startstring-Start date in MM-DD format
date_range.endstring-End date in MM-DD format
collectionslist-Plex collection names in this group

auth

FieldTypeDefaultDescription
enabledboolfalseRequire login to access the dashboard
usernamestringadminLogin username
passwordstringnullPassword - plaintext or bcrypt hash (prefer env var)
secret_keystringnullJWT signing secret (prefer env var)
token_expire_daysint30Days before login expires

trakt

FieldTypeDefaultDescription
enabledboolfalseEnable Trakt integration
client_idstringnullTrakt API client ID (prefer env var)
base_urlstringhttps://api.trakt.tvTrakt API base URL
sourceslist[]Trakt list sources to sync
sources[].namestring-Display name (becomes the Plex collection name)
sources[].urlstring-Full Trakt list URL
sources[].plex_librarystring-Target Plex library to sync into

mdblist

FieldTypeDefaultDescription
enabledboolfalseEnable MDBList integration
api_keystringnullMDBList API key (prefer env var)
base_urlstringhttps://api.mdblist.comMDBList API base URL
sourceslist[]MDBList sources to sync
sources[].namestring-Display name (becomes the Plex collection name)
sources[].urlstring-Full MDBList list URL
sources[].plex_librarystring-Target Plex library to sync into

letterboxd

FieldTypeDefaultDescription
enabledboolfalseEnable Letterboxd integration
sourceslist[]Letterboxd list sources to sync
sources[].namestring-Display name (becomes the Plex collection name)
sources[].urlstring-Full or short Letterboxd list URL
sources[].plex_librarystring-Target Plex library to sync into

tautulli

FieldTypeDefaultDescription
enabledboolfalseEnable Tautulli analytics
api_keystringnullTautulli API key (prefer env var)
base_urlstringhttp://localhost:8181Tautulli server URL
collect_on_rotationbooltrueCollect analytics after each rotation
collect_interval_hoursint24Hours between analytics collection

seerr

FieldTypeDefaultDescription
enabledboolfalseEnable Seerr integration
api_keystringnullSeerr API key (prefer env var)
base_urlstringhttp://localhost:5055Seerr server URL

logging

FieldTypeDefaultDescription
levelstringINFOLog level: DEBUG, INFO, WARNING, ERROR