WebDAV Sync is in Beta: General-Purpose, Robust WebDAV Syncing Plugin for Your Vault

WebDAV Sync is another unofficial syncing plugin for Obsidian, like Remotely Save and LiveSync.

The official Obsidian Sync service is excellent. Meanwhile, there are some users who are less willing to use it due to personal preferences, network restrictions, or economic incapabilities. This plugin is not to replace Obsidian Sync, but to provide another choice for those people.

GitHub repo:

Why another syncing plugin?

While there are already many solutions in the community, (from a personal experience) none of them can satisfy my needs (no discrimination, all based on fact):

  • Remotely Save: supports a lot of vendors, but is currently unmaintained and buggy (like deleted files come back, you can search for the issue with the same name in GitHub)
  • Git Integration: ideal for technical users, too heavy for daily syncing
  • Syncthing Integration: excellent P2P solution, but requires one of your devices to be always online
  • LiveSync: most robust, but requires a personal server.

I also found Nutstore Sync, which is an excellent syncing plugin but is designed for Nutstore only. Then I thought: why don’t we make it general-purpose? So I forked it, extensively overhauled it for no vendor lock-in, performance, and stability.

How to install?

This plugin has been submitted to the Obsidian release repo to be reviewed and included in the plugin registry. This process could take months. Before it’s done, you can install the plugin via the BRAT plugin:

  1. Go to Community plugins and search for BRAT
  2. Install and enable it
  3. Go to BRAT settings, click Add beta plugin, copy and paste https://github.com/hesprs/obsidian-webdav-sync into the Repository field
  4. Select the latest version and click Add plugin
  5. Enable the plugin, configure your WebDAV service, and then it’s done.

Final words

Although this plugin is robust enough when I’m using it. It’s better to back up your vault before usage to prevent accidental data loss.

If you find my work useful, please give me a GitHub star :star:! If you have additional questions, welcome to comment below!

2 Likes

Looks great, will give this a shot.

1 Like

How do I setup my username and password? I have no idea what I should add under credential, always a id+secret pair is requested, but my webdav server only wants username + password, AFAIK…?

The Account field should be your WebDAV username.

When configuring Credential, it might be confusing that it requires an ID+secret pair. Actually, this is the new Keychain feature of Obsidian. When adding a new secret, the ID it requested is like a name to a person, whose only purpose it to help Obsidian distinguish secrets and represent them without using the secret directly.

So to add a secret and use it in the Credential field, you can type anything you like to the ID field (for example, webdav-token), and input your true password into the Secret field. Click save and link the new secret to the plugin.

Hope this can answer your confusion.

1 Like

Hi community, I have a long-term plan to support S3 and S3-compatible storage, like what Remotely Save does. Currently, the plugin code is strongly reusable to adapt S3.

I need a polling to determine whether the plan is worthwhile. I recommend everyone who sees this participate in the 5-second anonymous polling to allow me to obtain a fair result, no matter you feel interested about S3 or not, thanks :heart:!

Pros of adapting S3:

  • you can use your S3 service for syncing
  • S3 will be conceivably faster and reliable than WebDAV
  • existing syncing logic will be reused, you will get similar plugin experience

Cons of adapting S3:

  • more development effort and potential bugs
  • slightly more overhead: S3 is useless for WebDAV users and vise versa, including both backends increases loading time

Note that apart from WebDAV and S3, all proprietary protocols and vendor-specific APIs (OneDrive, Google Drive, Dropbox) will not be planned in the near future. They add net overhead to the plugin and only benefit a small portion of users.

  • I’m using / planning to use S3 service, and I’m glad to see the S3 support
  • I don’t know / am not using S3, WebDAV alone already satisfies my needs
0 voters

This polling is also available on GitHub here.

I think I have found a better way to manage storage backend support, the pros & cons of S3 support described above no longer stands, it is closed now.

I’m considering whether to simply or remove the Smart Merge function in this plugin. We now have a new polling:

Status Quo

  • the plugin currently saves one historical version of the content for each markdown note in your vault in a database.
  • the only purpose of that database is to support Smart Merge conflict resolution strategy.
  • the need for conflict resolution is very rare. It is only required when you edit the same note at the same time on different devices. Except Smart Merge, the plugin supports other strategies like Latest Survive.
  • however, the cost of supporting this function is huge: the plugin needs to manage a database, consume a large amount of storage space, and create a lot of extra file I/O that may slow down the syncing process.

Solutions

  1. Remove Smart Merge completely, this will greatly simplify the codebase.
  2. Use two way merge instead of three way merge, this eliminates the need for a database and will also simplify the codebase a lot. The trade-off is less accurate merge result.
  3. Keep Smart Merge as-is.

Pros of Simplification

  • less storage space usage
  • smaller plugin size and faster load time
  • slightly faster syncing
  • better maintainability

Cons of Simplification

  • less accurate (solution 2) or no marge (solution 1) at all
  • you may need to tolerate the less accurate merge or switch to latest survive (remember that the need for Smart Merge is very rare)
  • (Remove) Remove “Smart Merge” completely
  • (Simplify) Use “two way merge” instead of “three way merge”
  • (Keep) Keep “Smart Merge” as-is
0 voters

This polling is also available on GitHub here.

I am having database issues with obsidian-livesync, so the less databases the better, in my view. I am going to give your plugin a shot and use it with my Nextcloud server.

Edit: I have set it up and it is successfully pushing my vault to my Nextcloud instance. Nice!

