Quick start for Obsidian users
This guide is for people who use Obsidian and want to put some notes on the internet. You don’t need to know TypeScript or how Astro works. You do need to open a terminal a few times.
Step 1: Install Node.js
Node.js is the runtime that builds your site. Go to nodejs.org and download the LTS version (22 or later). Run the installer. That’s it.
To confirm it worked, open a terminal and run:
node --version
You should see something like v22.x.x.
Step 2: Create your project
In your terminal, run:
npm create @karaoke-cms@latest my-site
When it asks questions, press Enter to accept the defaults. Then:
cd my-site
npm install
This may take a minute. It’s downloading everything the site builder needs.
Step 3: What got created
Your my-site folder now looks roughly like this:
my-site/
karaoke-website-vault/ ← your vault — this is where you write notes
blog/ ← blog posts go here
docs/ ← documentation pages go here
_website/ ← nav config and page templates — you rarely need to touch this
karaoke.config.ts ← site settings (title, modules, theme)
.env.default ← tells the framework where your vault is
astro.config.mjs ← Astro config — you don't need to touch this
package.json ← project metadata — you don't need to touch this
The most important folder is karaoke-website-vault/. That’s your Obsidian vault.
Step 4: Open the vault in Obsidian
In Obsidian, choose Open folder as vault and select the karaoke-website-vault folder inside your project. You can now write notes in Obsidian and they’ll feed directly into your site.
You can also open the my-site folder as a vault if you want to see the whole project in Obsidian, but opening just the vault folder keeps things cleaner.
Step 5: Write your first note
Inside Obsidian (or any text editor), create a file at karaoke-website-vault/blog/hello.md and add this at the top:
---
title: "Hello from my site"
publish: true
date: 2024-01-01
description: "My first published note."
---
This note will appear on my site because I added `publish: true` at the top.
The section between the --- lines is called frontmatter. It’s just metadata. The only field that controls whether a note is public is publish: true. Without it, the note stays private.
Step 6: Understand .env.default
Open .env.default in any text editor. It contains one line:
KARAOKE_VAULT=./karaoke-website-vault/
This tells the framework where your vault folder is. You don’t need to understand this file. Just know that if you ever rename your vault folder, you’ll need to update this line to match.
Step 7: Preview your site locally
In your terminal, from the my-site folder, run:
npm run dev
Open http://localhost:4321 in your browser. You should see your site with your first blog post. Press Ctrl+C to stop the server when you’re done.
Step 8: Push to GitHub
GitHub stores your site’s code and triggers automatic deploys whenever you save changes.
If you’re comfortable with the terminal:
git add .
git commit -m "My first site"
git remote add origin https://github.com/your-username/my-site.git
git push -u origin main
If you prefer a visual tool, GitHub Desktop is free and works well. Create a new repository from your my-site folder, then publish it.
Step 9: Deploy to Cloudflare Pages
Cloudflare Pages hosts your site for free and rebuilds it every time you push to GitHub.
- Go to dash.cloudflare.com and sign up or log in (free).
- In the sidebar, click Workers & Pages, then Create, then Pages.
- Click Connect to Git and authorize Cloudflare to access your GitHub account.
- Select your
my-siterepository. - On the build settings screen, fill in:
- Build command:
npm run build - Build output directory:
apps/website/dist
- Build command:
- Under Environment variables, add:
- Name:
KARAOKE_VAULT, Value:./karaoke-website-vault/
- Name:
- Click Save and Deploy.
After about two minutes your site will be live at a URL like my-site.pages.dev. Every time you push new notes to GitHub, the site rebuilds automatically.
What you should see
- Your blog post at
your-site.pages.dev/blog/hello - A tag index at
/tags - A search page at
/search
Notes without publish: true will never appear anywhere. karaoke-cms checks this automatically on every build.
What to do next
- Write more notes. Add
publish: trueto the ones you want public. - Read Core concepts to understand how the vault, privacy, and modules fit together.
- Look at
karaoke.config.tsto change your site title, description, or add new features.