If I wanted to use syncthing to synchronise three joplin instances (Windows, Mac, Android). I understand that I need to set up syncthing on all three devices, and share a common folder in it between them. But what should go into that folder?
I don't think it should be the Joplin files themselves, so that I would always be working on a copy of the same database. As I understand it, I should use the shared syncthing folder as the file system destination for all three copies of Joplin and they will sync to and from it themselves.
I can still foresee some problems with clashes but many fewer than if two instances are trying to work on the same database at the same time.
Or would it be possible and more sensible to do the initial sync on syncthing and then switch the Joplin clients to some other method -- Nextcloud on a Pi, perhaps?
If I did that, what files would I need to move from the syncthing folder on my pi into the Nextcloud data folder for Joplin? I know I would then have to run occ files:scan or whatever the actual command is to read the files into NC, but that might still be quicker.
Actually it's really simple. I did this myself. First set up an empty sync'ed directory on all your devices. You can test it by syncing random files but when you're ready to go have it empty.
Then point one Joplin instance at the empty folder as a "local filesystem" sync target. Joplin will populate the folder automagically with the required files. Then wait for Syncthing to do its sync thing, until the matching folder on your other devices is populated, then point those Joplin instances to their local filesystem sync targets. You should then see your notes from the first instance of Joplin appear in the others. Voilà; you're good to go.
If you want to change sync backends, all you have to do is change your sync target in Joplin and enter the credentials (example: Dropbox username/pw). Joplin will again create a folder in your cloud drive and populate it with the files Joplin wants to be there. Then point your other Joplin instances to the same cloud drive. Couldn't be simpler.
Edit: If you're in the situation where you already have different notes in different Joplin instances, and you now want to sync them - I have not tested this edge case. But I expect it to be handled elegantly. For example, Syncthing will look at timestamps and simply create duplicates when un-resolvable conflicts arise. Then it's up to you to sort them out.
Thank you. that is what I thought I should do to get syncthing working
It is your step three -- setting up new sync backends on other providers -- that I am trying to avoid, because my experiences with dropbox, nextcloud, and onedrive have all been incredibly slow and often bug-ridden as well. [And it seems to me grandiose and silly to get GcoC recruits working on fancy new features when something as fundamental as sync is unreliable and slow]
One of the problems here is that your experience does not match everyone else's. I moved all my files (30,000 of them) from Evernote to Joplin about one year ago. The first sync was very slow and I realised at the end that I should have exported every EN notebook separately. I deleted everything and started again. It was again very very slow.
This was true on every device: my Windows 10 pc, my Windows 10 laptop, my iPad and my Android phone. However, once I had all the notes on all the devices, it really did begin to work flawlessly and it has continued to do so for a year. I sync through Dropbox and, so far, it has just worked.
The "first sync" issue is something people will only see once (per device) while, on the other hand, there are features (search for example) whose improvement will benefit most users most days. I don't think that it is necessarily silly to ask for recruits to look at those areas.
I completely agree with you though that, if time and money were infinite, Joplin would benefit from a better, cleaner, welcome process which would include a flawless and simple "import from Evernote" wizard. I would certainly have helped me in my first few days here
@seatrout In that case think you will appreciate Syncthing. It's fairly lightweight and once you get it set up for Joplin, you can add as many other folder to your sync network as you like (example: Documents, DCIM, etc.). Then you can ditch 3rd party sync engines if you like! It even works over the internet, through firewalls etc with no user-configured reverse proxies or anything. I have it running on a couple linux machines, a FreeBSD box (FreeNAS jail), Android device, and a Windows machine and it's quite reliable. The only hitch is that it doesn't run as a service on Windows, so I need to start it manually every time I boot that system. There's probably a workaround, but I'm migrating away from MS anyhow so haven't looked into it....
Good luck and happy sync'ing!
"User configured reverse proxies" is a phrase that works on me like garlic on a vampire. I would be happy to try Joplin server, but it would have to sit on a raspberry pi alongside a second pi running nextcloud, and they both, so far as I can tell, expect exclusive access to port 80/443. I only know how to forward traffic to one of them.
I have looked at things like traefik or haproxy, which I know can do this, but I simply cannot work out what seems almost the simplest thing to be done -- you know, send requests for Joplin to this pi; and requests for Nextcloud to that pi.
This might be stupidity, or it might be early onset dementia, but some of it is the fault of the documentation which assumes either a lot of expertise or that the reader is actually a robot with insatiable curiosity about detail. Or both.