Why Pay $10 a Month When Your Own Server Can Do It?

Obsidian’s official Sync service costs $10 per month, and for a note-taking app that already respects your privacy, it feels like an odd tax to pay. The alternative most power users land on is self-hosting a CouchDB instance and pointing Obsidian’s sync plugin directly at it. You keep your notes encrypted, on your own hardware, accessible across every device – without routing anything through a third-party server.

This guide walks through setting up CouchDB on a home server or VPS, configuring it for remote access, and connecting Obsidian via the Self-hosted LiveSync community plugin. The setup takes about an hour the first time, and the result is a sync solution that costs nothing beyond your existing hosting.

CouchDB is the only real option here – LiveSync was built around its replication protocol specifically.

Photo by panumas nikhomkhai / Pexels

Installing and Configuring CouchDB

The cleanest way to run CouchDB for this purpose is through Docker. If you already have Docker installed on your server, pull the official image with docker pull couchdb and run it with a few environment variables set. You will need to define COUCHDB_USER and COUCHDB_PASSWORD at launch – these become your admin credentials. Map port 5984 to the host, and mount a local directory to /opt/couchdb/data so your database persists across container restarts. A basic run command looks like this:

docker run -d –name couchdb -e COUCHDB_USER=admin -e COUCHDB_PASSWORD=yourpassword -p 5984:5984 -v /path/to/data:/opt/couchdb/data couchdb:latest

Once the container is running, open a browser and navigate to http://yourserver:5984/_utils. This is Fauxton, CouchDB’s built-in admin interface. Sign in with the credentials you just set. The first thing to do is run the Setup wizard under the Admin menu – choose Single Node if you are not clustering, and confirm your server URL. After that, create a new database and name it something recognizable, like obsidian-vault. You will reference this exact name later in Obsidian’s plugin settings. At this point, CouchDB is technically running and ready, but it is only accessible on your local network.

Exposing CouchDB Securely Over HTTPS

Obsidian’s LiveSync plugin requires HTTPS when connecting over the internet. Sending your vault data over plain HTTP is not an option you want to take, so a reverse proxy with a valid SSL certificate is mandatory. Nginx or Caddy both work well here. Caddy is significantly easier for beginners because it handles certificate provisioning automatically through Let’s Encrypt – point your domain at your server’s IP, add a simple Caddyfile block that proxies to localhost:5984, and Caddy takes care of the rest. Nginx gives you more control if you already have a setup you prefer.

Photo by Alpha En / Pexels

Your Caddyfile block for this will look something like:

sync.yourdomain.com { reverse_proxy localhost:5984 }

That is genuinely the entire Caddy configuration for this. With Nginx, you will write a standard server block with proxy_pass http://localhost:5984, then run Certbot to attach the SSL certificate. Either way, once you can load https://sync.yourdomain.com/_utils in a browser and see Fauxton, the server side is done. One thing to check before moving on: CouchDB has a CORS setting that needs to be enabled if Obsidian is connecting from a different origin. In Fauxton, go to Configuration, find the CORS section, enable it, and add your origins or use a wildcard during testing. The plugin will silently fail to connect if CORS is blocking it.

Connecting Obsidian via the LiveSync Plugin

Open Obsidian, go to Settings, then Community Plugins, and search for Self-hosted LiveSync. Install and enable it. The plugin’s settings panel has a Setup Wizard option at the top – use it. It will ask for your CouchDB URI, database name, username, and password. Enter https://sync.yourdomain.com as the URI, the database name you created earlier, and your admin credentials. Hit the Test button. A green confirmation means the connection is working.

From there, decide on your sync strategy. LiveSync offers several modes: LiveSync (real-time, keeps a persistent connection), Periodic Sync (checks for changes on a schedule), and On-Save Sync (pushes changes whenever you save a file). For most people running this on a home server with variable uptime, Periodic Sync with a short interval is the most stable choice. Real-time sync is satisfying but can cause issues if the server drops connection mid-edit. Set a sync interval of 30 to 60 seconds and it will behave nearly identically to a live connection for everyday use.

Repeat the plugin installation and configuration on every device where you use Obsidian – phone, second laptop, tablet. Each device connects to the same CouchDB database, and the plugin handles conflict resolution when edits happen on multiple devices simultaneously. The conflict handling is not perfect, and on rare occasions you will find duplicate notes marked with a conflict suffix. This is a CouchDB replication behavior, not a plugin bug, and it shows up most often if you edit the same note offline on two devices before either syncs. Keeping sync intervals short reduces the odds considerably.

Photo by Vanessa Garcia / Pexels

One Last Thing Before You Go

Back up your CouchDB data directory on a schedule. The entire point of self-hosting is control, and a single drive failure with no backup will cost you everything you moved off Obsidian Sync to protect. Set up a nightly copy of your /opt/couchdb/data folder to a separate location – a second drive, a remote server, or an S3-compatible bucket – and you have a genuinely resilient note-taking setup that no subscription can touch. If you are already running other self-hosted services and want ideas for what to add next, Actual Budget is worth a look as a self-hosted personal finance tracker that follows the same philosophy: your data, your server, no monthly fee.

Exit mobile version