Files
quartz/content/20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Selfhosted Live Sync.md
Quartz Syncer fe0581e423
All checks were successful
Build and Deploy Quartz / build (push) Successful in 27s
Published multiple files
2026-02-05 12:24:25 -07:00

3.9 KiB

publish, permalink, title, created, modified, tags, cssclasses
publish permalink title created modified tags cssclasses
true /sh/garden/livesync Self-hosted LiveSync 2026-02-05T09:58:59.620-07:00 2026-02-05T12:21:13.920-07:00
self_hosting
obsidian
sync

Self-hosted LiveSync is a community plugin for 20-29 HOBBYS/22 SELF HOSTING/22.11 DIGITAL GARDEN/Obsidian that enables real-time synchronization across devices using CouchDB or object storage.

Features

  • Real-time sync — Changes sync immediately
  • Conflict resolution — Automatic merging of simple conflicts
  • End-to-end encryption — Data encrypted before leaving device
  • Self-hosted — Your data on your server
  • Multi-platform — Works on all Obsidian platforms (desktop, mobile)

Architecture

Device A (Obsidian) ←→ CouchDB Server ←→ Device B (Obsidian)

All devices sync to a central CouchDB instance. Changes propagate in real-time.

Server Setup (CouchDB)

# docker-compose.yml
version: "3"
services:
  couchdb:
    image: couchdb:latest
    restart: always
    ports:
      - "5984:5984"
    environment:
      - COUCHDB_USER=admin
      - COUCHDB_PASSWORD=your-secure-password
    volumes:
      - ./couchdb-data:/opt/couchdb/data
docker-compose up -d

Configure CouchDB

Access Fauxton UI at http://server:5984/_utils

  1. Create a database for your vault (e.g., obsidian-vault)
  2. Configure CORS if accessing from different domains

CORS Setup

In Fauxton → Configuration → CORS:

  • Enable CORS
  • Set origins to app://obsidian.md and your domain

Or via curl:

curl -X PUT http://admin:password@localhost:5984/_node/_local/_config/httpd/enable_cors -d '"true"'
curl -X PUT http://admin:password@localhost:5984/_node/_local/_config/cors/origins -d '"app://obsidian.md"'
curl -X PUT http://admin:password@localhost:5984/_node/_local/_config/cors/credentials -d '"true"'
curl -X PUT http://admin:password@localhost:5984/_node/_local/_config/cors/methods -d '"GET, PUT, POST, HEAD, DELETE"'
curl -X PUT http://admin:password@localhost:5984/_node/_local/_config/cors/headers -d '"accept, authorization, content-type, origin, referer"'

Plugin Setup

  1. Install Self-hosted LiveSync from Obsidian Community Plugins
  2. Open plugin settings
  3. Configure connection:
    • URI: https://couchdb.example.com
    • Username: your CouchDB user
    • Password: your CouchDB password
    • Database: obsidian-vault
  4. Set up encryption passphrase (all devices must use same passphrase)
  5. Test connection
  6. Enable sync

Sync Modes

Mode Description
LiveSync Real-time sync (uses more bandwidth)
Periodic Sync at intervals
On file save Sync when files change

Customization Sync

Sync settings, themes, plugins across devices:

Settings → Customization Sync → Enable

Select what to sync:

  • Settings files
  • Snippets
  • Themes
  • Plugins (careful with this)

Encryption

Always enable end-to-end encryption:

  1. Settings → Encryption → Enable
  2. Set passphrase (same on all devices)
  3. All data is encrypted before upload

Troubleshooting

Sync not working

# Check CouchDB is running
curl http://localhost:5984

# Check database exists
curl http://admin:password@localhost:5984/obsidian-vault

Conflicts

Plugin shows conflict indicator. Open note to resolve:

  • View both versions
  • Choose or merge manually
  • Conflicts auto-resolve if possible

Rebuild database

If sync gets corrupted:

  1. Disable sync on all devices
  2. Delete database in CouchDB
  3. Re-create database
  4. Rebuild from primary device
  5. Re-enable on other devices

Alternatives to CouchDB

LiveSync also supports:

  • MinIO (S3-compatible)
  • Cloudflare R2
  • AWS S3
  • WebRTC (peer-to-peer, experimental)

Resources