{ "order": [ "jellyfin", "ui", "password_validation", "email", "password_resets", "invite_emails", "notifications", "mailgun", "smtp", "files" ], "jellyfin": { "order": [ "username", "password", "server", "public_server", "client", "version", "device", "device_id" ], "meta": { "name": "Jellyfin", "description": "Settings for connecting to Jellyfin" }, "username": { "name": "Jellyfin Username", "required": true, "requires_restart": true, "type": "text", "value": "username", "description": "It is recommended to create a limited admin account for this program." }, "password": { "name": "Jellyfin Password", "required": true, "requires_restart": true, "type": "password", "value": "password" }, "server": { "name": "Server address", "required": true, "requires_restart": true, "type": "text", "value": "http://jellyfin.local:8096", "description": "Jellyfin server address. Can be public, or local for security purposes." }, "public_server": { "name": "Public address", "required": false, "requires_restart": false, "type": "text", "value": "https://jellyf.in:443", "description": "Publicly accessible Jellyfin address for invite form. Leave blank to reuse the above address." }, "client": { "name": "Client Name", "required": true, "requires_restart": true, "type": "text", "value": "jf-accounts", "description": "This and below settings will show on the Jellyfin dashboard when the program connects. You may as well leave them alone." }, "version": { "name": "Version Number", "required": true, "requires_restart": true, "type": "text", "value": "{version}" }, "device": { "name": "Device Name", "required": true, "requires_restart": true, "type": "text", "value": "jf-accounts" }, "device_id": { "name": "Device ID", "required": true, "requires_restart": true, "type": "text", "value": "jf-accounts-{version}" } }, "ui": { "order": [ "theme", "host", "port", "jellyfin_login", "admin_only", "username", "password", "email", "debug", "contact_message", "help_message", "success_message", "bs5" ], "meta": { "name": "General", "description": "Settings related to the UI and program functionality." }, "theme": { "name": "Default Look", "required": false, "requires_restart": true, "type": "select", "options": [ "Bootstrap (Light)", "Jellyfin (Dark)", "Custom CSS" ], "value": "Jellyfin (Dark)", "description": "Default appearance for all users." }, "host": { "name": "Address", "required": true, "requires_restart": true, "type": "text", "value": "0.0.0.0", "description": "Set 0.0.0.0 to run on localhost" }, "port": { "name": "Port", "required": true, "requires_restart": true, "type": "number", "value": 8056 }, "jellyfin_login": { "name": "Use Jellyfin for authentication", "required": false, "requires_restart": true, "type": "bool", "value": true, "description": "Enable this to use Jellyfin users instead of the below username and pw." }, "admin_only": { "name": "Allow admin users only", "required": false, "requires_restart": true, "depends_true": "jellyfin_login", "type": "bool", "value": true, "description": "Allows only admin users on Jellyfin to access the admin page." }, "username": { "name": "Web Username", "required": true, "requires_restart": true, "depends_false": "jellyfin_login", "type": "text", "value": "your username", "description": "Username for admin page (Leave blank if using jellyfin_login)" }, "password": { "name": "Web Password", "required": true, "requires_restart": true, "depends_false": "jellyfin_login", "type": "password", "value": "your password", "description": "Password for admin page (Leave blank if using jellyfin_login)" }, "email": { "name": "Admin email address", "required": false, "requires_restart": false, "depends_false": "jellyfin_login", "type": "text", "value": "example@example.com", "description": "Address to send notifications to (Leave blank if using jellyfin_login)" }, "debug": { "name": "Debug logging", "required": false, "requires_restart": true, "type": "bool", "value": false }, "contact_message": { "name": "Contact message", "required": false, "requires_restart": false, "type": "text", "value": "Need help? contact me.", "description": "Displayed at bottom of all pages except admin" }, "help_message": { "name": "Help message", "required": false, "requires_restart": false, "type": "text", "value": "Enter your details to create an account.", "description": "Displayed at top of invite form." }, "success_message": { "name": "Success message", "required": false, "requires_restart": false, "type": "text", "value": "Your account has been created. Click below to continue to Jellyfin.", "description": "Displayed when a user creates an account" }, "bs5": { "name": "Use Bootstrap 5", "required": false, "requires_restart": false, "type": "bool", "value": false, "description": "Use Bootstrap 5 (currently in alpha). This also removes the need for jQuery, so the page should load faster." } }, "password_validation": { "order": [ "enabled", "min_length", "upper", "lower", "number", "special" ], "meta": { "name": "Password Validation", "description": "Password validation (minimum length, etc.)" }, "enabled": { "name": "Enabled", "required": false, "requires_restart": false, "type": "bool", "value": true }, "min_length": { "name": "Minimum Length", "requires_restart": false, "depends_true": "enabled", "type": "text", "value": "8" }, "upper": { "name": "Minimum uppercase characters", "requires_restart": false, "depends_true": "enabled", "type": "text", "value": "1" }, "lower": { "name": "Minimum lowercase characters", "requires_restart": false, "depends_true": "enabled", "type": "text", "value": "0" }, "number": { "name": "Minimum number count", "requires_restart": false, "depends_true": "enabled", "type": "text", "value": "1" }, "special": { "name": "Minimum number of special characters", "requires_restart": false, "depends_true": "enabled", "type": "text", "value": "0" } }, "email": { "order": [ "no_username", "use_24h", "date_format", "message", "method", "address", "from" ], "meta": { "name": "Email", "description": "General email settings. Ignore if not using email features." }, "no_username": { "name": "Use email addresses as username", "required": false, "requires_restart": false, "depends_true": "method", "type": "bool", "value": false, "description": "Use email address from invite form as username on Jellyfin." }, "use_24h": { "name": "Use 24h time", "required": false, "requires_restart": false, "depends_true": "method", "type": "bool", "value": true }, "date_format": { "name": "Date format", "required": false, "requires_restart": false, "depends_true": "method", "type": "text", "value": "%d/%m/%y", "description": "Date format used in emails. Follows datetime.strftime format." }, "message": { "name": "Help message", "required": false, "requires_restart": false, "depends_true": "method", "type": "text", "value": "Need help? contact me.", "description": "Message displayed at bottom of emails." }, "method": { "name": "Email method", "required": false, "requires_restart": false, "type": "select", "options": [ "smtp", "mailgun" ], "value": "smtp", "description": "Method of sending email to use." }, "address": { "name": "Sent from (address)", "required": false, "requires_restart": false, "depends_true": "method", "type": "email", "value": "jellyfin@jellyf.in", "description": "Address to send emails from" }, "from": { "name": "Sent from (name)", "required": false, "requires_restart": false, "depends_true": "method", "type": "text", "value": "Jellyfin", "description": "The name of the sender" } }, "password_resets": { "order": [ "enabled", "watch_directory", "email_html", "email_text", "subject" ], "meta": { "name": "Password Resets", "description": "Settings for the password reset handler." }, "enabled": { "name": "Enabled", "required": false, "requires_restart": true, "type": "bool", "value": true, "description": "Enable to store provided email addresses, monitor Jellyfin directory for pw-resets, and send reset pins" }, "watch_directory": { "name": "Jellyfin directory", "required": false, "requires_restart": true, "depends_true": "enabled", "type": "text", "value": "/path/to/jellyfin", "description": "Path to the folder Jellyfin puts password-reset files." }, "email_html": { "name": "Custom email (HTML)", "required": false, "requires_restart": false, "depends_true": "enabled", "type": "text", "value": "", "description": "Path to custom email html" }, "email_text": { "name": "Custom email (plaintext)", "required": false, "requires_restart": false, "depends_true": "enabled", "type": "text", "value": "", "description": "Path to custom email in plain text" }, "subject": { "name": "Email subject", "required": false, "requires_restart": false, "depends_true": "enabled", "type": "text", "value": "Password Reset - Jellyfin", "description": "Subject of password reset emails." } }, "invite_emails": { "order": [ "enabled", "email_html", "email_text", "subject", "url_base" ], "meta": { "name": "Invite emails", "description": "Settings for sending invites directly to users." }, "enabled": { "name": "Enabled", "required": false, "requires_restart": false, "type": "bool", "value": true }, "email_html": { "name": "Custom email (HTML)", "required": false, "requires_restart": false, "depends_true": "enabled", "type": "text", "value": "", "description": "Path to custom email HTML" }, "email_text": { "name": "Custom email (plaintext)", "required": false, "requires_restart": false, "depends_true": "enabled", "type": "text", "value": "", "description": "Path to custom email in plain text" }, "subject": { "name": "Email subject", "required": true, "requires_restart": false, "depends_true": "enabled", "type": "text", "value": "Invite - Jellyfin", "description": "Subject of invite emails." }, "url_base": { "name": "URL Base", "required": true, "requires_restart": false, "depends_true": "enabled", "type": "text", "value": "http://accounts.jellyf.in:8056/invite", "description": "Base URL for jf-accounts. This is necessary because using a reverse proxy means the program has no way of knowing the URL itself." } }, "notifications": { "order": [ "enabled", "expiry_html", "expiry_text", "created_html", "created_text" ], "meta": { "name": "Notifications", "description": "Notification related settings." }, "enabled": { "name": "Enabled", "required": "false", "requires_restart": true, "type": "bool", "value": true, "description": "Enabling adds optional toggles to invites to notify on expiry and user creation." }, "expiry_html": { "name": "Expiry email (HTML)", "required": false, "requires_restart": false, "depends_true": "enabled", "type": "text", "value": "", "description": "Path to expiry notification email HTML." }, "expiry_text": { "name": "Expiry email (Plaintext)", "required": false, "requires_restart": "false", "depends_true": "enabled", "type": "text", "value": "", "description": "Path to expiry notification email in plaintext." }, "created_html": { "name": "User created email (HTML)", "required": false, "requires_restart": false, "depends_true": "enabled", "type": "text", "value": "", "description": "Path to user creation notification email HTML." }, "created_text": { "name": "User created email (Plaintext)", "required": false, "requires_restart": false, "depends_true": "enabled", "type": "text", "value": "", "description": "Path to user creation notification email in plaintext." } }, "mailgun": { "order": [ "api_url", "api_key" ], "meta": { "name": "Mailgun (Email)", "description": "Mailgun API connection settings" }, "api_url": { "name": "API URL", "required": false, "requires_restart": false, "type": "text", "value": "https://api.mailgun.net..." }, "api_key": { "name": "API Key", "required": false, "requires_restart": false, "type": "text", "value": "your api key" } }, "smtp": { "order": [ "encryption", "server", "port", "password" ], "meta": { "name": "SMTP (Email)", "description": "SMTP Server connection settings." }, "encryption": { "name": "Encryption Method", "required": false, "requires_restart": false, "type": "select", "options": [ "ssl_tls", "starttls" ], "value": "starttls", "description": "Your email provider should provide different ports for each encryption method. Generally 465 for ssl_tls, 587 for starttls." }, "server": { "name": "Server address", "required": false, "requires_restart": false, "type": "text", "value": "smtp.jellyf.in", "description": "SMTP Server address." }, "port": { "name": "Port", "required": false, "requires_restart": false, "type": "number", "value": 465 }, "password": { "name": "Password", "required": false, "requires_restart": false, "type": "password", "value": "smtp password" } }, "files": { "order": [ "invites", "emails", "user_template", "user_configuration", "user_displayprefs", "custom_css" ], "meta": { "name": "File Storage", "description": "Optional settings for changing storage locations." }, "invites": { "name": "Invite Storage", "required": false, "requires_restart": true, "type": "text", "value": "", "description": "Location of stored invites (json)." }, "emails": { "name": "Email Addresses", "required": false, "requires_restart": true, "type": "text", "value": "", "description": "Location of stored email addresses (json)." }, "user_template": { "name": "User Template", "required": false, "requires_restart": true, "type": "text", "value": "", "description": "Location of stored user policy template (json)." }, "user_configuration": { "name": "userConfiguration", "required": false, "requires_restart": true, "type": "text", "value": "", "description": "Location of stored user configuration template (used for setting homescreen layout) (json)" }, "user_displayprefs": { "name": "displayPreferences", "required": false, "requires_restart": true, "type": "text", "value": "", "description": "Location of stored displayPreferences template (also used for homescreen layout) (json)" }, "custom_css": { "name": "Custom CSS", "required": false, "requires_restart": true, "type": "text", "value": "", "description": "Location of custom bootstrap CSS." } } }