Why I moved my site off Bluehost (and where I landed)

I didn’t plan to migrate my site this week. It started, as these things tend to, with something more ambitious than the infrastructure could hold.

I’d been on Bluehost on a first-year promotional rate—the kind that works fine when all you’re doing is publishing a post once a week and forgetting the server exists. That was the plan until it wasn’t. I’d started building an AI agent that could research topics, draft posts, and publish them to WordPress automatically. Every time I tried to set this up, Bluehost blocked it. Shared hosting doesn’t allow persistent processes, so anything that needed to keep running in the background hit a permission error or timed out. Not a configuration problem, not something to debug, just the wrong infrastructure for the job.

The renewal quote arrived around the same time. Considerably more than the promotional rate I’d been paying, for a product I’d outgrown.

So I moved.

After comparing options, I landed on a Hetzner CPX22—a VPS based in Nuremberg, €7.99 a month. Two dedicated CPUs, 4GB RAM, 80GB NVMe storage, 20TB of bandwidth, billed hourly. The equivalent spec on DigitalOcean or Vultr runs around $24/month. Hetzner is genuinely that much cheaper, and the performance reviews back it up.

The difference between shared hosting and a VPS is the difference between renting a desk in a coworking space and having the building. On a VPS, you get a real Linux server you control entirely—which means you can run whatever you want on it, including a persistent process that posts to WordPress on a schedule and doesn’t stop when someone else on the server needs more memory.

The migration is done. All posts, pages, and images from 2020 onwards are live on the new server, with HTTPS and auto-renewing certificates. The AI agent is next. On a VPS, I can run it as a systemd service, starts automatically on reboot, runs continuously. That was the whole point of moving.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *