Moving from Jellyfin

Your people and everything they have watched come across. This is the careful version: it shows you exactly what would move before it moves anything, it never touches your Jellyfin server, and running it twice writes nothing the second time.

You do not have to move at all. Navarre works with the Jellyfin 10.11 or 12 server you already run - point the apps at it and they configure themselves, at home and away. This page is for households who want their own Navarre server and would rather not lose eight years of watch history to get it.

How honest this page is being

This one is hands-on. Moving in from Plex or Emby is a screen in the app; moving in from Jellyfin is this walk, done with two commands, because the in-app version of it is not finished and we would rather say so than ship a half of it. Everything below has been run end to end on a real household, and none of it is guessed.

It is also, deliberately, the safest shape we could give it:


Before you start

  1. Set your Navarre server up: on a NAS, on a Windows PC, or on a Linux box.
  2. Let the first scan finish and check your shelves look right. Watch history is matched against the titles this server actually has, so anything that has not been scanned yet cannot be matched to. If a library is still missing, that is fine - come back and run this again later.
  3. Know your Navarre server's administrator name and password - the one you chose in the app during setup.

1. Copy three files out of Jellyfin

While Jellyfin is quiet, copy these three out of its config/data folder:

jellyfin.db
jellyfin.db-wal
jellyfin.db-shm

Copy all three, even if two of them are tiny or missing on your box. A copy taken from a running server carries writes that are not in the main file yet, and the other two are where they live - reading only the first one would quietly lose every change since the last checkpoint.

Put them in a folder called import inside your Navarre server's data folder - the one you back up. Your server already has that folder mounted, so there is nothing to change and nothing to restart:

<your data folder>/import/jellyfin.db

Inside the container that is /config/import/jellyfin.db, which is the name you will use below. If the copy was torn, the preview refuses it and tells you to copy it again. Copy it again; never try to repair it.

2. Get an administrator token

This proves you are the owner. Run it against your own server, with your own address, name, and password:

curl -s -X POST http://YOUR-SERVER:8096/Users/AuthenticateByName \
  -H 'Content-Type: application/json' \
  -H 'Authorization: MediaBrowser Client="curl", Device="move-in", DeviceId="move-in", Version="1"' \
  -d '{"Username":"YOUR-NAME","Pw":"YOUR-PASSWORD"}'

The answer carries an AccessToken. That is what the next two commands use.

3. Preview it. This writes nothing.

curl -s -X POST http://YOUR-SERVER:8096/navarre/import \
  -H 'Content-Type: application/json' \
  -H 'Authorization: MediaBrowser Client="curl", Device="move-in", DeviceId="move-in", Version="1", Token="YOUR-TOKEN"' \
  -d '{
    "mode": "plan",
    "databasePath": "/config/import/jellyfin.db",
    "members": [{ "name": "First person" }, { "name": "Second person" }]
  }'

The report tells you, per person and per title, what would happen. The parts worth reading:

If a name on the old server should become a name you already have here, say so instead of creating a second one:

    "users": [{ "name": "Old name", "disposition": "merge-into", "target": "New name" }]

Where two histories collide on the same title, the further-along position wins and the report shows you the collision rather than resolving it silently.

4. Take a copy first

Open Settings → Your server on any Navarre app and use Take a copy now. Your server takes the copy, checks that it opens, and says whether it worked. That copy is your way back, and putting one back is in the install guide.

5. Run it

The same command with one word changed:

    "mode": "apply"

It works out the plan again before it writes, so the plan you just read is the plan that runs. It creates the people you asked for, writes the watch state, and then takes a third look afterwards - so "nothing left to do" in the receipt is a measurement rather than a promise.

6. Confirm

Run the preview once more. Every row should report as an identical skip with nothing pending. Then look at a few real things on a real screen: a half-watched film should be half-watched, a series you were part way through should offer the right next episode, and everyone's favourites should be where they left them.


What comes across, and what does not

Said plainly, so nothing here is a surprise later. It carries your people, what each of them is allowed to see, what they have played, where they got to, and their favourites.

It does not carry:

Every one of those appears in the report with its real count, so "none of those" is something you can check rather than something you have to believe.


Afterwards

Leave Jellyfin where it is until the household has watched on the new server for a while. Nothing here has changed it, so it is still exactly the server it was, and going back is turning it on again.

When you are ready, switch the apps over: they find the new server on your home network by themselves, and everybody signs in with their new name and password.

Stuck anywhere? support@navarre.tv reaches a human, and the Help & FAQ covers the questions people actually hit.