Jellyfin Discord Notifier

Jellyfin DiscordNotifier Plugin#

Today I’m going to talk to you about one of my current projects: developing a Jellyfin notification plugin for Discord.

cedev-1
/
jellyfin-plugin-DiscordNotifier
Waiting for api.github.com...
00K
0K
0K
Waiting...

Why?#

I’ve been using Jellyfin for a while now and I really enjoy it. At first, I set it up just for myself, but after talking about it with people around me, I ended up giving access to my family and friends (they’re not always active, but it makes me happy).

You might say there are already projects that do this, and that’s true—especially the Jellyfin webhook notification project, which includes a module for Discord. But I find it poorly designed; sure, you’re free to format notifications yourself, but it doesn’t look great and is complicated to set up.

I wanted to make a project like this for the challenge, but also to get more involved in the Jellyfin community in my own way.

The goal is simple: get notifications on a Discord server when something happens on our server (a user is created/deleted, a movie started/stopped, etc.).

WARNING

Please note that I’m still a student, not a developer (let alone a C# developer). I’m just passionate about IT and a fan of the open source world.


Getting to the heart of the matter#

To make a plugin, you’re not left alone—there’s a cool community and they’ve made a pretty useful repo to understand how to do it and what rules to follow to successfully develop a Jellyfin plugin.

jellyfin
/
jellyfin-plugin-template
Waiting for api.github.com...
00K
0K
0K
Waiting...

So I took inspiration from that to get started, but I also relied a lot on other community projects for other notification systems, like the Telegram Notifier, which I think is super cool!

To keep things simple, I started from the principle that this plugin would be a turnkey solution, easy to use, with no need to bother making notification templates like with the webhook plugin. My plugin has ready-made notifications; to get them on Discord, just activate them in the plugin management interface in Jellyfin—no manual configuration needed.

For example, in the current version, I’ve only made 4 (5 with the tester) notifiers.

  • User created
  • User deleted
  • User login
  • User failed login

It’s still basic, but not bad for a start, I think.

To get started with the plugin, of course you need to create or already have a Discord server, create a discussion channel to create a webhook.

Documentation for Discord Webhook here

TIP

To make it look nicer, I recommend setting the bot’s avatar and name from Discord, because otherwise it’ll use Discord’s defaults. I haven’t implemented bot customization yet.

Once you have the webhook URL, you need to put it in the dedicated field in the plugin management interface. You can test the connection with the test notification—if it works, you can save the settings.

By default, all notification options are enabled; it’s up to you to choose what you want.


Development#

So, as you probably know and as mentioned above, Jellyfin and its plugins are made in C#, a language I’ve rarely used.

Nix#

NixOS Logo

I recently switched to NixOS on my main PC. It was a big change and a lot of work to adapt, but it’s really a huge and beneficial step when you see everything you can do with it. I also put my Mac on Nix and my other laptop on NixOS. Result: all my configs are synced across all my machines, it’s really nice. But I’ll talk about that in a future post…

❄️ To work cleanly, I set up a direnv flake in the project—it’s a super cool Nix feature that lets me switch between my PCs without losing configuration, without worrying about package versions to install.

NOTE

If you’re not familiar with Nix, I recommend checking it out—it’s really great.


Task and Docker#

To test my plugin on the fly, I used Docker 🐋, with a simple Jellyfin image with the config folder mapped to my PC, so I have direct access to the plugins directory and just need to mv or cp to place the compiled plugin DLL.

But after doing it manually dozens of times for each change, I thought about it (and was inspired by my devops colleagues who use this tool).

I went with the Task tool (Task is a task runner/build tool). It’s the same as Make; I don’t really know the difference, but Task appealed to me more. So I chose this solution to make builds and cleans easier, etc.

info

Task is managed simply with a Yaml file.

To start, I just made two steps with build and clean.

task build Builds the DLL, checks for the plugin folder in my test Jellyfin, copies the DLL into the folder, and restarts the Jellyfin container. Once done, I test the plugin manually and check my changes, etc.

task clean When I want to start fresh, I clear everything: it deletes the /bin folder (where the compiled plugin is), deletes /obj (with dependencies), and also cleans the plugin folder in the test Jellyfin by deleting the DLL and the XML file created for the plugin.


Issues encountered#

During development and still now, I have an issue: I don’t know how to retrieve the server URL.

For the current version, I just added a parameter in the plugin config page where the admin can enter the URL used for their server, for example https://jellyfin.example.com.

This means that for notifications, when they click the title, it’ll open the link to the correct Jellyfin server and not the default URL (of course, if nothing is entered, it’ll be the localhost address).

But that’s a problem I ran into that really bothered me. There is a parameter in Jellyfin that corresponds to the public server URL, but I haven’t yet figured out how to use it in the plugin.


Future#

For this Plugin project, I have several points to improve.

  • alerts for other events
  • Discord bot customization
  • custom templates
  • notification choices per user

But all that will come over time and versions, I’m not in a hurry…

Even though this project is really interesting, I have a lot of other projects at the moment, especially my Nix setup, which is taking up my time.

info

I have other posts coming soon, especially about my experience with NixOS and Hyprland, and my other ongoing projects.


Thank you for taking the time to read this article. I hope it was useful and gave you ideas for your own projects.

Jellyfin Discord Notifier
https://blog.ce-dev.eu/posts/en/jellyfin-discordnotifier/
Author
Cedev
Published at
2025-08-19
License
CC BY-NC-SA 4.0