Jellyfin: Difference between revisions
Added instruction for getting intro skipper plugin to work. |
|||
Line 60: | Line 60: | ||
The alternative to this is to explicitly mount the drives via [[Filesystems]], but takes more effort to set up and requires every new drive you want plex to see to be explicitly declared, but allows more control in what Plex is allowed to see. | The alternative to this is to explicitly mount the drives via [[Filesystems]], but takes more effort to set up and requires every new drive you want plex to see to be explicitly declared, but allows more control in what Plex is allowed to see. | ||
=== Intro Skipper plugin === | |||
If you install intro skipper plugin, it will not be able to display skip button in web interface. This is due to the plugin being unable to modify contents of files in nix store. To get around this you can make the changes yourself with this: | |||
<syntaxhighlight lang="nix"> | |||
nixpkgs.overlays = with pkgs; [ | |||
( | |||
final: prev: | |||
{ | |||
jellyfin-web = prev.jellyfin-web.overrideAttrs (finalAttrs: previousAttrs: { | |||
installPhase = '' | |||
runHook preInstall | |||
# this is the important line | |||
sed -i "s#</head>#<script src=\"configurationpage?name=skip-intro-button.js\"></script></head>#" dist/index.html | |||
mkdir -p $out/share | |||
cp -a dist $out/share/jellyfin-web | |||
runHook postInstall | |||
''; | |||
}); | |||
} | |||
) | |||
]; | |||
</syntaxhighlight> | |||
== Hardware Transcoding == | == Hardware Transcoding == |
Revision as of 18:21, 26 May 2024
Jellyfin is the volunteer-built media solution that puts you in control of your media. Stream to any device from your own server, with no strings attached.
Installing & Initial Configuration & Setup
To get up and running with Jellyfin, add the packages pkgs.jellyfin
pkgs.jellyfin-web
& pkgs.jellyfin-ffmpeg
to your `configuration.nix` file as shown below.
{
services.jellyfin.enable = true;
environment.systemPackages = [
pkgs.jellyfin
pkgs.jellyfin-web
pkgs.jellyfin-ffmpeg
];
}
If you want more advanced configuration, use something like what's shown below and see the docs for more configuration options
{
services.jellyfin = {
enable = true;
openFirewall = true;
};
}
Once you have included the correct packages to be installed, and enabled and configured Jellyfin to your liking, then rebuild your system for changes to take effect.
$ sudo nixos-rebuild switch
After the rebuild is complete Jellyfin should be running, verify that it is with the following command.
$ sudo systemctl status jellyfin
If jellyfin is not running you should be able to start it by simply running jellyfin
in your terminal.
$ jellyfin
Finally. After you've verified that Jellyfin is running you can start the configuration process.
- The Jellyfin server should be running on port 8096.
- Go to http://localhost:8096 if your setting this up on your primary computer or want to test your build locally.
- If you're logging into a remote server, replace localhost with the ip address of the server.
Allow Jellyfin to read external drives
You might encounter permission issues when you try to access external drives if you haven't configured anything else with the server yet. If you haven't explicitly set up a mounting configuration for your drives and instead have your desktop environment (e.g. GNOME or KDE) automatically mount it when you try accessing it via their file explorers, Jellyfin won't be able to access the drive. This is because the desktop environment mounts it to your user, while Jellyfin uses by default the "jellyfin" user.
The easiest way to allow it to see these external drives mounted is to change the service's user . Here is an example:
services.jellyfin = {
enable = true;
openFirewall = true;
user="yourusername";
};
If you have changed the user option after you have already installed Jellyfin, you have to change the permissions of the folder /var/lib/jellyfin via chown to the user you set it to by doing this:
sudo chown -R /var/lib/jellyfin
The alternative to this is to explicitly mount the drives via Filesystems, but takes more effort to set up and requires every new drive you want plex to see to be explicitly declared, but allows more control in what Plex is allowed to see.
Intro Skipper plugin
If you install intro skipper plugin, it will not be able to display skip button in web interface. This is due to the plugin being unable to modify contents of files in nix store. To get around this you can make the changes yourself with this:
nixpkgs.overlays = with pkgs; [
(
final: prev:
{
jellyfin-web = prev.jellyfin-web.overrideAttrs (finalAttrs: previousAttrs: {
installPhase = ''
runHook preInstall
# this is the important line
sed -i "s#</head>#<script src=\"configurationpage?name=skip-intro-button.js\"></script></head>#" dist/index.html
mkdir -p $out/share
cp -a dist $out/share/jellyfin-web
runHook postInstall
'';
});
}
)
];
Hardware Transcoding
In most cases you want to make most of your hardware. Modern boards often come with Hardware Accelerators, all you need to do is enable it!
Source: https://jellyfin.org/docs/general/administration/hardware-acceleration.html
VAAPI
VAAPI is often available on intel boards (Intel HD).
{ pkgs, lib,config, ... }:
{
# 1. enable vaapi on OS-level
nixpkgs.config.packageOverrides = pkgs: {
vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; };
};
hardware.opengl = {
enable = true;
extraPackages = with pkgs; [
intel-media-driver
vaapiIntel
vaapiVdpau
libvdpau-va-gl
intel-compute-runtime # OpenCL filter support (hardware tonemapping and subtitle burn-in)
];
};
# 2. do not forget to enable jellyfin
services.jellyfin.enable = true;
}
Related: Accelerated_Video_Playback