The purpose of this guide is to move an existing Jellyfin instance running on Linux to macOS, and prepare everything so that it works with Jellyfin.app.
brew install --cask jellyfin
brew install findutils gnu-sed
rsync -avhH --delete --bwlimit=24M --info=progress2 user@linux:/var/log/jellyfin/ /Volumes/pinky/couch/var/log/jellyfin/; \ rsync -avhH --delete --bwlimit=24M --info=progress2 user@linux:/etc/jellyfin/ /Volumes/pinky/couch/etc/jellyfin/; \ rsync -avhH --delete --bwlimit=24M --info=progress2 user@linux:/var/lib/jellyfin/ /Volumes/pinky/couch/var/lib/jellyfin/; \ rsync -avhH --delete --bwlimit=24M --info=progress2 user@linux:/var/cache/jellyfin/ /Volumes/pinky/couch/var/cache/jellyfin/
/var/lib to store Jellyfin data on macOS. Therefore we'll have to change those paths. gfind -L . \( -name \*.xml -o -name \*.json \) -exec gsed -i 's:/var/lib/jellyfin/:/Volumes/pinky/couch/var/lib/jellyfin/:g' {} + ; \ gfind -L . \( -name \*.xml -o -name \*.json \) -exec gsed -i 's:/var/cache/jellyfin/:/Volumes/pinky/couch/var/cache/jellyfin/:g' {} +
~/Library/Application Support/jellyfin, but it might also be created in ~/.local/share/jellyfin. Find out and go there.cache and replace them with symbolic links: cd ~/Library/Application\ Support/jellyfin ln -s /Volumes/pinky/couch/var/lib/jellyfin/root ./ ln -s /Volumes/pinky/couch/var/lib/jellyfin/plugins ./ ln -s /Volumes/pinky/couch/var/lib/jellyfin/metadata ./ ln -s /Volumes/pinky/couch/var/lib/jellyfin/data ./ ln -s /Volumes/pinky/couch/etc/jellyfin ./config ln -s /Volumes/pinky/couch/var/log/jellyfin ./log
If the media is not also stored on your Mac, you'll have to mount it via the Finder or a command:
mount -t smbfs //user:password@192.168.0.512/Jellyfin ~/Documents/jellyfin
This has to be run after every reboot or network disconnect, before you run the Jellyfin server. There might be a smarter way to automate the mounting and, if necessary, re-mounting.
Let's assume your media files were located under /monty/ on the Linux server, and this is where Jellyfin will still expect them. We can't usually create folders or files in the root folder on macOS to recreate this, and we don't want to destroy and recreate all the libraries to match a new path. Instead, we are going to create a synthetic link that points to the library – or in this case, the SMB share we just mounted.
synthetic.conf so you can put a link called “monty” to the mounted folder in /:monty /Users/username/Documents/jellyfin
/System/Library/Filesystems/apfs.fs/Contents/Resources/apfs.util -t
There will now be a link /monty pointing to ~/Documents/jellyfin which is where we mounted the folder containing the media. This matches where we stored it before and Jellyfin is happy.