Self-hosted LiveSync

by vorotamoroz
5
4
3
2
1
Score: 82/100

Description

Category: File Management

The Self-hosted LiveSync plugin is a community-developed synchronization solution for Obsidian users who want to keep their notes fully private. This plugin uses CouchDB or Object Storage as its server, ensuring efficient and secure data transfer. With automatic merging of conflicted modifications, this plugin reduces traffic and ensures seamless collaboration. Additionally, it supports end-to-end encryption, customization sync, and hidden file synchronization. Perfect for researchers, engineers, and developers who prioritize security and control over their data.

Reviews

  • Francois Theron
    Reviewed on Jun 21st, 2026
    No review text provided.

Stats

11697
stars
754,254
downloads
421
forks
1,748
days
0
days
2
days
212
total PRs
18
open PRs
49
closed PRs
145
merged PRs
669
total issues
329
open issues
340
closed issues
188
commits

Latest Version

2 days ago

Changelog

1.0.0

27th July, 2026

The work towards 1.0 has become so substantial that I have written an article about it (linked again here).

Setup and compatibility

Improved

  • An unconfigured Vault now waits for the user to start setup. Onboarding is offered through a persistent Notice and remains available from Self-hosted LiveSync settingsSetup.
  • Setup now creates named CouchDB, Object Storage, and P2P connections. Setup URIs preserve their connection names and selections, and reserve Fetch or Rebuild before the ordinary start-up scan begins.
  • Manual CouchDB setup distinguishes creating the first database from connecting another device. Onboarding requires a successful connection, while Settings can explicitly save an unverified connection and offers each server-setting correction separately.
  • Compatible differences limited to the chunk hash algorithm, chunk size, or splitter version are aligned automatically by default. Existing chunks remain readable, an explicit opt-out remains available, and differences involving incompatible settings still require review.

Fixed

  • Existing Vaults retain their effective legacy settings, including the case-insensitive file-name fallback used when an older release had no explicit case setting.

Security

  • Fly.io setup generates CouchDB and Vault encryption secrets with cryptographically secure randomness.
  • Dependency updates address excessive CPU use from crafted path patterns and mailto: links.

Conflict handling and recovery

Improved

  • Not now postpones repeated automatic merge dialogues while retaining the unresolved-conflict warning. Three or more live revisions are reviewed one reproducible pair at a time, completed pairs remain resolved across restart, and explicit commands can reopen a postponed conflict.
  • Inspect conflicts and file/database differences compares the Vault with the database winner and every live conflict revision. Compact indicators show missing chunks, Δsize, Δtime, whether the Vault matches the winner, and whether conflicts remain.
  • Each reported file and live revision has a compact wrench menu for comparison, applying an exact readable revision, recording an exact byte match, storing the Vault content as a child of a selected branch, retrying missing chunks without changing the tree, or explicitly discarding one selected live branch.

Fixed

  • Automatic text and structured-data merge now uses the nearest revision actually shared by both branches. A resolution received from another device no longer recreates the same conflict merely because the Vault still contains the exact content of the removed branch.
  • Edits, logical deletions, and renames made while a file remains conflicted extend the revision displayed on that device. When the relationship cannot be proved, LiveSync preserves the branches for review.
  • Unreadable live revisions are preserved during automatic handling. An absent Vault file and a winning logical deletion are treated as agreement unless another live branch still requires attention.
  • Garbage Collection V3 is limited to CouchDB and now protects every live conflict branch, required shared ancestry, and shared chunks. It stops when device progress cannot be verified and reports compaction failure without a contradictory success message.

P2P and optional synchronisation features

Improved

  • P2P and Hidden File Sync remain supported opt-in features. Customisation Sync remains a supported Advanced workflow, while Data Compression remains available but disabled by default.
  • P2P controls remain outside the ordinary CouchDB experience until P2P is configured. The current status pane distinguishes announcing changes, following a peer, and persistent per-device actions.
  • P2P setup and guidance now distinguish the required signalling relay from optional TURN and describe the replaceable public relay's privacy and availability limits.
  • Enabling Hidden File Sync opens one progress Notice before saving the setting and reuses it until the initial scan has finished instead of stacking phase, reload, and restart messages.

Fixed

  • First-device P2P setup can complete its signalling test without another peer online. Fetch on an additional device still requires an available source peer and a completed P2P Rebuild.
  • P2P relay connections now close and are recreated reliably after settings changes and database resets.

Interface, translation, and operations

Improved

  • Command-palette actions now use clearer names and appear only when their feature and current context make them usable. Renamed commands retain their identifiers so that existing hotkeys continue to work.
  • Setup and review dialogue text can be selected for copying or translation.
  • Remote-size warnings use persistent clickable Notices. Initial uploads and Rebuild no longer ask to send every chunk in advance; ordinary replication completes the transfer.
  • Obsolete controls for the plug-in trash setting and fixed chunk revisions were removed. The Change Log remains available but no longer opens automatically or tracks an unread count.
  • Self-hosted LiveSync now owns its translation catalogue. Commonlib supplies canonical English to other consumers, while translation contributions can be made in the main Self-hosted LiveSync repository.

Fixed

  • Applying an available interface translation no longer holds start-up behind an unsolicited dialogue; a persistent Notice opens the existing details on demand.
  • Action buttons are arranged for narrow mobile screens, long dialogues keep their controls reachable, and persistent Notices no longer cover close controls.

Storage and file selection

Fixed

  • The optional Custom HTTP Handler used by Object Storage sends the correct byte range from binary request bodies and reports unsupported body types instead of silently sending an empty request.
  • Broadening selectors, ignore rules, size or modification-time limits, or file-name case handling now rechecks previously received files without requiring another remote update.
  • Start-up and full-inspection scans omit built-in legacy LiveSync log files and recovery flag files before comparing Vault and local-database state. Existing ignored database records remain untouched, and user-configured ignore behaviour is unchanged.

Command-line tool

Fixed

  • CLI Setup URI validation now uses the supported Commonlib ESM package interface.
  • The non-root Docker image no longer depends on permissions inherited from the source checkout.

Security

  • The CLI rejects detected path traversal and symbolic-link components before Vault operations.

Validation

Testing

  • Expanded automated Real Obsidian coverage for upgrades, two-device synchronisation, CouchDB, Object Storage, P2P, Hidden File Sync, mobile dialogues, conflict and revision recovery, failure diagnostics, and strict clean-up.
  • Real CouchDB integration coverage verifies logical deletion, shared and conflict chunk retention, compaction, downstream replication, and recreation of content-addressed chunks.
  • An encrypted Real Obsidian reconnect scenario replaces the remote Security Seed while one client retains the previous value, verifies that synchronisation adopts the replacement without restoring the old value, and proves a bidirectional encrypted round-trip.
  • The plug-in code in this release was installed through BRAT and validated on macOS, iOS, and Android, including upgrade from 0.25.83, bidirectional synchronisation, P2P setup, conflict handling, recovery controls, mobile layouts, and start-up with existing configurations.
  • Native and non-root Docker CLI scenarios cover setup, write, read, list, information, deletion, conflict resolution, and revision retrieval with the packaged Commonlib dependency.

README file from

Github

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.

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.