Note, I did not want to give my full Nextcloud username and password to the plugin, since I assume it just saves it to plugins/.obsidian/webdav-sync/data.json (I’m not sure?) Edit: it does not. It uses the Obsidian keychain to hide your password in a Chromium/Electron SecretStorage which is stored on your OS somewhere. That is very secure. Still, I would rather keep it out Obsidian if I can!

So I set up a dedicated share and a dedicated password using this guide for setting up a dedicated webdav sync folder for Zotero and the Nextcloud documentation on WebDAV shares. Here’s my best effort at instructions. I have edited them a few times. However, please note the security note at the bottom.

Using WebDAV with a dedicated share folder / dedicated password (see security note)

  1. Create a folder in Nextcloud. The name likely doesn’t matter (it does for Zotero but doesn’t appear to for this plugin). I created a folder /Obsidian sync
  2. Click the folder and select Info - then External Shares - then mark it ‘anyone with link can upload or delete.’
  3. Important: Add a share password and note it down somewhere. Let’s call it fold3rpassw0rd.
  4. The link will look like https://nextcloud.example.com/s/1337R4nd0mSh4r3S3cret
  5. Test your new share by copying it from the Nextcloud share link and then opening an Incognito window and opening the link. It should say “This folder is password protected.”
  6. Open the WebDAV Sync plugin settings.
    1. WebDAV server URL: http://nextcloud.example.com/public.php/webdav
    2. Account: 1337R4nd0mSh4r3S3cret ← use the folder name from step #3
    3. Credential: click to open the Add Secret window.
      1. ID is anonymous. This is required by Nextcloud as of 2026.
      2. Secret is fold3rpassw0rd ← your folder share password from step 3.
    4. Click “Check connection” and see if it is successful. If it is not, recheck your URL, Account name, and Secret.
    5. Remote directory: whatever you want. I made it my Vault name, so now my Vault is recognizable on my Nextcloud web portal as /Obsidian sync/vault
    6. Change other settings as you see fit
    7. Go back to the Note view. Bring up the command panel (Ctrl+P on Windows and Linux). Type “webdav” and select the option to sync now.
    8. The sync menu will ask you which local vault folders to sync. I unselected any dot folder which showed up just to avoid sync conflicts, and made sure all my notes were checkmarked

Security note:

Pros: the plugin can only access its own folder. This access is easily revoked from the Nextcloud web portal without touching your username, password, or MFA, or finding and deleting its app password (see instructions below). Since scope is limited, if an attacker finds it, only the vault folder is vulnerable.

Cons: your vault is theoretically publicly accessible to anyone with the link, but I think the risk is minimal for two reasons. First, you presumably set a good folder share password. If you did not set a folder password, anyone who finds the share link can read, edit, add, or delete notes. I tested this myself from an incognito window without a password. With a password, they have no access.

Secondly, because the link is obscure. I suppose there’s a non-zero chance someone might run a random link generator bot on your server and come across it, and then access your notes. Claude says there are ~36^15 possibilities so this is unlikely. In my case, my notes are not sensitive.

I am not a security professional. Maybe your regular Nextcloud username and password is the way to go, I don’t know!

Normal private access, I think this gives the plugin full access but it also avoids exposing your folder to the public internet

If I had to guess, this is how you’d use your Nextcloud username and password like a normal person, assuming you have MFA set up:

  1. Your private WebDAV link is http://nextcloud.example.com/remote.php/webdav. You can find it in the Nextcloud web view, select Files, then the gear at the bottom right. Copy the WebDAV link supplied.
  2. Generate an app password.
    1. In that same screen in the Nextcloud Files settings, it may say “Create an app password. This is required because Two Factor Authentication is set up for this account.”
    2. Alternatively, go to Nextcloud’s Personal Settings, Security, and scroll way down to “Generate a new app password.”
  3. In WebDAV Sync settings, follow the instructions above, but using your private WebDAV URL, your real account username, and your generated app password. Test the connection and then sync.

:loudspeaker: v3 Rewrite Completed

The completion of v3 rewrite marks a generational landmark, the entire project is torn down then rebuilt from ground up, renamed as “Sync Engine”. V3 is a revolutionary solution for vault syncing: not only a plugin, it is a modular platform that everyone can build upon.

With the revolutionary advancement in modularization, the plugin now allows you (and your AI agents) to write your own modules, extend the plugin behavior, without modifying its source code. The plugin also can move beyond WebDAV, the support of new backends (S3, GDrive, …) is now as easy as writing a module and put it in the modules folder. Documentation, SDK, and AI agent skill will be released soon.

Also, with aggressive optimization, we further shrank the plugin loading and syncing time. Powered by Anchored Asymmetric Storage, each sync is now fast as if you have a dedicated server (of course, this requires your service doesn’t have rate limit).

V3 detail see feat/fs branch on GitHub.

V3 is now in beta testing (while the main branch is still v2), to try it out in advance, you can download in the following way (it is OK if you don’t want to use v3 now. When it is formally released, you will be automatically migrated to v3):

  1. Go to Community plugins and search for BRAT.
  2. Install and enable it.
  3. Click Add beta plugin and fill https://github.com/hesprs/obsidian-webdav-sync into repository.
  4. Select Latest and install + enable Sync Engine.

Configuration:

  1. Go to plugin settings, find Module management, open the panel.
  2. Browse and install needed translations and backends.
  3. Configure your backend, automatic connectivity check is shown as an icon inside Storage backend entry.
  4. Start your first sync.
1 Like