The Free Software Media System
Go to file
Joshua M. Boniface a73d255f51 Enable self-contained binary mode (#160)
* Build self-contained Debian linux-x64 binary

* Update initscripts to use self-contained binary

The binary is declared in the units intentionally rather than using
the variable extrapolation from before, to avoid confusion since
these can't really be moved reasonably.

* With combined binary name, use pgrep instead

* Remove dotnet-runtime dependency

* Move the compiled scb to usr/bin

* Update binary location for upstart/systemd

* Move binary path; fix pidfile handling

* Entirely remove the temporary usr/ dir

* Don't move the compiled binary

* Create /usr/bin symlink

* Use the variable here

* Update architecture to any

* Add libcurl4-openssl build dependency

* Update the build Dockerfile to install builddeps
2018-12-14 21:21:48 -05:00
BDInfo Change libraries from netcoreapp to netstandard 2018-12-12 21:39:22 +01:00
debian Enable self-contained binary mode (#160) 2018-12-14 21:21:48 -05:00
DvdLib Change libraries from netcoreapp to netstandard 2018-12-12 21:39:22 +01:00
Emby.Dlna Rebranded XML profiles 2018-12-14 00:02:55 +00:00
Emby.Drawing Change libraries from netcoreapp to netstandard 2018-12-12 21:39:22 +01:00
Emby.Drawing.ImageMagick Change libraries from netcoreapp to netstandard 2018-12-12 21:39:22 +01:00
Emby.Drawing.Net Optimize images 2018-12-11 00:31:27 -05:00
Emby.Drawing.Skia Address comments 2018-12-14 17:46:43 +01:00
Emby.IsoMounting Fix markdown formatting 2018-12-14 09:31:12 -05:00
Emby.Naming Change libraries from netcoreapp to netstandard 2018-12-12 21:39:22 +01:00
Emby.Notifications Change libraries from netcoreapp to netstandard 2018-12-12 21:39:22 +01:00
Emby.Photos Change libraries from netcoreapp to netstandard 2018-12-12 21:39:22 +01:00
Emby.Server.Implementations Port MediaEncoding and Api.Playback from 10e57ce8d21b4516733894075001819f3cd6db6b 2018-12-14 17:32:54 +01:00
Emby.XmlTv Change libraries from netcoreapp to netstandard 2018-12-12 21:39:22 +01:00
MediaBrowser.Api Port MediaEncoding and Api.Playback from 10e57ce8d21b4516733894075001819f3cd6db6b 2018-12-14 17:32:54 +01:00
MediaBrowser.LocalMetadata Change libraries from netcoreapp to netstandard 2018-12-12 21:39:22 +01:00
MediaBrowser.MediaEncoding Port MediaEncoding and Api.Playback from 10e57ce8d21b4516733894075001819f3cd6db6b 2018-12-14 17:32:54 +01:00
MediaBrowser.Providers Change libraries from netcoreapp to netstandard 2018-12-12 21:39:22 +01:00
MediaBrowser.Server.Mono Fix changing ProgramDataPath when passed as and arg 2018-12-14 22:57:26 +01:00
MediaBrowser.Tests Remove agreement and app links 2018-12-11 00:46:50 -05:00
MediaBrowser.WebDashboard Change libraries from netcoreapp to netstandard 2018-12-12 21:39:22 +01:00
MediaBrowser.XbmcMetadata Change libraries from netcoreapp to netstandard 2018-12-12 21:39:22 +01:00
Mono.Nat Change libraries from netcoreapp to netstandard 2018-12-12 21:39:22 +01:00
Nuget update query objects 2017-09-04 15:28:22 -04:00
OpenSubtitlesHandler Change libraries from netcoreapp to netstandard 2018-12-12 21:39:22 +01:00
RSSDP Address comments 2018-12-14 17:46:43 +01:00
SocketHttpListener Change libraries from netcoreapp to netstandard 2018-12-12 21:39:22 +01:00
.dockerignore Add jellyfin Docker image 2018-12-10 02:07:15 -05:00
.drone.yml Remove clone depth 2018-12-13 18:40:15 -05:00
.gitignore Whitespace fix 2018-12-13 18:31:35 +00:00
.gitmodules Add GitLab CI 2018-12-11 21:39:08 -05:00
build-deb.sh cleanup 2018-12-14 19:00:19 -05:00
Build-JellyFin.ps1 build script can generate zip, maybe be run from linux 2018-12-12 11:41:08 -08:00
CODE_OF_CONDUCT.md Add code of conduct 2018-12-09 23:40:50 -05:00
CONTRIBUTORS.md Clean up CONTRIBUTORS and differentiate us 2018-12-09 21:37:24 -05:00
Dockerfile Fix Dockerfile 2018-12-12 21:43:52 +01:00
Dockerfile.debian_package Enable self-contained binary mode (#160) 2018-12-14 21:21:48 -05:00
LICENSE Remove incorrect .md suffix from LICENSE file 2018-12-09 18:02:44 -05:00
MediaBrowser.sln Revert "Test Projects" 2018-12-12 22:11:25 -05:00
MediaBrowser.sln.GhostDoc.xml replace file system calls with IFileSystem when needed 2013-10-31 10:03:23 -04:00
README.md Revamp contributing section to link to wiki 2018-12-14 18:20:48 -05:00
SharedVersion.cs Update to 3.5.2 and .net core 2.1 2018-09-12 19:26:21 +02:00

Jellyfin

Jellyfin is a personal media server. The Jellyfin project was started as a result of Emby's decision to take their code closed-source, as well as various philosophical differences with the core developers. Jellyfin seeks to be the free software alternative to Emby and Plex to provide media management and streaming from a dedicated server to end-user devices.

Jellyfin is descended from Emby 3.5.2, ported to the .NET Core framework, and aims to contain build facilities for every platform.

For further details, please see our wiki. To receive the latest project updates feel free to join our public chat on Matrix/Riot and to subscribe to our subreddit.

Feature Requests

While our first priority is a stable build, we will eventually add features that were missing in Emby or were not well implemented (technically or philosophically).

Feature Requests

Contributing to Jellyfin

If you're interested in contributing, please see our wiki for guidelines.

Prebuilt Jellyfin packages

Prebuild packages are available for Debian/Ubuntu and Arch, and via Docker Hub.

Docker

The Jellyfin Docker image is available on Docker Hub at https://hub.docker.com/r/jellyfin/jellyfin/

Arch

The Jellyfin package is in the AUR at https://aur.archlinux.org/packages/jellyfin-git/

Unraid

An Unraid Docker template is available. See this documentation page for details on installing it.

Debian/Ubuntu

A package repository is available at https://repo.jellyfin.org.

NOTE: Ubuntu users may find that the ffmpeg dependency package is not present in their release or is simply a rebranded libav which is not directly compatible. Please obtain the ffmpeg package directly from the FFMPEG site to use Jellyfin on Ubuntu.

Clean install

  1. Install the dotnet-runtime-2.2 package via Microsoft's repositories.
  2. Import the GPG signing key (signed by Joshua):
    wget -O - https://repo.jellyfin.org/debian/jellyfin-signing-key-joshua.gpg.key | sudo apt-key add -
    
  3. Add an entry to /etc/apt/sources.list.d/jellyfin.list (note that Ubuntu will get buster in the list file, but this should still work fine):
    echo "deb https://repo.jellyfin.org/debian $( grep -Ewo -m1 --color=none 'jessie|stretch|buster' /etc/os-release || echo buster ) main" | sudo tee /etc/apt/sources.list.d/jellyfin.list
    
  4. Update APT repositories:
    sudo apt update
    
  5. Install Jellyfin:
    sudo apt install jellyfin
    

Upgrade from Emby

The following procedure should work to upgrade from Emby to Jellyfin on an existing installation:

  1. Upgrade to Emby 3.5.X, preferably 3.5.2, so the database schema is fully up-to-date and consistent. This is somewhat optional but can reduce the risk of obscure bugs later on.
  2. Stop the emby-server daemon:
    sudo service emby-server stop
    
  3. Move your existing Emby data directory out of the way:
    sudo mv /var/lib/emby /var/lib/emby.backup
    
  4. Remove the emby-server package:
    sudo apt remove emby-server
    
  5. Install the jellyfin package using the instructions above, verifying that /var/lib/emby is a symlink to /var/lib/jellyfin.
  6. Stop the jellyfin daemon:
    sudo service jellyfin stop
    
  7. Copy over all the data files from the old backup data directory:
    sudo cp -a /var/lib/emby.backup/* /var/lib/jellyfin/
    
  8. Correct ownership on the new data directory:
    sudo chown -R jellyfin:jellyfin /var/lib/jellyfin
    
  9. Start the jellyfin daemon:
    sudo service jellyfin start
    

This same general procedure should apply for upgrades on any other platform as well though the specific commands and/or paths may be different.

Building Jellyfin packages from source

Jellyfin seeks to integrate build facilities for any desired packaging format. Instructions for the various formats can be found below.

NOTE: When building from source, only cloning the full Git repository is supported, rather than using a .zip/.tar archive, in order to support submodules.

Debian/Ubuntu

Debian build facilities are integrated into the repo at debian/.

  1. Install the dotnet-sdk-2.2 package via Microsoft's repositories.
  2. Run dpkg-buildpackage -us -uc.
  3. Install the resulting jellyfin_*.deb file on your system.

A huge thanks to Carlos Hernandez who created the original Debian build configuration for Emby 3.1.1.

Windows (64 bit)

A pre-built windows installer will be available soon. Until then it isn't too hard to install Jellyfin from Source.

  1. Install the dotnet core SDK 2.2 from Microsoft's Webpage and install Git for Windows

  2. Clone Jellyfin into a directory of your choice.

    git clone https://github.com/jellyfin/jellyfin.git C:\Jellyfin
    
  3. From the Jellyfin directory you can use our Jellyfin build script. Call Build-Jellyfin.ps1 -InstallFFMPEG from inside the directory in a powershell window. Make sure you've set your executionpolicy to unrestricted.

    Additional flags:

    • If you want to optimize for your environment you can use the -WindowsVersion and -Architecture flags to do so; the default is generic Windows x64.
    • The -InstallLocation flag lets you select where the compiled binaries go; the default is $Env:AppData\JellyFin-Server\ .
    • The -InstallFFMPEG flag will automatically pull the stable ffmpeg binaries appropriate to your architecture (x86/x64 only for now) from Zeranoe and place them in your Jellyfin directory.
  4. (Optional) Use NSSM to configure JellyFin to run as a service

  5. Jellyfin is now available in the default directory (or the directory you chose). Assuming you kept the default directory, to start it from a Powershell window, run, &"$env:APPDATA\Jellyfin-Server\EmbyServer.exe". To start it from CMD, run, %APPDATA%\Jellyfin-Server\EmbyServer.exe