Achieving a vault that is published directly from Obsidian was a bit of a technical goal. Definitely a journey and a step up from pushing HTML
1. Install Node via nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.bashrc
nvm install 22
node -v
npm -v
2. Scaffold Quartz into the repo
cd ~/flying-fish
npx quartz create
3. Install dependencies
npm install
4. Preview locally
npx quartz build --serve
Visit localhost:8080
5. Add wrangler.toml for Cloudflare deploy (repo root)
cat > wrangler.toml << 'EOF'
name = "flying-fish"
compatibility_date = "2026-01-01"
[assets]
directory = "public"
EOF
6. Cloudflare Pages build settings (Settings > Build configuration)
Build command: npx quartz build
Deploy command: npx wrangler deploy
Root directory: /
7. Commit and push
git add .
git commit -m "message"
git push
Cloudflare auto-deploys on push
8. Obsidian vault setup
Opened content/ folder as an Obsidian vault via “Open folder as vault” (not “Create new vault” — folder already had index.md in it)
Ongoing workflow from here
- Write/edit notes in Obsidian (vault = ~/flying-fish/content)
- Preview: npx quartz build —serve
- Publish:
git add .
git commit -m "..."
git push