DEV Community

Cover image for Why We Left Vercel and Switched to Self-Hosting
kvetoslavnovak
kvetoslavnovak

Posted on

Why We Left Vercel and Switched to Self-Hosting

Humble Beginnings

At the beginning of 2025 we launched Eurlexa, a user-friendly way to access EU regulations.

Eurlexa is built with SvelteKit. The developer experience was and is great. Vercel seemed like the obvious choice where to deploy Eurlexa.

Until it wasn't.

We started on the Hobby Plan. As traffic grew we upgraded to the Pro Plan. However during the start of this summer we noticed an extreme increase in bots crawling Eurlexa. At first we thought this was great. The application uses SSR (Server-Side Rendering) and every page is prerendered, so we assumed our SEO was finally working. But then the bots went into overdrive. The ones to blame are especially AI bots.

AI Bots Unleashed

By the end of summer and during the autumn the bot traffic went crazy. We realized that Eurlexa is perfect "food" for AI scrapers. To give you the full picture: on Eurlexa, you can find more than 150,000 EU directives and regulations in all 27 official languages. Approximately an EU law has roughly five different versions thanks to amendments. Eurlexa also enables users to generate "track changes" server-side. Consequently the number of accessible pages is massive.

The default $20 for the Vercel Pro Plan was no longer enough. Because we wanted to keep Eurlexa free for our users we absorbed the extra traffic costs ourselves.

To be fair Vercel did add tools to fight this. During the summer of 2025, they introduced and consistently improved their Bot Management tools.

December Ends the Year (and our Vercel journey)

December brought extreme traffic reaching 100,000 mainly bots visits a day. But what hit us hardest was Vercel’s pricing model. The new Fluid Compute model combined with the traffic surge led to an extreme increase in costs.

On the other hand I am incredibly thankful that Vercel also introduced the Spend Management tool. This tool allows developers to set a hard cost cap. If the cap was reached Eurlexa was paused.

The Spend Management tool literally saved us. We had fortunately set a limit of $40 in advance. When the bots went crazy we began increasing the spend cap by $10 increments. These caps weren't being hit over days, but in a matter of hours.

When our costs crossed $100 in a couple of days we decided it was time for a change. I am terrified to imagine what would have happened without that Spend Management tool; by Christmas a Vercel invoice would have been a very unwelcome gift.

VPS to the Rescue

We decided to buy a VPS. They are remarkably affordable. After checking out tools like Dokploy, Coolify, and Caprover. We chose Dokploy. The VPS setup was surprisingly easy.

Migrating the SvelteKit app was a bit more challenging. Ironically AI helped us write the Dockerfile and solve some issues (I guess IA scraped the solution somewhere). The most complicated part was figuring out how environment variables worked and changing how they are called within SvelteKit on VPS. But within just two days Eurlexa was running on our own VPS.

We’ve already learned that managing a VPS is a task in itself. The bots are still coming and we’ve already had to restart the app several times.

However we can sleep much better now. The worst-case scenario now is that our server goes down—but our costs remain fixed.
Not being vendor locked is a plus too.

Merry Christmas to everyone!

Top comments (0)