Telegram Login Widget Authentication Plugin for Jellyfin
25
stars
68
commits
C#
primary language
Jul 17, 2026
updated
A Plugin for logging into Jellyfin using the Telegram Login Widget as "SSO" provider.
Allows for simple Group creation/editing/deleting in order to manage Admins/Users/Library-access.
Inspired by jellyfin-plugin-ldapauth and jellyfin-plugin-sso.
Created from jellyfin-plugin-template.
Sign in with Telegram Disclaimer Link on the Jellyfin Login Page/sso/TelegramSSO Login page (at /sso/Telegram)
Config page (reachable via Jellyfin Plugin Page)
You can choose between three options below.
TeleJelly from the Plugin catalogueIf your sever doesn't have internet access, or you need older versions.
TeleJelly_vX.X.X.zip) for your correct Jellyfin Server TargetAbi.zip-content into your jellyfin server folder config/plugins/TeleJelly (create it if non-existing)Don't trust the downloads? You can also do it by yourself.
git clone https://github.com/hexxone/TeleJelly.git or download as zip.cd ./TeleJellydotnet publish Jellyfin.Plugin.TeleJelly -c Release -v dTeleJelly_vX.X.X-alpha.X.X.zip.zip-content into your jellyfin server folder config/plugins/TeleJelly (create it if non-existing)/setdomain command to link your Jellyfin domain (needs valid SSL cert)./sso/Telegram.To give other users access without making them Admins:
/link inside that Telegram Group to connect it to the TeleJelly Group.The Telegram bot will only listen to commands, send notifications, and sync usernames if the Enable bot service
checkbox is activated on the configuration page and a valid bot token is set.
If the checkbox is not activated, you can still log in with configured groups, but nothing else will work.
Troubleshooting: If the bot stops responding, you can restart the background service by unchecking
Enable bot service-> Save -> checking it again -> Save.
If a Telegram-group is successfully linked to a TeleJelly-group, the bot will listen for chat events:
Sync Usernames enabled -> User gets added to TeleJelly group automatically if he has a Username set.Sync Usernames enabled -> User gets removed from TeleJelly group automatically if he has a Username set.If a Telegram-group is successfully linked to a TeleJelly-group AND Notify New Content is enabled, the bot can send a notification if new Content is being
added to the Jellyfin server.
This currently includes: Movies, Series, Seasons, Episodes.
If "new content" is being detected, the bot will check if the Metadata is already complete (IMDb, Banner, etc.).
/start - Shows a welcome message./link - Links your Telegram group to your Jellyfin group./register - Registers a new user in your Jellyfin group./request <imdb> - Requests a movie or series from IMDB-Id or URL./search <text> - Searches for a media item in your Jellyfin server./stats - Shows some statistics about your Jellyfin server and the plugin./unlink - Unlinks your Telegram group from your Jellyfin group./userlist - Lists all users in your Jellyfin group.Notice: Certain commands like /link are only available to TeleJelly "Admins" or might give additional info to
"Admins" like the /stats command.
This Login-method is intended for Desktop/Browser usage. It has not been tested to be working with official Jellyfin
Apps. If you encounter problems, try signing in on a "real" browser instead and use the Quick Connect feature when
possible. Besides that, there is very little you, or I can do.
The Sign in with Telegram button will sometimes get hidden by Browser Plugins like "I don't like Cookies" or "UBlock
Origin". Try disabling these on your Jellyfin domain and inform your users.
If a User's profile picture fails to download even though the url is given (err 404), he has probably set it to private. In this case, the plugin will fall back to its default icon.
If a User were to change/sell his Username, a random person would possibly be able to use this Service. However, having Names over ID's is much more convenient for Management.
If your server is publicly reachable, make sure to take care of rate limiting with your reverse proxy; otherwise adversaries might be able to lag the system.
Note: Video & Screenshots are taken with my custom css theme applied. The Logo is AI-generated.
https://github.com/user-attachments/assets/48b908e7-c08e-4669-9d61-079c30cd229f



git clone https://github.com/hexxone/TeleJelly.gitTeleJelly.sln file with Visual Studio or Rider IDE, restore Nuget packagesexample.env-file to .env and fill out the variablesDocker TestNote: the "invalid" SSL certificate warning is normal. You can, however, get a "real" one working with traefik with ease.
When implementing a new feature, please name your commit messages in a meaningful way and refer to git best practices.
The plugin uses "MinVer" and git-tags for semantic versioning.
Most of the Versions (meta.json and manifest.json) get incremented automatically on release build,
but there are some places that have to be done manually - for example, in the config.html.
When incrementing the version of Jellyfin, remember to set the correct TargetAbi version in JellyfinPluginHelper!
Feel free to open a new Pull-Requests for useful additions and fixes.
This project uses a GitHub Actions workflow for automated releases (dotnetcore.yml). Here is how it ties into the release cycle:
MinVer to calculate the version number based on the latest Git tag in the history.manifest.json in the orphaned dist branch. This allows Jellyfin instances to see the new version immediately via the repository URL..zip file for manual download.This project is licensed under the GNU General Public License v3.0.
68 commits
C#
65.8%
JavaScript
14.9%
HTML
10.8%
CSS
7.9%
Telegram Login Widget Authentication Plugin for Jellyfin
25
stars
68
commits
C#
primary language
Jul 17, 2026
updated
A Plugin for logging into Jellyfin using the Telegram Login Widget as "SSO" provider.
Allows for simple Group creation/editing/deleting in order to manage Admins/Users/Library-access.
Inspired by jellyfin-plugin-ldapauth and jellyfin-plugin-sso.
Created from jellyfin-plugin-template.
Sign in with Telegram Disclaimer Link on the Jellyfin Login Page/sso/TelegramSSO Login page (at /sso/Telegram)
Config page (reachable via Jellyfin Plugin Page)
You can choose between three options below.
TeleJelly from the Plugin catalogueIf your sever doesn't have internet access, or you need older versions.
TeleJelly_vX.X.X.zip) for your correct Jellyfin Server TargetAbi.zip-content into your jellyfin server folder config/plugins/TeleJelly (create it if non-existing)Don't trust the downloads? You can also do it by yourself.
git clone https://github.com/hexxone/TeleJelly.git or download as zip.cd ./TeleJellydotnet publish Jellyfin.Plugin.TeleJelly -c Release -v dTeleJelly_vX.X.X-alpha.X.X.zip.zip-content into your jellyfin server folder config/plugins/TeleJelly (create it if non-existing)/setdomain command to link your Jellyfin domain (needs valid SSL cert)./sso/Telegram.To give other users access without making them Admins:
/link inside that Telegram Group to connect it to the TeleJelly Group.The Telegram bot will only listen to commands, send notifications, and sync usernames if the Enable bot service
checkbox is activated on the configuration page and a valid bot token is set.
If the checkbox is not activated, you can still log in with configured groups, but nothing else will work.
Troubleshooting: If the bot stops responding, you can restart the background service by unchecking
Enable bot service-> Save -> checking it again -> Save.
If a Telegram-group is successfully linked to a TeleJelly-group, the bot will listen for chat events:
Sync Usernames enabled -> User gets added to TeleJelly group automatically if he has a Username set.Sync Usernames enabled -> User gets removed from TeleJelly group automatically if he has a Username set.If a Telegram-group is successfully linked to a TeleJelly-group AND Notify New Content is enabled, the bot can send a notification if new Content is being
added to the Jellyfin server.
This currently includes: Movies, Series, Seasons, Episodes.
If "new content" is being detected, the bot will check if the Metadata is already complete (IMDb, Banner, etc.).
/start - Shows a welcome message./link - Links your Telegram group to your Jellyfin group./register - Registers a new user in your Jellyfin group./request <imdb> - Requests a movie or series from IMDB-Id or URL./search <text> - Searches for a media item in your Jellyfin server./stats - Shows some statistics about your Jellyfin server and the plugin./unlink - Unlinks your Telegram group from your Jellyfin group./userlist - Lists all users in your Jellyfin group.Notice: Certain commands like /link are only available to TeleJelly "Admins" or might give additional info to
"Admins" like the /stats command.
This Login-method is intended for Desktop/Browser usage. It has not been tested to be working with official Jellyfin
Apps. If you encounter problems, try signing in on a "real" browser instead and use the Quick Connect feature when
possible. Besides that, there is very little you, or I can do.
The Sign in with Telegram button will sometimes get hidden by Browser Plugins like "I don't like Cookies" or "UBlock
Origin". Try disabling these on your Jellyfin domain and inform your users.
If a User's profile picture fails to download even though the url is given (err 404), he has probably set it to private. In this case, the plugin will fall back to its default icon.
If a User were to change/sell his Username, a random person would possibly be able to use this Service. However, having Names over ID's is much more convenient for Management.
If your server is publicly reachable, make sure to take care of rate limiting with your reverse proxy; otherwise adversaries might be able to lag the system.
Note: Video & Screenshots are taken with my custom css theme applied. The Logo is AI-generated.
https://github.com/user-attachments/assets/48b908e7-c08e-4669-9d61-079c30cd229f



git clone https://github.com/hexxone/TeleJelly.gitTeleJelly.sln file with Visual Studio or Rider IDE, restore Nuget packagesexample.env-file to .env and fill out the variablesDocker TestNote: the "invalid" SSL certificate warning is normal. You can, however, get a "real" one working with traefik with ease.
When implementing a new feature, please name your commit messages in a meaningful way and refer to git best practices.
The plugin uses "MinVer" and git-tags for semantic versioning.
Most of the Versions (meta.json and manifest.json) get incremented automatically on release build,
but there are some places that have to be done manually - for example, in the config.html.
When incrementing the version of Jellyfin, remember to set the correct TargetAbi version in JellyfinPluginHelper!
Feel free to open a new Pull-Requests for useful additions and fixes.
This project uses a GitHub Actions workflow for automated releases (dotnetcore.yml). Here is how it ties into the release cycle:
MinVer to calculate the version number based on the latest Git tag in the history.manifest.json in the orphaned dist branch. This allows Jellyfin instances to see the new version immediately via the repository URL..zip file for manual download.This project is licensed under the GNU General Public License v3.0.
68 commits
C#
65.8%
JavaScript
14.9%
HTML
10.8%
CSS
7.9%