User Tools

Site Tools


You are not allowed to perform this action
syncingjellyfinmac

Syncing a Jellyfin server from Linux to macOS

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.

Prerequisites

  • Jellyfin.app (the server application)
    brew install --cask jellyfin
  • GNU versions of some common tools
    brew install findutils gnu-sed

Copying and fixing the configuration and metadata

  1. Copy over everything relevant
    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/
  2. You can't use locations like /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' {} +

Linking the application config to the backup

  1. Run Jellyfin.app once to create the folder, then quit it.
  2. There should be a folder ~/Library/Application Support/jellyfin, but it might also be created in ~/.local/share/jellyfin. Find out and go there.
  3. Delete all the folders except for 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

Mounting and linking the media folder

If the media is not also stored on your Mac, you'll have to mount it via the Finder or a command:

  1. 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.

Linking the media folder to a "forbidden" path

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.

  1. (Create and) Insert a line into synthetic.conf so you can put a link called “monty” to the mounted folder in /:
    monty	/Users/username/Documents/jellyfin
  2. This configuration will be loaded after rebooting, or we can just run:
    /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.

syncingjellyfinmac.txt · Last modified: by wolfo

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki