dhyegocalota.com.br
RSS

AI for developers

How I built my own Vercel for under six bucks a month

How I built my own Vercel for under six bucks a month

I stopped paying a monthly bill to ship my projects.

Today I run all of them on a server that costs less than six bucks a month. And it's not one or two, it's all of them. Node, Python, Go, PHP, whatever. My own Vercel, running on my own server, and at the end of the month nothing else shows up on the bill.

The tool is called Dokploy. And I'm not going to sell it to you all shiny. I'll show you how it actually works inside, how you spin up yours, and where it bites you. Because there are two sides, and almost nobody tells you about the second one.

Why I stopped paying

Deploy turned into a toll booth. You pay a monthly bill that climbs on its own. It climbs when more people join the team, it climbs when traffic crosses a number you never saw in the contract. In the end you never know what next month's invoice looks like.

Dokploy breaks that. You rent a cheap little server and ship as many projects as you want. Ten, twenty, the price doesn't move.

But I'll be straight with you on one thing, because it holds the whole post together: this only pays off if you have several projects. If it's a single hobby app, stop right here, it fits in Vercel's free tier and that's it. Self-hosting is a game for people with volume. Hold onto that, we come back to it at the end.

What's under the hood

This is the part I like about it, and the one almost nobody stops to explain.

Dokploy didn't invent any magic. Underneath it there are two tools that have been around for years. Traefik, which keeps your site online with https and routes each request to the right place. And Docker Swarm, which watches over the running containers. Wire the two together behind a nice panel and that's it, that's what Vercel charges you good money to do. You didn't invent anything. You just stopped paying for something that was already open.

And there's a detail that dropped my jaw when I went to read the code. Every app you ship becomes a Swarm "service", even if you only have one server. Sounds trivial, but that's exactly why it swaps your app's version without taking the site down, for free, without you coding a thing. It comes baked in.

And when you grow and want more than one server? You don't install Dokploy on each one. A central panel drives the others over SSH, like you typing commands from a distance. The other servers only need Docker. That simple.

The panel itself is a normal program, built in Next.js, with a Postgres storing things. It's not a black box. It's software made by people, running on your machine, that you can open and understand.

Ships any language, and comes with a pile of ready-made stuff

This is where it shines day to day.

Doesn't matter what you wrote it in. Node, Python, Go, PHP, Ruby. It detects the language on its own and builds it, or you hand it your own Dockerfile and it respects it your way. If your project is a bunch of services glued together in a Docker Compose, that ships too, no drama.

And here's the part I use the most, the marketplace. Over 500 open-source apps ready to deploy in one click. Each one already configured. Want an n8n for automation? One click. Supabase? One click. A Ghost to be your blog, a Plausible to measure traffic, a Directus, a Umami? Click and it's live. It's like an app store, except everything is open and running on your server, not someone else's.

How you actually ship it

It's fast. You grab a clean Linux server and run one command:

curl -sSL https://dokploy.com/install.sh | sh

It installs Docker if it's missing, turns on Swarm, and brings up the panel, Traefik and the database. It wants about 2GB of memory and ports 80, 443 and 3000 free, so a clean server really.

Then you open the panel, hook up your GitHub, pick the repo and the branch, and it builds and ships. Every time you push, it redeploys on its own (that push-to-deploy comes ready on GitHub, on the others you wire a webhook by hand). For the domain, you point the DNS and turn on Let's Encrypt. The https sorts itself out and renews forever.

Now the real talk

Alright, the honest conversation. Because "free" is never free, it just changes currency.

First, that "open source" I mentioned in the video comes with an asterisk. It is open, yes, but the main chunk of the code is genuinely open and there's a little folder called /proprietary that's closed, holding the big-company stuff (single sign-on, custom roles, audit log). And the free version caps you at 2 builds at the same time per server. That has a name, it's called open-core, it's not open end to end. If you're a license purist, its rival Coolify is 100% open.

Second, and this is the big one: you become the owner of the mess. The monthly bill doesn't disappear, it turns into your time. If the server goes down at 3am, fills up the disk, or won't come back after a reboot, that's your problem, there's no support line to call. Worse: the panel runs on the same server it manages, so when the server goes down, you lose your control screen exactly when you need it most. Backups, security patches, turning on 2FA, locking the panel's port behind the firewall, all of that becomes your job. The secrets, by the way, sit in plain text in the database. No lock.

And there's one that hurts to tell. There was a critical security hole that stayed open for about six months. Anyone could fork a public project that used Dokploy, send a poisoned pull request, and Dokploy would deploy it on its own, without asking for a password, handing over all your keys and running outside code. They only fixed it in version 0.24.3. That's the hidden price of "free". That risk Vercel absorbs for you, here you're the one holding it.

So, is it worth it?

It is, with a rule.

If you've got several projects running and you don't mind being the on-call person, it's absolutely worth it. The math gets silly: five services that would cost you over a thousand dollars a year fit on a server of around eight euros a month, with room to spare. That was my case, and I don't regret it.

Now if it's a single hobby project, forget it. It fits in Vercel's free tier and you don't need to become a server babysitter for nothing.

In the end it's a trade, not a miracle. You trade the monthly bill for the job of holding things together when it breaks. For me, with a ton of projects, it paid off every cent. For you, it depends on how many loose ends you can hold.

If it makes sense for you, start with the server. I use Hostinger and got a 20% discount for people coming from here: grab your VPS with 20% off through this link. It's a partner link, you pay the same and it helps me keep the blog going. Then bring up Dokploy with that command up top and you're in the game.