Sync Mac/PC and iOS using Syncthing + Möbius Sync

After trying most of the sync methods available for syncing Obsidian between Mac/PC and iOS, Syncthing + Möbius Sync is the best solution I’ve found so far. Once set up, it is (mostly) frictionless, to the point that sync is an afterthought and stays out-of-sight.

This should work for Android as well, but you would use the official Syncthing client instead of Mobius Sync (which is just an iOS version of Syncthing, since there is no official iOS client).

To summarize the advantages of this method:

  • Syncs at the file-system level, not dependent on Obsidian running, no “waiting to sync” on startup. (This means even notes added via iOS shortcuts will sync without having to open Obsidian.)
  • Mac/PC: Effectively syncs in real-time.
  • iOS: Mobius Sync syncs in the background at varied intervals determined by iOS (typically every 5-15min).
  • Syncthing is efficient and performant. Typical note content or images will sync within seconds. Handles large vaults without issue.
  • No storage thresholds, entirely self-hosted / private if desired.
  • Can sync hidden files / configurations, selectively sync folders, etc.

A few caveats:

  • Requires some technical know-how and ideally a server of some sort (NAS, PC) to facilitate transfers.
  • Background sync interval is not configurable, this is an iOS limitation. If you rapidly switch between devices and expect notes to always be up to date automatically, this may not be the optimal set up.
  • iOS Obsidian sandbox is quirky. Once set up, it generally just works - however app updates can break it requiring reconfiguration.
  • Sync is not backup. Make sure you have a separate backup solution. Using Git on the computer in conjunction with Syncthing is a good way to handle this.
  • Mobius Sync is a paid app, although at a very reasonable $5 USD.

Setup

Brief overview of the set up process below. I won’t go into the details of configuring desktop Syncthing, there are other guides out there that cover it.

Use a test vault during set up! Even when configuring sync for the live vault, it is best to use empty folders, and cut/copy files over manually after sync is confirmed working (make a copy of the entire vault to be safe).

  • Install and configure the official Syncthing client on your Mac/PC
  • (Optional) Install Syncthing client on an always-on “server” (NAS, PC, Pi, Docker)
  • Install and configure Mobius Sync Pro (see details below)
  • Add the server or computer as a Remote Device to Mobius, and share the folder you created
  • If using a “server”, accept the invitation, choose where to store notes, in turn share from server to computer
  • On computer, accept the invitation, choose where to store notes (this is where desktop Obsidian will open the vault from)
  • Copy some files to the vault on computer and verify both ends are syncing, open the vault in mobile Obsidian

Mobius Sync Configuration

  • Install Mobius Sync Pro on iOS device - ‎Möbius Sync Pro on the App Store
  • Add a folder, choose “Pick external folder” (this is the tricky bit), browse to the Obsidian folder, create a new folder to use (does not need to be an existing vault, Obsidian will still pick it up). This adds a “bookmark” which is a reference to the Obsidian sandbox folder. Leave the default options for now.
  • Expand the new folder in Mobius and choose “Open folder”. This will open the files app. Make sure it opens the folder located in the Obsidian directory. If you are in Mobius Sync directory, it has failed and you need to remove the folder in Mobius, kill the app and try again - see Syncing files from other apps · MobiusSync/MobiusSync · Discussion #102 · GitHub for additional suggestions.
  • Mobius Settings / iOS, verify the permissions are correct. Under background sync, the default intervals are fine (this is not the sync interval, iOS controls that). You will want to uncheck notifications at some point (it will generate one on every background sync).
  • Mobius Settings / Connections, recommend turning off Discovery, Relaying, NAT traversal, and set listen address to tcp://127.0.0.1:port to increase security.

Additional Notes

  • While Syncthing is decentralized (and could be used in a mesh), unless you have an always-on desktop, using a “server” in between is best so the iOS device can sync in the background on demand, with server always retaining a current copy of the vault.
  • Background sync in Mobius can take up to 24 hours to begin, this is normal. In the meantime, I recommend creating an iOS shortcut to open Mobius, then Obsidian, and add it to the home screen. This will serve as “manual sync” when needed, and also encourages iOS to optimize background sync during initial setup.
  • An always-on VPN is recommended so the iOS device can reach your server/device remotely during background sync.
  • If using a server, notes can be encrypted at-rest in the middle (they remain unencrypted on the end-devices). In this configuration, enter an encryption password when sharing the folder initially, and when accepting the folder on the server, set the mode to “receive encrypted”. Share from the server, and on the other device enter the encryption password.
  • Using a separate mobile configuration (.obsidian-mobile) reduces issues between desktop and mobile. (Yes you do have to duplicate plugins/css snippets/etc this way).
  • If using Git on the computer, add “.git” to the file exclusions in Syncthing, so git history isn’t synced to iOS.
