A self-hostable, fully static alternative to Obsidian Publish — built directly from your Obsidian vault.
Built with GitHub Copilot & Claude Sonnet 4.6 This project was developed entirely with the help of GitHub Copilot using the Claude Sonnet 4.6 (medium) model. From architecture decisions to implementation, testing, and documentation — every part of this codebase was created through AI-assisted development.
Obsidian Site takes your Obsidian vault — a folder of Markdown files, Canvas boards, and attachments — and compiles it into a fast, searchable, self-hostable static website. No subscription, no vendor lock-in, no server required at runtime.
| Feature | Details |
|---|---|
| Markdown | Full Obsidian syntax — wikilinks, callouts, highlights, comments, embeds |
| Full-text search | Client-side search across all notes (⌘K / Ctrl+K) |
| Graph view | Interactive knowledge graph of all note connections |
| Relations | Per-note backlinks, outlinks, and a mini graph in the right panel |
| Canvas (beta) | Render .canvas boards with zoom, pan, and node navigation |
| Mermaid diagrams | Flowcharts, sequence diagrams, class diagrams, and more |
| Sidebar | Folder tree, search, home and graph links |
| Tags | Inline #tag and frontmatter tags with search integration |
| Table of contents | Auto-generated TOC from headings in the right panel |
| Syntax highlighting | Shiki with github-dark theme, copy button on hover |
| Responsive | Mobile-friendly with collapsible sidebar |
| Theming | Customisable accent colour, fonts, and layout via vault.config.ts |
| Fully static | No backend, no server, no runtime dependencies |
# 1. Clone the repository
git clone https://github.com/tklein1801/obsidian-site
cd obsidian-site
# 2. Install dependencies
npm install
# 3. Place your vault notes in the vault/ directory
# (or symlink your existing vault)
ln -sf /path/to/your/vault vault
# 4. Start the dev server
npm run dev
# 5. Build for production
npm run build
# → static output in ./dist/The easiest way to host — no need to clone this repo at all. Drop a single Dockerfile into your vault folder:
my-vault/
├── Dockerfile ← copy from vault/Dockerfile in this repo
├── vault.config.ts ← optional configuration
├── index.md
└── ...
docker build -t my-docs .
docker run -p 8080:80 my-docs
# → http://localhost:8080See the Deployment docs for the full guide including Docker Compose, Netlify, Vercel, GitHub Pages, and nginx.
Edit vault.config.ts to customise your site:
export const siteConfig = {
siteName: 'My Knowledge Base',
homeNote: 'index',
lang: 'en',
accentColor: '#7c6aec',
};| Layer | Technology |
|---|---|
| Static site generator | Astro |
| Styling | Tailwind CSS |
| Interactive islands | React |
| Markdown pipeline | Remark + Rehype |
| Syntax highlighting | Shiki |
| Diagrams | Mermaid |
| Canvas renderer | React Flow |
| Testing | Vitest |
npm test # run tests
npm run test:coverage # coverage report
npm run build # production buildPre-commit hooks (Husky + lint-staged) run TypeScript type checking and the full test suite before every commit.
Obsidian® is a registered trademark of Dynalist Inc. This project is not affiliated with or endorsed by Obsidian.