by Klippel
Sync your vault with a Nextcloud folder over WebDAV, with conflict copies and deletion safeguards.
NextSync
Sync your Obsidian vault with a folder on your Nextcloud server over WebDAV. Works on desktop (Linux, Windows, macOS) and mobile (Android, iOS).
The plugin interface is currently in Brazilian Portuguese. Documentação em português: README.pt-BR.md.
Features
- Two-way sync between the vault and a Nextcloud folder of your choice.
- Change detection by local modification time and size plus the Nextcloud ETag, so only changed files are transferred.
- Conflict handling without data loss: when a file changes on both sides, the server version is kept as
note (conflito YYYY-MM-DD HHMMSS).mdnext to the local one. - Optional confirmation before deletions reach Nextcloud, both when you delete a note or folder and when a sync is about to delete files on the server.
- Safeguards against accidental mass deletion: a configurable deletion limit and a stop when either side suddenly appears empty.
- The app password is stored in Obsidian's secret storage, not in the plugin's configuration file.
- Manual sync (ribbon icon or command), automatic sync every N minutes, and sync on startup.
Requirements
- Obsidian 1.13.1 or later.
- A Nextcloud account and an app password (Personal settings → Security → Devices & sessions).
Installation
From Obsidian: Settings → Community plugins → Browse, search for NextSync, then install and enable it.
Manual installation: download main.js, manifest.json and styles.css from the latest release and copy them to <vault>/<configuration folder>/plugins/nextsync/ (the configuration folder is .obsidian by default).
Setup
- Open Settings → NextSync.
- Fill in:
- Server address: only the root of your Nextcloud, using HTTPS (for example,
https://cloud.example.com). - Username: your Nextcloud login.
- App password: pick or create a secret in Obsidian's secret storage.
- Remote folder: the Nextcloud folder that will mirror the vault. It is created if it does not exist.
- Server address: only the root of your Nextcloud, using HTTPS (for example,
- Select Testar conexão (Test connection).
How sync works
| Situation | Action |
|---|---|
| Changed only in the vault | Uploaded to Nextcloud |
| Changed only on Nextcloud | Downloaded to the vault |
| Changed on both sides | Conflict copy of the server version, local version kept and uploaded |
| New file on one side | Copied to the other side |
| Deleted in the vault | Deleted on Nextcloud (after confirmation, if enabled) |
| Deleted on Nextcloud | Local file moved to the trash chosen in Obsidian's Files and links → Deleted files setting |
| Deleted on one side and changed on the other | The changed version is restored |
On the first sync, files that exist on both sides are compared byte by byte. If they differ, a conflict copy is created and nothing is overwritten.
Disclosures
- Network use: the plugin connects only to the Nextcloud server you configure. It uses the Nextcloud WebDAV endpoint (
/remote.php/dav/files/…) to list, upload, download and delete files in the chosen folder, and the OCS API (/ocs/v2.php/cloud/user) to verify credentials and find your user ID. No other remote services are contacted. - Account: a Nextcloud account on a server of your choice is required.
- Payment: free. No payment is required.
- Telemetry: none.
- Vault access: to compare the vault with the server, the plugin lists every file in the vault and reads, creates, modifies and moves to the trash only the files inside the synced scope. The configuration folder, hidden files and the folders you choose to ignore are never read or uploaded.
- Files outside the vault: the plugin does not access files outside the vault.
Security
- HTTPS is required. Plain HTTP is accepted only for
localhost. - Sync of the account's root folder is not allowed; a remote folder is mandatory.
- Remote file names containing
.., backslashes or control characters are ignored. - Server-side deletions use
If-Matchwith the last known ETag. A file changed on Nextcloud since the last sync is never deleted; it is restored to the vault instead. - Local deletions follow Obsidian's deleted-files preference (vault
.trashfolder or system trash); server deletions go to the Nextcloud trash bin. - An app password stored in plain text by an earlier version is moved automatically to Obsidian's secret storage.
- Changing the server, user or remote folder resets the sync history automatically.
Known limitations
- Hidden files and folders, and the Obsidian configuration folder, are not synced.
- Empty folders are not created or deleted.
- Renaming a file is handled as a deletion followed by a creation.
- Transfers run one at a time.
Building from source
npm ci
npm run lint
npm run build
Requires Node.js 18 or later.
License
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.