--- type: project status: completed domain: [infra, knowledge, software] commits: 15 period: 2026-04-26 → 2026-06-07 tags: [project, self-hosting, pkm] --- # 🗄️ obsidian-stack — Self-Hosted Obsidian > The infrastructure powering *this vault*. Self-hosted Obsidian with end-to-end sync and automated backup. ## Components - **CouchDB 3.3** — LiveSync backend at `couchdb.manohargupta.com` (`require_valid_user`) - **Ignis** (`nobbe/ignis:latest`) — real Obsidian in the browser at `notes.manohargupta.com`, vault bind-mounted at `/opt/obsidian/vaults/main` - **Self-hosted LiveSync** plugin — CouchDB sync across desktop / web / mobile - **Hourly cron** → git commit + push to **Forgejo** (`git.manohargupta.com:2222`) - Deployed via **[[Self-Hosting|Dokploy]]**; reachable over Tailscale `100.75.128.45` ## Key lessons learned - Forgejo SSH is on **port 2222** (host sshd owns 22) - `git config --global --add safe.directory` needed (vault owned by uid 1000) - Files created directly on disk need LiveSync **scan + unlock** before they replicate (the "remote rebuilt/corrupted" trap) → [[Self-Hosting]] - Secrets only in Dokploy env ([[Decision Log#TD-006]]) ## Outcome Full bi-directional sync verified across web ↔ CouchDB ↔ desktop; 10 plugins installed (Dataview, Templater, Periodic Notes, Calendar, Tasks, QuickAdd, Tag Wrangler…). ## Related [[Self-Hosting]] · [[Cortex]] · [[Operations Overview]] · [[Deployment Checklist]]