My Content Website Stack
The complete stack behind daveswift.com — Ghost, Cloudflare, Typesense, Tinybird, and more.
Last updated: March 21, 2026
I built daveswift.com from scratch. No managed hosting, no page builders, no $50/month WordPress plugins. Just a fast, self-hosted stack that I control end to end.
This is everything behind the site you’re reading right now — what each piece does, why I chose it, and what it actually costs.
The CMS: Ghost

I moved from WordPress to Ghost for this site, and I haven’t looked back. The writing experience is cleaner, performance is better out of the box, and memberships plus newsletters are built in — no plugins needed.
Ghost runs in Docker on my own server. That means I’m not paying for Ghost Pro — I pay a fraction of that and get full control over the database, the theme, and the deployment pipeline.
I want to clarify that Ghost Pro is a great service, and if you don't want to worry about the tech, you get the benefits of Ghost without the hassles of managing your own server. Besides, when you host with Ghost Pro you're supporting the Ghost open source project, which is a real non-profit!
Hosting: Hetzner VPS
The entire site runs on a Hetzner VPS. Fast, affordable servers with excellent uptime. I use Docker Compose to run Ghost, MySQL, and a few supporting services on a single box.
If you’re self-hosting anything, Hetzner is hard to beat on price-to-performance. I’ve been running production sites on their infrastructure for years.
Reverse Proxy: Caddy
Caddy handles HTTPS and reverse proxying. It automatically provisions and renews SSL certificates, and the config is about 10 lines long. I switched from Nginx and the difference in simplicity is night and day.
CDN & Security: Cloudflare
Cloudflare sits in front of everything — DNS, CDN, DDoS protection, caching rules. The free plan covers most of what I need. Static assets get cached at the edge for a year, and HTML gets revalidated on every request so content stays fresh.
Search: Typesense
Ghost’s built-in search is basic. I replaced it with Typesense — a self-hosted search engine that returns instant results as you type. It indexes every post and page, and the search experience is genuinely fast. Hit Cmd+K on this site to try it.
Typesense runs in Docker alongside Ghost on the same VPS. No external service, no monthly fee.
Analytics: Tinybird
I don’t use Google Analytics. Tinybird powers Ghost’s native analytics dashboard, giving me pageviews, sources, and engagement data without any third-party tracking scripts loading on the frontend.
Privacy-friendly, fast, and it works with Ghost right in the admin view. This is a new native integration as part of Ghost v6.
Email: Mailgun
Mailgun handles both transactional emails — signup confirmations, magic links — and newsletter delivery. Ghost integrates with it natively (they require it actually). You add an API key and SMTP credentials and it handles the rest.
Reliable delivery, solid analytics, and significantly cheaper than dedicated newsletter platforms.
Forms: OpnForm
No forms with Ghost, so I self host OpnForm. It powers the contact form on this site as well as a lot of the services I offer.
Like I mentioned, It’s open-source and self-hostable, though I use their hosted version. Form submissions automatically create Ghost members and subscribe them to my newsletter via an N8N automation (which I also self host).
I have a full review of OpnForm if you want to learn more.
Social Proof: Testimonial.to
Testimonial.to collects and displays reader testimonials. People can submit feedback through a simple form, and I embed the best ones across the site without building anything custom. Want to leave me a testimonial and try it out?
That’s the full stack behind daveswift.com. Most of it is self-hosted, all of it is fast, and the total monthly cost is less than what most people pay for managed WordPress hosting alone. Much less, if I'm being honest.

