mirror of
https://github.com/hrfee/jellyfin-accounts.git
synced 2024-12-22 00:50:12 +00:00
(deprecated) A basic account management system for Jellyfin.
Harvey Tindall
a38045cefb
hopefully fixes scss and email generation on windows by fixing runcmd() and (optionally) reading npm bin location from the 'npm bin' command. also, config path is cast to string before being passed to configparser. |
||
---|---|---|
.github/ISSUE_TEMPLATE | ||
images | ||
jellyfin_accounts | ||
scss | ||
.gitignore | ||
config-default.ini | ||
jf-accounts.service | ||
LICENSE | ||
package-lock.json | ||
package.json | ||
poetry.lock | ||
pyproject.toml | ||
README.md | ||
requirements.txt |
👀 ➡️: Have a look at jfa-go, an attempted rewrite in Go. Identical look and features but might be faster.
A basic account management system for Jellyfin.
- Provides a web interface for creating/sending invites
- Sends out emails when a user requests a password reset
- Uses a basic python jellyfin API client for communication with the server.
- Uses Flask, HTTPAuth, itsdangerous, and Waitress
- Frontend uses Bootstrap
- Password resets are handled using smtplib, requests, and jinja
Interface
Get it
Requirements
- This 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
* packaging
Install
Usually as simple as:
pip install jellyfin-accounts
If not, or if you want to use docker, see install.
Usage
- Passing no arguments will run the server
usage: 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.
Setup
New user template
- You 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 Resets
- When someone initiates forget password on Jellyfin, a file named
passwordreset*.json
is 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 the
passwordreset*.json
file created. This is confusing for users, so a quick fix is to edit theMessageForgotPasswordFileCreated
string in Jellyfin's language folder. - Currently, jellyfin-accounts supports generic SSL/TLS or STARTTLS secured SMTP, and the mailgun REST API.
- Email html is created using mjml, and jinja templating is used. If you wish to create your own, ensure you use the same jinja expressions (
{{ pin }}
, etc.) as used indata/email.mjml
orinvite-email.mjml
, and also create plain text versions for legacy email clients.
Configuration
- Note: Make sure to put this behind a reverse proxy with HTTPS.
On first run, access the setup wizard at 0.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, see setup.
Donations
I strongly suggest you send your money to Jellyfin or a good charity, but for those who want to help me out, a Paypal link is below.