2.0 KiB
2.0 KiB
Obsidian Sync Server
A headless Docker container that uses obsidian-headless to keep a local vault directory synchronized with Obsidian Sync.
Quick Start
-
Clone the repo:
git clone https://gitea-wc4w40kskg0c4g400s0wcgsg.coolify-7dou.ja7z.net/hermes/obsidian-sync-server.git cd obsidian-sync-server -
Configure the environment:
cp .env.example .envOpen
.envand fill in:VAULT_HOST_PATH— Absolute path on your host where notes will be stored (e.g./home/user/my-vault)OBSIDIAN_VAULT_NAME— Name of your remote Obsidian Sync vaultOBSIDIAN_SYNC_PASSWORD— Your end-to-end encryption passwordOBSIDIAN_DEVICE_NAME— How this device appears in your Sync history
-
Log in (one-time setup):
./login.shThis spins up a temporary container just for authentication. Your session is saved to the
./configfolder and will be reused by the main container automatically. You only need to do this once. -
Start the sync server:
docker-compose up -dThe container will now run continuously, syncing your vault in both directions.
How it Works
The container runs ob sync --continuous which:
- Cloud → Host: Pulls changes from Obsidian Sync down to your
VAULT_HOST_PATH - Host → Cloud: Pushes any local file changes back up to the cloud
If the container starts and is not logged in, it will print instructions and sleep (instead of crash-looping) so you can run ./login.sh.
Environment Variables
| Variable | Description |
|---|---|
VAULT_HOST_PATH |
Absolute path to the vault folder on your host machine (e.g. /home/user/my-vault) |
OBSIDIAN_VAULT_NAME |
The name of the remote vault to sync |
OBSIDIAN_SYNC_PASSWORD |
Your end-to-end encryption password |
OBSIDIAN_DEVICE_NAME |
Device name shown in Sync version history |
Requirements
- Docker & Docker Compose
- An active Obsidian Sync subscription