Self-hosted CMS and blogs on Cloudflare D1
5 open-source CMS and blog projects on Cloudsteading keep their content in Cloudflare D1: Qingyu Blog, vibecms and SonicJS. D1 is SQLite, so posts, pages and settings sit in one database beside the Worker that serves them, with media in R2. None run WordPress itself, so plugins and themes do not carry over.
How each one is built
Every project uses D1 and is mapped to WordPress. The rest of its Cloudflare setup, and its license, decide how much work it is to run.
| Project | License | Cloudflare | Replaces |
|---|---|---|---|
| Qingyu Blog | MIT | D1, KV, Pages | Ghost, WordPress |
| vibecms | AGPL-3.0 | D1, Images, R2, Workers | Ghost, WordPress |
| SonicJS | MIT | D1, KV, R2, Workers | Ghost, WordPress |
| microfeed | AGPL-3.0 | D1, Queues, R2, Workers | Ghost, WordPress |
| Monolith | MIT | Analytics Engine, D1, Pages, R2, Workers | Ghost, WordPress |
Frequently asked
Can WordPress run on Cloudflare Workers?+
Not as it is. WordPress needs PHP and MySQL, and Workers run JavaScript and WebAssembly. These projects replace WordPress with their own editor and content model, so moving a site means exporting the posts and rebuilding the theme.
Is D1 big enough for a blog or CMS?+
For text, comfortably. A D1 database holds up to 10 GB on the Workers Paid plan and 500 MB on Free, which is a great many posts. Images and uploads belong in R2, which these projects use for media.
What else do these projects use besides D1?+
Counting the 5 projects listed here: R2 (4), Workers (4), KV (2), Pages (2), Analytics Engine (1), Images (1). Each repository's Wrangler config shows exactly which bindings it needs.




