Skip to content
This repository has been archived by the owner on Dec 9, 2022. It is now read-only.

An experimental subsonic plugin for Jellyfin server

License

Notifications You must be signed in to change notification settings

lyarenei/JellySonic

Repository files navigation

NOTICE

Please note the archival status of this repository. This plugin is/will not be maintained as I have lost all motivation to develop this further. As of writing this, the plugin is compatible with JF 10.8. However, functionality will vary depending on your subsonic client.

JellySonic

An experimental subsonic plugin for Jellyfin.

This plugin enables your Jellyfin server to serve Subsonic clients.

Implemented Endpoints

See here.

Subsonic authentication

As the Subsonic authentication mechanism is pretty much insecure (the password is secured in transit at best), this plugin does not use Jellyfin user passwords to authorize Subsonic requests. This is because either way the password is available in plaintext:

  • When using token auth, the server needs an access to the password in order to generate the token for comparison
  • When using legacy auth, the password is sent with the request (optionally obfuscated in hex)

Because of that the plugin explicitly requires administrator to set a Subsonic password for their users, so they can authenticate with the server. This password must be stored in plaintext, as described above. Please keep that in mind.

To configure the user, refer to config section below. Although there are no password requirements enforced, the password should not be the same as the Jellyfin user password.

Configuration

To configure a user:

  1. Navigate to plugin settings
  2. Select the user you want to configure
  3. Set a password for authentication

The password has no validation or anything. The only requirement is that it should not be the same as the user's Jellyfin password.

After saving the configuration, the user should be able to authenticate with the password set in the plugin configuration. The user can use both token and password method, although the token method is preferred.

Manual build and installation

.NET 6.0 is required to build the JellySonic plugin. To install the .NET SDK on Linux or macOS, check out the download page at https://dotnet.microsoft.com/download. Native package manager instructions can be found for Debian, RHEL, Ubuntu, Fedora, SLES, and CentOS.

Once the SDK is installed, run the following.

git clone https://github.com/lyarenei/JellySonic
cd JellySonic
dotnet publish -c Release

If the build is successful, the compiler will report the path to your Plugin dll (JellySonic/bin/Release/net6.0/JellySonic.dll)

Copy the plugin DLL file into your Jellyfin ${CONFIG_DIR}/plugins/JellySonic directory. Create the JellySonic directory if it does not exist, and make sure Jellyfin can access it.

Running Jellyfin server

If you don't have a Jellyfin server yet, check out the instructions on the offical website.

About

An experimental subsonic plugin for Jellyfin server

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published