explaingit

vrtmrz/obsidian-livesync

10,819TypeScriptAudience · developerComplexity · 3/5LicenseSetup · hard

TLDR

Self-hosted LiveSync is an Obsidian plugin that syncs your notes across devices using your own CouchDB server or S3 storage, keeping your data private without paying for Obsidian Sync or relying on any third-party cloud.

Mindmap

mindmap
  root((repo))
    What It Does
      Obsidian note sync
      Self-hosted storage
      Privacy focused
    Backends
      CouchDB server
      Cloudflare R2
      Amazon S3
      Peer-to-peer WebRTC
    Features
      End-to-end encryption
      Conflict resolution
      Plugin and theme sync
    Audience
      Privacy-conscious users
      Self-hosters
      Researchers
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Sync your Obsidian notes across laptop, phone, and tablet using a self-hosted CouchDB server instead of Obsidian Sync.

USE CASE 2

Use Cloudflare R2 or Amazon S3 as cheap object storage to sync your Obsidian vault without running a database server.

USE CASE 3

Keep researcher or developer notes private with end-to-end encryption before any data leaves your device.

USE CASE 4

Sync Obsidian plugins, themes, and settings across devices so your workspace stays identical everywhere.

Tech stack

TypeScriptCouchDBWebRTC

Getting it running

Difficulty · hard Time to first run · 1h+

Requires self-hosting a CouchDB server or configuring S3-compatible storage, incompatible with Obsidian's official Sync service.

Free to use for any purpose, personal or commercial, with no restrictions.

In plain English

Self-hosted LiveSync is a plugin for Obsidian, which is a note-taking application that stores notes as plain text files on your device. The plugin adds real-time synchronization across multiple devices without relying on Obsidian's own paid sync service or any third-party cloud storage that you don't control. Instead of trusting a company's servers with your notes, this plugin lets you run your own sync server. It works with CouchDB, a well-established open source database, which you can self-host on a server you own or on inexpensive cloud platforms. It also supports object storage services like Cloudflare R2 or Amazon S3 as an alternative. For users who don't want any server at all, there is an experimental peer-to-peer option using WebRTC, which lets two devices sync directly when they are both online. The plugin handles conflicts when the same note has been edited on two devices before syncing. Simple conflicts can be merged automatically. It also syncs your Obsidian settings, custom themes, code snippets, and other plugins, not just your notes, so your workspace stays consistent across devices. End-to-end encryption is supported, meaning your data is encrypted before leaving your device and can only be decrypted by your own devices. This is particularly aimed at people with privacy requirements, such as researchers or developers who cannot store their notes on someone else's servers. The README is clear that this plugin is incompatible with the official Obsidian Sync service and warns against running both at the same time to avoid data corruption. It provides setup guides for deploying CouchDB on several platforms. The plugin is community-developed, open source, and released under the MIT license.

Copy-paste prompts

Prompt 1
Walk me through deploying a CouchDB server on a $5 DigitalOcean droplet and connecting Self-hosted LiveSync to sync my Obsidian vault across my Mac and iPhone.
Prompt 2
How do I configure Self-hosted LiveSync to use Cloudflare R2 as the sync backend instead of CouchDB? What are the tradeoffs?
Prompt 3
Set up end-to-end encryption in Self-hosted LiveSync so my notes are encrypted before syncing. How do I configure the passphrase and what does it protect against?
Prompt 4
Self-hosted LiveSync says my notes have a sync conflict. How does the conflict resolution work and how do I merge the two versions?
Open on GitHub → Explain another repo

← vrtmrz on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.