DEV Community

Long Si
Long Si

Posted on

I Self-Host My Private Notes App on Cloudflare for $0/Month — Here's the Exact Setup

I got tired of paying Notion and Evernote every month — and tired of my notes living on someone else's servers. So I put together a private notes + knowledge base app that runs entirely on Cloudflare's free tier. Total hosting bill: $0/month. Here's the setup.

The architecture

Everything lives in my own Cloudflare account, no VPS involved:

  • Cloudflare Workers — serves the app and API
  • D1 — SQLite database for notes, docs, tags
  • KV — sessions and fast key-value lookups
  • R2 — file and image uploads

Cloudflare's free tier covers all of this comfortably for personal use. Workers get 100k requests/day free, D1 gives 5 GB storage, R2 gives 10 GB — a personal notes app barely scratches that.

What it actually does

It's two systems in one:

  1. Quick notes (memos-style timeline) — rapid capture, markdown with real-time preview, checklists, code blocks, tables, tags, full-text search, calendar view, favorites and archive.
  2. Docs knowledge base — folders, rich text editing, outlines, a proper place for long-form writing.

Plus the two features I use daily:

  • Telegram quick capture — send a message, photo or file to a bot and it becomes a note. Ideas never die in a chat app anymore.
  • Expiring share links — share a single note publicly with a random unguessable URL that can expire automatically.

And one-click backup export, so I'm never locked in.

The cost breakdown

Item Cost
Cloudflare Workers / D1 / KV / R2 (free tier) $0/mo
Domain (optional, I used one I already had) $0–$12/yr
Total ~$0/mo

Compare that to Notion Plus ($10/mo) or Evernote Personal ($8/mo) — and neither of those gives you actual data ownership.

How the deploy works (high level)

  1. Create the D1 database, KV namespaces and R2 bucket in your Cloudflare dashboard
  2. Deploy the Worker with wrangler and run the schema migration
  3. Create your admin login and harden the security settings
  4. (Optional) Bind a custom domain, connect a Telegram bot for quick capture
  5. Export a backup to confirm everything is safe

The whole thing takes about 30 minutes once you know the steps. The gotchas are in the details — R2 needs a credit card on file (Cloudflare's requirement, never charged on free tier), the API token needs exactly the right permissions, and the Telegram webhook has to be registered against the Worker's URL.

Who this is for

  • Privacy-conscious people who don't want their notes mined for ad targeting
  • Anyone paying for Notion/Evernote who only uses 10% of the features
  • Tinkerers who like owning their stack

Don't want to do it yourself?

I deploy this exact setup for clients on their own Cloudflare account — you keep full ownership of everything, I just configure it and hand it over with a user manual. Details here:

There's also a live demo you can click around (login: demo / demo1234): https://bw06.ccwu.cc


Own your notes. It's cheaper than you think.

Top comments (0)