Obsidian LiveSync CLI
ghcr.io/vrtmrz/livesync-cli:latest
https://github.com/vrtmrz/obsidian-livesync/pkgs/container/livesync-cli
bridge
false
https://github.com/vrtmrz/obsidian-livesync/issues
Headless Self-hosted LiveSync client that continuously synchronizes a local Obsidian vault with CouchDB without running Obsidian.
Backup: Tools:
https://raw.githubusercontent.com/Lowess/docker-templates-unraid/main/Lowess/obsidian-livesync-cli.xml
https://raw.githubusercontent.com/Lowess/docker-templates-unraid/main/Lowess/images/obsidian-livesync-cli.png
--entrypoint=/bin/sh
-c 'run_uid="${PUID:-99}"; run_gid="${PGID:-100}"; umask "${UMASK:-002}"; mkdir -p /data/.livesync; chown "$run_uid:$run_gid" /data /data/.livesync; if [ ! -s /data/.livesync/settings.json ] || ! grep -Eq "\"isConfigured\"[[:space:]]*:[[:space:]]*true" /data/.livesync/settings.json; then echo "Obsidian LiveSync CLI is waiting for its one-time setup."; echo "Open the container console and run:"; echo " setpriv --reuid=\$PUID --regid=\$PGID --clear-groups livesync-cli setup \"YOUR_SETUP_URI\""; echo "Enter the Setup URI passphrase when prompted, then restart this container."; exec setpriv --reuid="$run_uid" --regid="$run_gid" --clear-groups /bin/sh -c "trap exit TERM INT; while :; do sleep 3600 & wait \$!; done"; fi; if ! setpriv --reuid="$run_uid" --regid="$run_gid" --clear-groups test -w /vault; then echo "The vault at /vault is not writable by PUID $run_uid and PGID $run_gid."; echo "Correct the host-directory permissions, then restart this container."; exec setpriv --reuid="$run_uid" --regid="$run_gid" --clear-groups /bin/sh -c "trap exit TERM INT; while :; do sleep 3600 & wait \$!; done"; fi; set -- --vault /vault; case "${LOG_MODE:-normal}" in verbose) set -- "$@" --verbose ;; debug) set -- "$@" --debug ;; esac; if [ -n "${SYNC_INTERVAL:-}" ]; then set -- "$@" --interval "$SYNC_INTERVAL"; fi; exec setpriv --reuid="$run_uid" --regid="$run_gid" --clear-groups /usr/local/bin/livesync-cli "$@" daemon'
Obsidian LiveSync CLI is the official headless command-line client for Self-hosted LiveSync. It mirrors a local Markdown vault to the same CouchDB database used by the Obsidian plug-in.
FIRST-TIME SETUP:
1. In a working Obsidian device, open Self-hosted LiveSync settings and copy the current settings to a new Setup URI. Keep the URI and its one-time passphrase private.
2. Install and start this container. Until it is configured, it remains idle and prints setup instructions in its log.
3. Open the container console and run:
setpriv --reuid="$PUID" --regid="$PGID" --clear-groups livesync-cli setup "YOUR_SETUP_URI"
4. Enter the Setup URI passphrase when prompted, then restart the container.
PATHS:
- Database / Config stores the CLI's private local database and settings. It is not the Obsidian vault.
- Obsidian Vault is the directory containing the Markdown files to synchronize.
- Keep these mappings separate. Never map /data and /vault to the same host directory.
OPERATION:
- No ports or WebUI are required for CouchDB synchronization.
- The CouchDB address embedded in the Setup URI must be reachable from this container. An address using localhost refers to the CLI container itself, not the Unraid host or another CouchDB container.
- The default mode follows CouchDB's live changes feed. Set Sync Interval only when periodic polling is preferred or a reverse proxy cannot keep the changes feed open.
- The configured PUID and PGID must have read/write access to the mapped vault. The startup wrapper only adjusts ownership of the dedicated /data directory; it never changes vault ownership.
- Back up the vault before first use, and do not run another file-sync tool against the same server-side vault directory.
True
https://github.com/vrtmrz/obsidian-livesync
2026-09-21
###v1.0.0 (2026-09-21)
- Initial Unraid template release.
- Runs the official LiveSync CLI image as a continuous CouchDB-to-vault daemon.
- Adds an idle first-run state with interactive Setup URI initialization.
- Supports Unraid PUID, PGID, umask, polling interval, and verbose logging options.
bridge
/mnt/user/appdata/obsidian-livesync-cli
/mnt/user/obsidian
99
100
002
normal