# Why I Stopped Paying for Vercel on My Side Projects

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.

## Vercel is really good

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.

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. 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.

## What I do now

I built ox to close that gap. Here is how my setup works today.

1.  I rent a fresh Ubuntu LTS server.
    
2.  I sign in to ox with GitHub and press Add a server. It shows one command. I run it on the server once.
    
3.  I pick a repo. ox reads it and shows me what it will run before anything starts.
    
4.  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.

```bash
curl -fsSL https://deploywithox.com/install/<token> | sudo bash
```

After 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`:

```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.

## 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 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 it costs

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.

## 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](https://deploywithox.com) with your GitHub account. The [quickstart](https://deploywithox.com/docs/quickstart) walks you through your first deploy. The [Next.js guide](https://deploywithox.com/docs/guides/nextjs) shows how to self-host a Next.js app without Vercel.

---

![ox](https://deploywithox.com/static/apple-touch-icon.png)

**Tired of doing all this by hand?** [ox](https://deploywithox.com) deploys your repo to your own server for you. No Docker, no config maze. [Try deploywithox.com](https://deploywithox.com)
