# Jellydash configuration. # # Copy this file to .env and fill it in. Only three values are really # required: JELLYFIN_URL, JELLYFIN_API_TOKEN and, for the default MariaDB # setup, DB_PASS. Everything else works out of the box and you can come back # to it later. # # .env is git-ignored, so your real values never end up in git. # ------------------------------------------------------------------ # Basics # ------------------------------------------------------------------ # Leave as production. The local mode is only for development. APP_ENV=production APP_DEBUG=false # The port Jellydash runs on, so http://your-host:8080 APP_PORT=8080 # Your timezone (IANA name, e.g. Europe/Prague). Used for timestamps # and the daily statistics boundaries. Custom Docker runs may use TZ instead. # APP_TIMEZONE takes priority when both variables are present. APP_TIMEZONE=UTC # Public address of your dashboard. Optional, can stay empty. # When set, notification alerts include a link back to the app. APP_URL= # Comma-separated IP addresses or CIDR ranges for reverse proxies that may # supply the external client address and scheme. Leave empty for direct access. TRUSTED_PROXIES= # Optional redirect to the HTTPS APP_URL above. Enable only after APP_URL is a # working https:// address and your proxy or web server terminates TLS. # Behind a proxy, configure TRUSTED_PROXIES too so HTTPS requests are recognized. # Invalid proxy or HTTPS configuration returns 503 until corrected. FORCE_HTTPS=false # ------------------------------------------------------------------ # Database # ------------------------------------------------------------------ # The defaults match the MariaDB container bundled in docker-compose.yml. # You only need to pick a password. If you use docker-compose.sqlite.yml, # these values are ignored and Jellydash stores its data in ./sqlite-data. # Using your own database server? Change these and remove the db service in # docker-compose.override.yml. DB_HOST=db DB_PORT=3306 DB_NAME=jellydash DB_USER=jellydash # Required. Pick any password, the bundled database is created with it. DB_PASS=change-me # ------------------------------------------------------------------ # Jellyfin (required) # ------------------------------------------------------------------ # Required. The address of your Jellyfin server. JELLYFIN_URL=https://jellyfin.example.com # Optional browser-facing address for links that open Jellyfin. # Leave empty to use JELLYFIN_URL. Include a reverse-proxy base path if needed, # for example https://media.example.com/jellyfin. Do not add /web. JELLYFIN_LINK_URL= # Required. An API key from Jellyfin > Dashboard > API Keys. Use an admin # key, some statistics need to read library paths. JELLYFIN_API_TOKEN=change-me # Set false only when your Jellyfin runs on self-signed HTTPS. JELLYFIN_VERIFY_SSL=true # How long the Libraries page cache lives, in seconds. The default is fine. LIBRARIES_CACHE_TTL=300 # ------------------------------------------------------------------ # Jellyseerr (optional, can stay empty) # ------------------------------------------------------------------ # Fill these and the Jellyseerr page appears in the menu, including alerts # for new requests. API key: Jellyseerr > Settings > General > API Key. JELLYSEER_URL= JELLYSEER_API_TOKEN= JELLYSEER_VERIFY_SSL=true # Seconds between request syncs, and whether new requests send an alert. SEERR_POLL_INTERVAL=120 SEERR_NOTIFY_ENABLED=true # ------------------------------------------------------------------ # Background poller and monitoring exclusions # ------------------------------------------------------------------ # Records play history even when nobody has the dashboard open, and sends # the notifications. You want this on. POLLER_ENABLED=true # Seconds between Jellyfin checks. 30 is a good balance. POLL_INTERVAL=30 # Jellyfin usernames to exclude from monitoring, comma-separated. # Matching is exact and case-insensitive. Also editable later in Settings. IGNORE_USERS= # ------------------------------------------------------------------ # Notifications (all optional, can stay empty) # ------------------------------------------------------------------ # Alerts when someone starts playing and when a new Jellyseerr request # comes in. A channel is on as soon as its values are filled. Setup steps # for every channel are in the README. # Master switch for all notification channels. PUSH_ENABLED=true # Maximum browser notification devices stored by this installation (1-10000). # Existing devices can refresh their subscription after the limit is reached. PUSH_MAX_SUBSCRIPTIONS=100 # Maximum browser notification devices owned by one signed-in account (1-1000). PUSH_MAX_SUBSCRIPTIONS_PER_ACCOUNT=10 # Jellyfin usernames that never trigger an alert, comma-separated. # Typically your own. Also editable later in Settings inside the app. PUSH_IGNORE_USERS= # Jellyfin libraries that never trigger a playback alert, comma-separated. # Put names containing commas in double quotes. # Also editable later in Settings inside the app. PUSH_IGNORE_LIBRARIES= # Telegram: a bot token from @BotFather plus your chat id. TELEGRAM_BOT_TOKEN= TELEGRAM_CHAT_ID= # Pushover: an application token plus your user key from pushover.net PUSHOVER_APP_TOKEN= PUSHOVER_USER_KEY= # Discord: a webhook URL from Server Settings > Integrations > Webhooks. DISCORD_WEBHOOK_URL= # ntfy: server base URL (without the topic), topic, and optional access token. # Use a protected topic for private viewing activity. No default server is used. NTFY_URL= NTFY_TOPIC= NTFY_TOKEN= # Gotify: server base URL (without /message) and an application token. GOTIFY_URL= GOTIFY_APP_TOKEN= # Web Push (browser and the installed app): needs HTTPS. Generate the # keys once with: docker compose exec app php bin/console.php push:vapid VAPID_PUBLIC_KEY= VAPID_PRIVATE_KEY= # A contact address, the push standard requires one when Web Push is used. VAPID_SUBJECT=mailto:you@example.com # ------------------------------------------------------------------ # Login (optional) # ------------------------------------------------------------------ # Off by default. Turn it on when the dashboard is reachable from the # internet. The admin user is created automatically on the next start. AUTH_ENABLED=false AUTH_ADMIN_USER= # The password needs at least 8 characters, shorter ones are rejected. AUTH_ADMIN_PASSWORD= # ------------------------------------------------------------------ # Statistics # ------------------------------------------------------------------ # Jellyfin libraries to hide from Trending and Most Watched, comma-separated # names. Also editable later in Settings inside the app. TRENDING_EXCLUDE_LIBRARIES=