I do a lot of my work on a home server and wanted to use my Obsidian vault there. Mounting it over Samba didn't work well for me, so I built Wiki-Web: a self-hosted, Obsidian-style web app that reads and edits Markdown files directly from the server.
I've been using it with my own vault for the past couple of months and thought I'd share it with you guys.
- Browse folders and Markdown notes, with preview and source editing.
- Search note names, folders, and note contents.
- Open
[[wikilinks]]and see linked notes in an interactive graph. - Create notes and folders; edit existing notes in place.
- Work with frontmatter, checklists, tabs, and split views.
Requires Node.js and npm. Tested with Node.js 22.
-
Clone this repo:
git clone git@github.com:utpalsinghdev/wiki-web.git
Use
https://github.com/utpalsinghdev/wiki-web.gitinstead if you don't have an SSH key configured for GitHub. -
Connect your vault. Put your existing Obsidian vault (the folder containing your
.mdnotes) next towiki-web/and name itVault, or create a symlink at that location:workspace/ ├── Vault/ # your notes, outside the repo │ └── My note.md └── wiki-web/ └── package.jsonExample for an existing vault elsewhere on your computer (run from inside
wiki-web/):ln -s "/absolute/path/to/your/vault" ../VaultIf
../Vaultalready exists, don't overwrite it; move or rename that directory first, or changevaultRootinvite-plugin-vault.tsto point to your vault. The vault is not copied into this repo or uploaded to GitHub. The server accesses the files directly and writes edits back to them, so back up your vault before trying it with notes you care about. Only Markdown files appear in the explorer;.obsidian,.git, andnode_modulesdirectories are skipped. -
From
wiki-web/, install dependencies and start the server:npm ci npm run dev
-
Open
http://localhost:4000. Your notes should appear in the sidebar. There is no vault-path setting in the UI yet.
This is a Vite development server with a local file-backed API, not a packaged production server. npm run build only creates frontend assets; it does not create a standalone backend for vault access. To keep the API working, run npm run dev on the host with the vault mounted at ../Vault.
Do not expose the server directly to the public internet. It currently binds to 0.0.0.0, has no authentication, accepts arbitrary hostnames, and provides read/write access to your Markdown vault. Use a private network or an access-controlled proxy if you need remote access. Do not treat the included ecosystem.config.cjs as a portable deployment recipe: it points to a machine-specific Node installation.
Personal project, shared as-is. Not a drop-in replacement for every Obsidian feature or plugin. Current build/typecheck has outstanding errors outside the README; check and resolve those before treating this as a production-ready deployment.
MIT. See LICENSE.
