Joplin Server Not synchronizing notes across devices

Operating system

iOS

Joplin version

13.3.9

Sync target

Joplin Server

What issue do you have?

I setup Joplin server a few years back using postgresql and used Joplin on a few devices(iPhone, iPad, android phone, etc etc). Then my server died so I had to reinstall Joplin server from scratch. I used docker this time but since my phone with Joplin on it already had notes on it it wasn’t wanting to sync to a server with no notes. I eventually got it to sync by changing to Dropbox, running sync, then reading my server and forcing it to sync.

Flash forward to yesterday I had to reinstall iOS on my iPad. So I reinstalled Joplin on the iPad and setup the sync info to my Joplin server and it said it synced, and asked for my decryption key and for a split second I saw all my notes. But going to the home screen in Joplin shows only like 5-10 notes when there should be 100’s of notes. I’ve tried rebooting and hitting synchronize like 10 times and my notes still dont show up. And there is only 1 notebook in the left hand pane when there should be like 5-6 notebooks.

All the notes are still on the original iPhone. I have also hit synchronize a bunch of times on my iPhone. But my iPad just isn’t showing all my notes.

I suggest you use Joplin Desktop on at least one device to give you much more control than the limited Joplin Mobile. With JD, sync with your JS, you'll get clarity on your JS dataset. Also, very important, make backups using JD. Built-in daily backups iirc and also manually export to JEX dataset.

I just tried installing Joplin on my desktop(running windows 11) and it did the same exact thing. I entered the sync info and encryption password, my notes all appeared, I then navigate away from the main screen, then back to the main screen, and 99% of my notes are not there and there is only 1 notebook. There should be a few hundred notes across 3-5 noteboooks.

When that happened, had the long initial sync already completed or barely started?

I assume it had completed. Use a new profile on your JD, repeat the same thing you did, and when you see all your notes after initial sync completed, immediately export all notes as JEX. Now you have a single file backup of your data and you can breathe a little. Next, use a new profile again on your JD, don't setup sync, simply import your JEX. Are all your notes there?

Note: to get a good view of your data size and number of notes, use help > sync status in your JD at any time. Here is mine below as an example.

So I already had a backup of the notes from exporting them.

On my iPad I created another profile, imported the jex file, added my sync settings, and entered my encryption password. The sync ran and then I ended up with a bunch of duplicate notebooks and notes. Again on the iPad, I went through and removed all duplicate notebooks and notes, then ran sync. Then I opened up Joplin on my iphone(which was the main “source of truth” for all my notes in Joplin) and it automatically ran a sync and it duplicated all my notes. So now I have duplicates of every note on my iPhone but the iPad doesn’t.

I’m not sure how Joplin server handles syncing…but something is very out of whack. I can’t seem to get a single “source of truth”. One would assume that if on one client you have all your notes how you want them, then sync…all other clients would receive the same notes/notebooks.

On top of all that, it doesn’t appear that Joplin is fully syncing new notes. For example, on the iPad when I created a new profile Joplin adds the default welcome notes, but those do not appear to be synced to the iPhone.

I really don’t know what else to try. My setup is pretty basic and I’m not doing anything weird, just trying to self host the server and have 2-3 clients stay in sync. I’ve used Joplin for a while and it used to work as expected, but since having to re set it back up after my server died it just hasn’t worked as it should.

The duplication you experienced is normal as when you export a JEX the uuids of all notes are randomly regenerated. When you import your JEX but JS already has the old copy of them, JS has no way to know two notes are the same because they have different uuids, so they end up duplicated.

To solve duplication you need to start fresh both on JS side and on device side.

To start fresh on JS side, you have two options:

  • setup a new JS user to start with zero data, old data is attached to old user, setup new user in all device sync settings
  • use victor plugin on JD to wipe out local content then sync the deletion to JS, JS data will thus be emptied

To start fresh on device side, create a new profile and

  • sync to JS, local data should be empty, then
  • for the first device, import JEX and sync
  • for all the other devices, simply sync

Also please see this article for sync issues and how to start over:

Joplin server is the source of truth, not any one Joplin client.

You may get sync issues with existing client data if you switch out the Joplin server with mismatched / missing data, because the client thinks everything is already synced even though the server data has changed. But if you have a fresh server and fresh Joplin client installations / profiles, then import your jex only once, then the initial imported data should sync to the server, and get downloaded when you sync the other clients

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.