No description
Find a file
2026-06-08 19:29:33 +09:00
.github Update actions 2026-05-21 10:02:46 +01:00
docs update docs 2026-06-05 03:05:13 +09:00
images Add Note. 2024-05-27 04:11:44 +01:00
instruction_images brushup readme 2021-10-13 21:38:44 +09:00
src fix corrupted test, update submodule 2026-06-08 11:10:37 +01:00
test - Update trystero to v0.23.0 2026-03-31 07:17:51 +00:00
utils fixed: Now Chunk Splitter: V3: Fine Deduplication is working fine again (#866). 2026-05-19 11:26:35 +01:00
.dockerignore - Update trystero to v0.23.0 2026-03-31 07:17:51 +00:00
.eslintrc Refactor: Move webpeer from lib to main repository. 2026-01-26 09:17:01 +00:00
.gitattributes Added a bit for development on Windows. 2026-04-02 10:31:03 +01:00
.gitignore chore: lint: enable cache and concurrency 2026-05-26 11:24:41 +01:00
.gitmodules Refactored and touched up some. 2022-04-28 18:24:48 +09:00
.prettierignore chore(formatting): ignores generated code in pretty 2024-11-11 09:45:53 +00: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 update docs 2026-06-05 03:05:13 +09:00
aggregator.html ### Fixed 2026-04-29 18:37:44 +09:00
devs.md Merge branch 'improve_first_fetch' into 0_25_71 2026-06-03 11:03:46 +01:00
docker-compose.traefik.yml chore: attribute version is obsolete 2026-04-29 07:07:45 +00:00
esbuild.config.mjs chore: Package modernise, update linter 2026-05-13 14:06:51 +01:00
eslint.config.mjs Aligned to eslint rules and fixed following things: 2026-06-01 05:28:03 +01: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 bump 2026-06-08 11:15:13 +01:00
package-lock.json bump 2026-06-08 11:15:13 +01:00
package.json bump 2026-06-08 11:15:13 +01:00
pouchdb-browser.js - Reverted PouchDB direct importing. 2022-04-30 01:11:17 +09:00
README.md update docs 2026-06-05 03:05:13 +09: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 tweak specificity 2026-06-08 11:18:35 +01: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 (chore): tidied tsconfig and eslint, and some incorrect imports 2026-05-28 04:42:03 +01:00
updates.md bump 2026-06-08 11:15:13 +01:00
updates_old.md bump 2026-06-04 10:44:56 +01:00
version-bump.mjs bump 2026-05-17 13:13:21 +09:00
versions.json bump 2026-05-13 14:44:38 +01:00
vite.config.ts prettified 2026-02-21 14:12:05 +09:00
vitest.config.common.ts ### Fixed and refactored 2026-02-27 11:00:30 +00:00
vitest.config.p2p.ts chore: Package modernise, update linter 2026-05-13 14:06:51 +01:00
vitest.config.rpc-unit.ts feat: use new p2p-rpc wrapper 2026-05-11 03:49:35 +01:00
vitest.config.ts chore: Package modernise, update linter 2026-05-13 14:06:51 +01:00
vitest.config.unit.ts fix importing issue and unit test issue 2026-06-03 06:58:19 +01: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 you to synchronise your notes directly between devices without relying on a server. Documentation is available for Peer-to-Peer Synchronisation.

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 WebRTC peer-to-peer synchronisation without requiring a host (Experimental).
    • This feature is still in the experimental stage. Please exercise caution when using it.
    • WebRTC is a peer-to-peer synchronisation method, so at least one device must be online to synchronise.
    • Instead of keeping your device online as a stable peer, you can use two pseudo-peers:
      • livesync-serverpeer: A pseudo-client running on the server for receiving and sending data between devices.
      • webpeer: A pseudo-client for receiving and sending data between devices.
      • A pre-built instance is available at fancy-syncing.vrtmrz.net/webpeer (hosted on the vrtmrz's blog site). This is also peer-to-peer. Feel free to use it.
    • For more information, refer to the English explanatory article or the Japanese explanatory article.

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

Manual Setup

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

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 server. 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
    • 📲 Network request
  • 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.
  • 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.