Why I Stopped Paying for Vercel on My Side Projects
Vercel is great, but the bill grows with each project. How I run my side projects on one VPS I own with ox, what it costs, and what I gave up.
I stopped paying for Vercel on my side projects. Now I rent one small server, called a VPS, and I put my apps on it. A tool I built, called ox, does the server work for me. I push my code to GitHub, and it goes live on my own server. This way has real tradeoffs, so this post covers both sides.
In this guide:
- Vercel is really good, but the bill grows
- The other way: your own server
- How I deploy my side projects now
- What I kept from the hosted way
- The honest tradeoffs
- What my side projects cost now
- Frequently asked questions
Vercel is really good, but the bill grows
I want to be fair. Vercel is a great product. You push your code, and soon your site is live. You do not think about servers at all. For a first project, that feels like magic.
That nice feel is what you pay for. And the bill does not stay small. Hosting sites like this bill you for each app, each database, each background job and each test copy. One side project is fine. Then you start a second one. Then a third. A few small projects can cost more than your phone bill. You can see how it adds up on Vercel's pricing page.
That was my problem. I like to build things. When a problem bugs me, I build a fix for it. I did not want each new idea to add a new bill each month.
The other way: your own server
The other choice is to rent a server. A VPS is a computer in a data center. You pay for it each month, one flat price, and you can run many apps on it.
The catch is that now you run that server. Someone has to set up the web server, the HTTPS certificates, the database, the backups and the jobs that run on a timer. I have done this by hand many times. I even wrote long guides about it on this blog, like deploying Django without Docker. Each one had many steps.
So I had two choices I did not like. Pay a lot to keep things simple. Or pay less and spend my time on server setup.
How I deploy my side projects now
I built ox to close that gap. Here is how my setup works today.
- I rent a fresh Ubuntu LTS server.
- I sign in to ox with GitHub and press Add a server. It shows one command. I run it on the server once.
- I pick a repo. ox reads it and shows me what it will run before anything starts.
- I press Deploy.
The command looks like this. The token in it works once, so you copy a fresh one from the dashboard each time.
curl -fsSL https://deploywithox.com/install/<token> | sudo bashAfter that, every push to GitHub goes live. ox does not use Docker. Each app runs as a plain systemd service, behind Caddy. Caddy gets the HTTPS certificate on its own and renews it too.
For a Next.js app, that is often all it takes. ox reads package.json and your lockfile, and it finds the build and start commands. When I want my own domain and a real health check, I add a small file called ox.toml:
domains = ["app.example.com"]
[app]
start = "npm run start"
health = "/healthz"
[build]
install = "npm ci"
commands = ["npm run build"]
[services]
postgres = {}The postgres = {} line gives the app its own database on the same server. ox hands the app a DATABASE_URL, and it backs up the database every day. The Next.js guide explains every line of this file.
What I kept from the hosted way
Some things I liked about Vercel, I did not want to lose. So ox has them too.
No downtime on a push. The new version starts next to the old one. Traffic moves only after the new one passes its health check.
Rollback. ox keeps older releases. I can go back to one without building it again.
Previews. I can turn on a preview for each branch, and a staging copy. Each one gets its own database.
Logs. I can watch my app's logs live, or search them.
The features page has the full list.
The honest tradeoffs
Your own server is not right for every project. Here is what you give up.
The server is yours. Its size, its provider and its bill are your choice. ox sets up a firewall, fail2ban and automatic security updates. But you still own the box.
One project runs on one server. There is no scaling across many servers and no autoscaling. If an app grows, you pick a bigger server.
One place. Your app lives in the one data center you picked. There is no global edge network.
One operating system. Servers run the latest Ubuntu LTS.
For a big app with users all over the world, a platform like Vercel can be the right call. For my side projects, it was more than I needed. They need to be up, safe and cheap. One good server does that.
What my side projects cost now
I pay my server company for the machine, as I would anyway. My small apps share it. ox is free while it is in beta. After the beta, the plan is about $8 to $12 a month per server, for every app on that server. That price is not final yet.
That is the part I like most. A new side project no longer means a new bill. It means one more repo on a server I already pay for. If you want to know why I built ox at all, I wrote the story behind it.
Key takeaways
- Vercel is great, but hosted platforms bill per app, database and job, so a few side projects add up.
- One VPS costs one flat price a month, and many small apps can share it.
- ox does the server work: run one command once, then every push to GitHub goes live, with no Docker.
- You keep no-downtime deploys, rollback, previews and logs.
- You give up autoscaling, many servers per app and a global edge network.
Frequently asked questions
Can I host a Next.js app without Vercel?
Yes. A Next.js app runs with next start, a plain Node process. ox reads package.json and your lockfile, finds the build and start commands, and runs the app as a systemd service behind Caddy with HTTPS. Most Next.js apps need no ox.toml at all, and the Next.js guide has the full steps.
Is a VPS cheaper than Vercel for side projects?
For me it is, because I pay one flat price for the server and all my small apps share it. Hosting sites bill each app, database and background job on its own. ox is free during the beta, and the plan after it is about $8 to $12 a month per server. That price is not final yet.
What do I give up when I leave Vercel?
A global edge network, autoscaling and running one app over many servers. With ox, one project runs on one server, in the one data center you picked, and the server is yours to size and pay for. ox does set up a firewall, fail2ban and automatic security updates, so you do not harden it alone.
Do I need Docker to run my apps on my own server?
No. ox does not use Docker. Each app runs as a plain systemd service behind Caddy, which gets and renews the HTTPS certificate on its own. You run one command on a fresh Ubuntu LTS server once, and after that every push to GitHub goes live on that server.
Try it
If you have a few side projects and the bills keep adding up, give your own server a try. You can sign up at deploywithox.com with your GitHub account. The quickstart walks you through your first deploy. The Next.js guide shows how to self-host a Next.js app without Vercel.