8 Likes

Wow, I gave this a try - once you get past the initial set up, you really don’t even see or think about sync. iCloud is definitely getting replaced…

did anyone try to set up syncthing with docker and traefik?

Hi THis is very helpful. Thank you.
On that listening address, I can’t figure out what that means. I’m now turning off “enable nat traversal” “loca discovery” “global discovery” “enable relaying”. And giving the sync protocol listen addresses “tcp://127.0.0.1:8384”

Before setting connection, I can sync but now with the new setting, the sync doesnt work. would love to know who to solve it.

I have used this setup since November without any issues, thank you!
This week I moved to a new iPhone and the migration has not yet worked. There are a few issues that I have noticed:

  1. New iPhone has the same syncthing ID as the old iPhone
  2. I have not managed to use an external folder when I share the Obsidian folder from my NAS server to my new phone. It always ended up syncing the files into the syncthing folder instead of the external Obsidian folder.

Has anyone come across those issues and could give me a hint on how to solve them?
The only alternative I see right now would be to start the entire syncthing setup from scratch starting from my phone and then share the folders to the NAS and then to my Laptop. But if possible I want to avoid destroying the working setup between the NAS and the Laptop and just reintegrate my new phone.

I found it easiest to start from scratch… starting with my “master” device (PC), share to NAS, share to phone

In Mobius when you choose the external folder and save, an “Open Folder” option will appear. This should open the folder in iOS files. Make sure it shows correctly, re-add if necessary. For whatever reason it can take several tries, but works fine after that.

I came from the Android side of things, over to iOS just about when the iPhone 15 was released.

I had been using syncthing for years at that point, and have 2 always on machines acting as servers, and the source of sync when new devices connect to the node network.

Möbius sync works all right, but would benefit from being more “free” in the iOS ecosystem, meaning that the app sometimes stops syncing if not opened again, and can not continuously run in the background without intervention.

It is a seriously good piece of software though (both Syncthing and the Möbius implementation).

As an alternative to other methods of moving files around, I strongly believe that Syncthing offers the best and simplest solution when set up properly.

This is so helpful! It took me awhile to figure it out, but it is a game changer. Peer to peer sync is what I wanted all along but didn’t think it was possible. It’s working now!

Seems to have stopped working on ios with the latest obsidian update, I think the .stfolders marker was deleted as part of the upgrade, this breaks syncthing.

Haven’t had any issues with latest version. You may need to relink the folder in Mobius. I’ve found it helpful to delete the vault from all but the PC/Mac location and resync from scratch

Hi,

Fix was easy, as you said I just relinked and all was well. Could have been unrelated, but at the time I thought the obvious thing that happened was that the upgrade removed .stfolder

Thanks!

I want to give is a FUCK as THIS WORKS! I found a sync method over half year as the iCloud is SUCK and finally it works on the iPhone Local and sync with Macbook always!

1 Like

Try using tcp://127.0.0.1:22000 see Syncthing Configuration — Syncthing v1.27.7 documentation

Although I am, in principle, opposed to closed-source applications (including Obsidian), we owe a huge thank you to the Möbius app (including Obsidian).

Thank you for the writeup! With your help I was able to successfully get this syncing between my iPad/PC/Android. I was trying it the wrong way for a while before figuring out a method for my existing vault, I think I might’ve just been reading your instructions wrong. For clarification for other users here’s what I did:

On iPad

  1. Install Moebius Sync Pro
  2. Install Obsidian
  3. Create a tmp vault to create the Obsidian sandbox folder (the “Obsidian” folder under "On My iPad)
  4. From Moebius Sync, click “+ Add Folder”, and ensure you use the “Pick External Folder” to go to the “on My iPad/Obsidian” directory, and then create the folder you want to be your vault (I named it the same as my vault on Android/PC)
  5. Share that newly created folder to your other devices from Moebius.

On PC/Android

  1. When accepting the share request point the folder path (where this “new share” should go) on your PC/Android to the existing vault you wish to share. I think if you didn’t have an existing vault it could go anywhere.
  2. In my case, since I was already syncing between PC/Android, I paused the previous share/folder between them, and now they all share across the iPad sync. (having both sharing running ended up in a bunch of conflicts)

I tried a few different ways to share my existing folder/share to the iPad, but whenever I tried to select the Obsidian sandbox folder for the target location of it, it immediately failed saying it was an invalid folder.