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.
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:
- Your Jellyfin server is never dialled. Not read over the network, not written, not even contacted. You hand Navarre a copy of its database file and it reads that.
- The preview writes nothing. It is the required first run, and you can do it as many times as you like.
- It refuses whole, never half. If anything is in the way, nothing at all is written and the report says what it was.
- The second run is free. Everything already imported reports as an identical skip, so a re-run after you add another library picks up only what is new.
Before you start
- Set your Navarre server up: on a NAS, on a Windows PC, or on a Linux box.
- 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.
- 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:
- What matched - a title on your old server that is the same title on this one, and the watch state that would come with it.
- Not on this server yet - a title the old server had that this one has not scanned. Add the library, rescan, and run the preview again.
- No library for it yet - music, comics, audiobooks, and anything else you have not made a library for. These import cleanly on a later re-run once those libraries exist.
- Every row lands in exactly one of those, and the report says so. Nothing is quietly dropped.
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:
- Passwords. Every person you bring across gets a new password on the new server, which you set. Password hashes are not something one product should hand another.
- Server settings and library definitions. You already made those during setup, and they are shaped differently here.
- Artwork and information. This server reads your folders and fetches what they do not describe, so importing somebody else's copy of it would be importing a worse one.
- Signed-in devices, tokens, and sessions. Sign each device in again; it takes a moment and is the honest thing for a new server to ask.
- Display preferences, per-title audio and subtitle picks, ratings, collections, channels, and Live TV state.
- Playlists, where they are lists inside Jellyfin rather than files. Playlists that live as
.m3ufiles beside your media are read by this server's own scan and need nothing from the import.
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.