Find a file
vorotamoroz 3ba9feaac7
Some checks failed
cli-deno-tests / prepare (push) Has been cancelled
Deploy GitHub Pages / Validate and package Pages site (push) Has been cancelled
cli-deno-tests / compose-p2p-e2e (push) Has been cancelled
unit-ci / Self-hosted setup tools (push) Has been cancelled
unit-ci / Unit Tests (push) Has been cancelled
unit-ci / Integration Tests (push) Has been cancelled
Deploy GitHub Pages / Deploy GitHub Pages (push) Has been cancelled
cli-deno-tests / test (push) Has been cancelled
Merge pull request #1063 from vrtmrz/feature/p2p-connection-check
Add a browser-assisted P2P connection check
2026-08-01 03:51:06 +09:00
.github Fix stable release promotion order 2026-07-31 08:55:26 +00:00
_tools Check repository tools with community lint 2026-07-27 09:07:20 +00:00
docker prettified 2026-06-23 09:36:40 +01:00
docs Add browser P2P connection check 2026-07-31 14:13:34 +00:00
images Refresh setup guides and capture fixtures 2026-07-24 05:37:13 +00:00
instruction_images brushup readme 2021-10-13 21:38:44 +09:00
src Address WebPeer CSS review warnings 2026-07-31 17:56:26 +00:00
test Fix WebPeer interop test selector 2026-07-31 16:37:09 +00:00
utils Remove release instruction text assertions 2026-07-31 09:13:21 +00:00
utilsdeno docs: align package boundary proof with published artefact 2026-07-17 18:20:29 +00:00
.dockerignore Adopt the Commonlib-owned P2P transport 2026-07-18 16:05:01 +00:00
.eslintrc refactor: consume Commonlib as a package 2026-07-17 11:13:16 +00:00
.gitattributes Merge branch 'main' into main 2026-06-17 01:44:26 -03:00
.gitignore refactor: consume Commonlib as a package 2026-07-17 11:13:16 +00:00
.prettierignore Releasing 0.25.77 (#968) 2026-06-19 17:45:37 +09:00
.prettierrc.mjs Fix prettier config 2026-05-11 12:33:32 +01:00
.test.env Tests: 2026-01-09 11:46:37 +00:00
AGENTS.md Retire obsolete browser Harness 2026-07-20 13:22:22 +00:00
aggregator.html ### Fixed 2026-04-29 18:37:44 +09:00
CODE_OF_CONDUCT.md Write the minimal CoC. Welcome your feedback! 2026-06-19 12:13:23 +01:00
CONTRIBUTING.md Improve troubleshooting and compatible setting handling 2026-07-24 08:51:30 +00:00
devs.md Fix stable release promotion order 2026-07-31 08:55:26 +00:00
docker-compose.traefik.yml chore: attribute version is obsolete 2026-04-29 07:07:45 +00:00
esbuild.config.mjs refactor: consume Commonlib as a package 2026-07-17 11:13:16 +00:00
eslint.community.config.mjs Complete Commonlib rc.6 integration and setup workflows 2026-07-21 15:00:28 +00:00
eslint.config.common.mjs refactor: align platform APIs with community review 2026-07-17 14:47:27 +00:00
eslint.config.mjs refactor: align platform APIs with community review 2026-07-17 14:47:27 +00:00
example.env Improved: copy a dev build to vault folder 2025-10-04 17:12:37 +09:00
LICENSE documentation improvement 2021-10-15 01:27:24 +09:00
manifest.json Releasing 1.0.2 2026-07-31 07:28:27 +00:00
package-lock.json Releasing 1.0.2 2026-07-31 07:28:27 +00:00
package.json Add browser P2P connection check 2026-07-31 14:13:34 +00:00
pouchdb-browser.js - Reverted PouchDB direct importing. 2022-04-30 01:11:17 +09:00
README.md Link WebPeer from English README 2026-07-31 15:14:00 +00:00
README_cn.md Update README_cn.md 2026-01-08 01:41:07 +08:00
README_es.md Add translation ids 2025-01-22 13:41:18 -06:00
README_ja.md update docs 2026-06-05 03:05:13 +09:00
setup-flyio-on-the-fly-v2.ipynb Update setup-flyio-on-the-fly-v2.ipynb 2025-10-29 17:07:34 -08:00
styles.css Merge pull request #1009 from SeleiXi/feat/history-rev-nav 2026-07-31 13:43:14 +09:00
terser.config.mjs Update trystero, typed well. fixed some potentially problems 2026-05-22 11:01:51 +01:00
terser_vite.config.ts prettified 2026-02-21 14:12:05 +09:00
tsconfig.json refactor: compose browser application runtimes 2026-07-29 09:11:57 +00:00
update-workspaces.mjs Synchronise workspace lock dependencies 2026-07-15 14:13:43 +00:00
updates.md Add browser P2P connection check 2026-07-31 14:13:34 +00:00
updates_old.md Release 1.0.0 2026-07-27 08:12:33 +00:00
version-bump.mjs Automate and validate the release flow (#998) 2026-07-14 03:01:22 +09:00
versions.json Releasing 1.0.2 2026-07-31 07:28:27 +00:00
vite.config.ts refactor: consume Commonlib as a package 2026-07-17 11:13:16 +00:00
vitest.config.common.ts refactor: consume Commonlib as a package 2026-07-17 11:13:16 +00:00
vitest.config.e2e-runner.ts test: adopt macOS-safe real-Obsidian sessions 2026-07-20 08:54:20 +00:00
vitest.config.integration.ts ### Fixed 2026-06-12 11:33:07 +01:00
vitest.config.unit.ts refactor: compose browser application runtimes 2026-07-29 09:11:57 +00:00

Self-hosted LiveSync

Japanese docs - Chinese docs.

Self-hosted LiveSync is a community-developed synchronisation plug-in available on all Obsidian-compatible platforms. It leverages robust server solutions such as CouchDB or object storage systems (e.g., MinIO, S3, R2, etc.) to ensure reliable data synchronisation.

Additionally, it supports peer-to-peer synchronisation using WebRTC, enabling devices to exchange notes without a central data-storage server. A signalling relay is still required for peer discovery. See How peer-to-peer synchronisation works.

obsidian_live_sync_demo

Important

This plug-in is not compatible with the official "Obsidian Sync" and cannot synchronise with it.

Features

  • Synchronise vaults efficiently with minimal traffic.
  • Handle conflicting modifications effectively.
    • Automatically merge simple conflicts.
  • Use open-source solutions for the server.
    • Compatible solutions are supported.
  • Support end-to-end encryption.
  • Synchronise settings, snippets, themes, and plug-ins via Customisation Sync (Beta) or Hidden File Sync.
  • Enable supported, opt-in WebRTC peer-to-peer synchronisation.
    • No central data-storage server is required, but a signalling relay is still required for peer discovery.
    • At least one device containing the required data must be online while another device synchronises.
    • Follow the Peer-to-Peer Setup after reviewing the P2P communication model.
    • If you would like to see how P2P setup and connectivity behave on your devices, try the guided connection check in the experimental WebPeer browser utility. It uses an empty Vault and does not test note synchronisation. See the WebPeer documentation for its scope and limitations.

This plug-in may be particularly useful for researchers, engineers, and developers who need to keep their notes fully self-hosted for security reasons. It is also suitable for anyone seeking the peace of mind that comes with knowing their notes remain entirely private.

Important

  • Before installing or upgrading this plug-in, please back up your vault.
  • Do not enable this plug-in alongside another synchronisation solution (including iCloud and Obsidian Sync).
  • For backups, we also provide a plug-in called Differential ZIP Backup.

How to Use

3-minute setup - CouchDB on fly.io

Recommended for beginners

LiveSync Setup onto Fly.io SpeedRun 2024 using Google Colab

  1. Set up CouchDB on fly.io
  2. Configure plug-in in Quick Setup

Setup workflows

Choose a synchronisation method, prepare its server where required, then follow the corresponding client setup:

  1. CouchDB
    1. Prepare the server:
    2. Configure the clients by following CouchDB Quick Setup.
  2. Object Storage
    1. Prepare the server. A maintained MinIO server installation guide is not currently available here, so set up an S3-compatible service or server of your choice.
    2. Configure the clients by following Object Storage Setup.
  3. Peer-to-Peer
    1. No central data-storage server is required. The project's public signalling relay requires no server provisioning; controlled deployments can provide another compatible relay.
    2. Configure the clients by following Peer-to-Peer Setup.

Each workflow establishes ordinary note synchronisation on the first device, generates a Setup URI for each additional device from that working device, and verifies synchronisation in both directions.

Tip

Fly.io is no longer free. Fortunately, we can still use IBM Cloudant despite some limitations. Refer to Set up IBM Cloudant. We can also use peer-to-peer synchronisation without a central data-storage server; a signalling relay is still used for peer discovery. Alternatively, cheap object storage like Cloudflare R2 can be used for free. However, most importantly, we can use a server that we trust. Therefore, please set up your own server. CouchDB can also be run on a Raspberry Pi (please be mindful of your server's security).

Information in the Status Bar

Synchronisation status is shown in the status bar with the following icons.

  • Activity Indicator
    • 📲 A finite remote operation is in progress
    • 🌐N Approximate remote requests currently in progress
  • Status
    • ⏹️ Stopped
    • 💤 LiveSync enabled. Waiting for changes
    • Synchronisation in progress
    • ⚠ An error occurred
  • Statistical Indicators
    • ↑ Uploaded chunks and metadata
    • ↓ Downloaded chunks and metadata
  • Progress Indicators
    • 📥 Unprocessed transferred items
    • 📄 Working database operation
    • 💾 Working write storage processes
    • Working read storage processes
    • 🛫 Pending read storage processes
    • 📬 Batched read storage processes
    • ⚙️ Working or pending storage processes for hidden files
    • 🧩 Waiting chunks
    • 🔌 Working customisation items (configuration, snippets, and plug-ins)

To prevent file and database corruption, please avoid closing Obsidian until all progress indicators have disappeared as much as possible (although the plug-in will attempt to resume if interrupted). This is especially important if you have deleted or renamed files.

Tips and Troubleshooting

  • If you want a faster and simpler initial replication when setting up subsequent devices, see the Fast Setup Guide.
  • Configure Hidden File Sync only after ordinary note synchronisation works.
  • If Obsidian or LiveSync cannot start normally, use Recovery and flag files before changing or resetting a remote database.
  • Self-hosted LiveSync 1.0 requires Obsidian 1.7.2 or later. If you need to use 1.0 on an earlier Obsidian version, please open an issue with your version, platform, and reason for remaining on it so that we can assess whether extending support is practical. The standard Community Plugins installer otherwise selects an older compatible plug-in release.
  • If you are having problems getting the plug-in working, see Tips and Troubleshooting.

Acknowledgements

The project has been in continual progress and harmony thanks to the following:

May those who have contributed be honoured and remembered for their kindness and generosity.

Development Guide

Please refer to the Development Guide for development setup, testing infrastructure, code conventions, and more.

License

Licensed under the MIT License.