Package: jellyfin-accounts
A basic account management system forJellyfin.Provides a web interface for creating/sending invitesSends out emails when a user requests a password resetUses a basic python jellyfin API client for communication with the server.UsesFlask,HTTPAuth,itsdangerous, andWaitressFrontend usesBootstrapPassword resets are handled using smtplib, requests, andjinjaInterfaceGet itRequirementsThis should work anywhere Python does, i've tried to not use anything OS-specific. Drop an issue if there's a problem, of course.* python >= 3.6
* flask
* flask_httpauth
* jinja2
* requests
* itsdangerous
* passlib
* pyOpenSSL
* waitress
* pytz
* python-dateutil
* watchdog
* packagingInstallUsually as simple as:pip install jellyfin-accountsIf not, or if you want to use docker, seeinstall.UsagePassing no arguments will run the serverusage: jf-accounts [-h] [-c CONFIG] [-d DATA] [--host HOST] [-p PORT] [-g]

jellyfin-accounts

optional arguments:
  -h, --help            show this help message and exit
  -c CONFIG, --config CONFIG
                        specifies path to configuration file.
  -d DATA, --data DATA  specifies directory to store data in. defaults to
                        ~/.jf-accounts.
  --host HOST           address to host web ui on.
  -p PORT, --port PORT  port to host web ui on.
  -g, --get_defaults    tool to grab a JF users policy (access, perms, etc.)
                        and homescreen layout and output it as json to be used
                        as a user template.SetupNew user templateYou may want to restrict a user from accessing certain libraries (e.g 4K Movies), display their account on the login screen by default, or set a default homecrseen layout. Jellyfin stores these settings in the user's policy, configuration and displayPreferences.Make a temporary account and configure it, then in the web UI, go into "Settings => Set new account defaults". Choose the account, and its configuration will be stored for future use.Emails/Password ResetsWhen someone initiates forget password on Jellyfin, a file namedpasswordreset*.jsonis created in its configuration directory. This directory is monitored and when created, the program reads the username, expiry time and PIN, puts it into a template and sends it to whatever address is specified inemails.json.The default forget password popup references thepasswordreset*.jsonfile created. This is confusing for users, so a quick fix is to edit theMessageForgotPasswordFileCreatedstring in Jellyfin's language folder.Currently, jellyfin-accounts supports generic SSL/TLS or STARTTLS secured SMTP, and themailgunREST API.Email html is created usingmjml, andjinjatemplating is used. If you wish to create your own, ensure you use the same jinja expressions ({{ pin }}, etc.) as used indata/email.mjmlorinvite-email.mjml, and also create plain text versions for legacy email clients.ConfigurationNote: Make sure to put this behind a reverse proxy with HTTPS.On first run, access the setup wizard at0.0.0.0:8056. When finished, restart the program.The configuration is stored at~/.jf-accounts/config.ini. Settings can be changed through the web UI, or by manually editing the file.For detailed descriptions of each setting, seesetup.DonationsI strongly suggest you send your money toJellyfinor a good charity, but for those who want to help me out, a Paypal link is below.Donate