Migrating from Obsidian Sync

Move from Obsidian Sync (Obsidian’s official paid sync service) to obsidian-remote-ssh. The plugin replaces Sync’s “vault on Obsidian’s servers” model with “vault on YOUR remote host” — same end-user experience, different ownership story.

Scope honesty: this page covers the parts I can verify about this plugin’s setup. For Obsidian Sync’s internal behaviour (history retention, end-to-end encryption keys, version recovery semantics), the canonical source is Obsidian’s own Sync docs. Parts of this guide say “check Obsidian’s docs for X” — those are deliberate gaps, not laziness.

What you keep, what you lose

What you keep

  • All vault content — your .md files, attachments, .obsidian/ plugin config, themes
  • Multi-device editing — both work; obsidian-remote-ssh handles concurrent clients via the per-Client-ID workspace partition
  • Your subscription cancellation — Obsidian Sync is no longer needed; you can cancel it after migration is verified

What you lose (and the replacements)

Obsidian Sync featureobsidian-remote-ssh equivalent
File version history (per-file rollback within Sync’s UI)None built into the plugin. Use server-side backups instead — rsync recipe
End-to-end encryption with your encryption passwordSSH transport encrypts in flight. At-rest encryption is your remote host’s responsibility (LUKS / FileVault / encrypted ZFS dataset). Obsidian Sync’s e2ee with a separate password is NOT replicated.
Cross-device automatic conflict resolutionThe plugin has conflict detection, but the resolution UI is unforgiving — no automatic backup of the rejected side. Read that page first.
Mobile syncNot yet — this plugin is desktop-only ([[en/roadmap|tracked in #151]]). Keep Sync if mobile editing is a hard requirement.
One-click recovery of accidentally-deleted notesRestore from your server-side backup (recipe)
Selective sync (some folders only)Not supported. The plugin syncs the whole configured vault root.

If any of those are critical for your workflow, reconsider the migration — or stay on Sync for the parts that need it (e.g., keep Sync for mobile, run obsidian-remote-ssh for desktop).

Pre-migration checklist

  1. Decide where the vault will live — your home Pi, a NAS, a cloud VPS. See RPi vault from scratch or Tailscale-shared host.
  2. Take a Sync history snapshot you trust — open Obsidian on your most up-to-date device, let Sync settle (status bar shows “Synced”), and stop editing for the migration window.
  3. Plan a switchover window — 30 minutes for a typical vault.
  4. Have a rollback plan — keep Sync subscription active until the new setup runs cleanly for at least a few days.

Migration steps

1. Export the vault to your laptop

Sync stores the canonical vault on Obsidian’s servers; your local copy is a synced replica. To migrate, the local replica is what you copy from.

On the device where Sync says “Synced” most recently:

# Find your vault path on disk (it's whatever you opened in Obsidian)
# macOS: ~/Documents/MyVault, Linux: ~/MyVault, Windows: C:\Users\you\Documents\MyVault
 
cp -a ~/MyVault ~/MyVault-migration-snapshot

The -a preserves timestamps + symlinks. This snapshot is your “if everything goes wrong, I have this” copy.

2. Strip Sync-specific state (optional but cleaner)

Inside the vault’s .obsidian/ directory, Sync writes some state files. They’re harmless to leave but harmless to remove:

# Remove Sync state (will be regenerated by Sync if you re-enable; ignored by us)
rm -f ~/MyVault-migration-snapshot/.obsidian/sync.json
rm -rf ~/MyVault-migration-snapshot/.obsidian/sync/   # if it exists

Don’t touch other .obsidian/ files — themes, plugins, hotkeys, workspace state should all come along.

Note: I don’t have a complete inventory of Sync’s on-disk state files. The sync.json and sync/ paths above are the commonly-named ones; check Obsidian’s Sync docs or your .obsidian/ directory for anything sync*-named that didn’t come from another plugin.

3. Set up the remote vault host

Per the Pi recipe or your equivalent:

ssh user@new-host 'mkdir -p ~/notes'

4. Upload the vault

rsync -aHx ~/MyVault-migration-snapshot/ user@new-host:~/notes/

For a large vault (1+ GB), this can take a while over WAN. tar-pipe is a faster alternative:

tar czf - -C ~/MyVault-migration-snapshot . | ssh user@new-host 'tar xzf - -C ~/notes'

Verify the copy on the remote:

ssh user@new-host 'find ~/notes -type f | wc -l'    # file count
ssh user@new-host 'du -sh ~/notes'                  # total size
# Compare against the local snapshot

5. Disable Obsidian Sync

In Obsidian → Settings → Sync → toggle off. Don’t delete your Sync data on Obsidian’s servers yet — that’s your rollback path.

6. Install obsidian-remote-ssh

Install via the standard install (Community Plugins store or BRAT). Add a profile pointing at user@new-host, vault path ~/notes. Connect. The new shadow vault opens with your full vault contents.

See First connect for what happens behind the scenes.

7. Verify everything works

  • Open a few notes including ones with images or attachments. Confirm they render correctly.
  • Edit + save a note. Verify on the remote: ssh user@new-host 'ls -lt ~/notes | head -3' — your edit should be on top.
  • Check key plugins — Dataview / Templater / Excalidraw etc. should work since they’re inside .obsidian/plugins/ on the remote vault. See plugin compatibility matrix for known sharp edges.
  • Confirm your themes + hotkeys came across.
  • Run for a week before cancelling Sync — gives you time to spot anything missing.

8. Set up backups (mandatory replacement for Sync’s history)

Obsidian Sync had per-file version history; the plugin doesn’t. The replacement is server-side incremental backups. Set up restic or borg per the backup recipe before you cancel Sync — losing both at once is not recoverable.

9. Cancel Obsidian Sync

After a week of clean operation + verified backup snapshots, cancel your Obsidian Sync subscription. Optionally, request deletion of your vault from Obsidian’s servers per their account-management process.

Multi-device handoff

If you used Sync to keep multiple laptops in sync, repeat these steps from each laptop’s POV:

  1. On laptop B, install obsidian-remote-ssh.
  2. Add the same profile (host + path) — same Client ID if you want shared workspace state, different if you want each device to have its own pane layout.
  3. Connect — the shadow vault on laptop B re-fetches from the same remote that laptop A is editing.

Per-device workspace state stays separated via the Client ID partition. Concurrent edits go through conflict handling.

Rolling back (if migration goes sideways)

While Sync is still active on Obsidian’s servers:

  1. In Obsidian, re-enable Sync.
  2. Sync rebuilds the local vault from its server-side copy (might take a moment).
  3. Stop using obsidian-remote-ssh until you’ve figured out what went wrong.

The pre-migration snapshot at ~/MyVault-migration-snapshot is the second-line fallback if Sync’s server-side copy is also bad.

See also

  • Install — getting obsidian-remote-ssh installed
  • RPi vault from scratch — for setting up a home server as your new vault host
  • Backup & restore — the mandatory replacement for Sync’s history
  • Conflict handling — important context on the lack of automatic backup-on-overwrite
  • FAQ — short comparison table with Sync, Syncthing, Dropbox
  • Obsidian Sync docs — canonical reference for Sync’s behaviour during migration