Building a Vibe VPS
A workable Vibe VPS build to give your Claude Code a home at less than $20 a month
I set up a Vibe Coding Virtual Private Server on the cheap, this post explains my motivations and how you can go about building one too.
Motivation
There’s a number of reasons you might want to vibe code on a VPS these days:
You are (rightly) concerned about the security implications of letting AI execute at all on a machine (or even a network) with all of your most important information on it. I know we’ve all seen the recent AI-deleted-my-database post.
A more extreme version of this, AI will often stop to ask you the same few things you click yes on over and over slowing it way down, so you might want to use modes of operation like Claude Code’s --dangerously-skip-permissions to let the AI run, but not feel safe doing it on your main computer.
You might want to give your AI MCP access to tools that otherwise you wouldn’t feel comfortable with, such as one of the many new MCP interfaces that use Chrome via the debug port opening up the entire thing. You could imagine other high risk modalities here too such as wanting to give the AI root to debug kernel issues or drivers.
Many of these newer console tools like Claude Code are stateful and you might want to move between interface machines (or even your phone) without resetting that state. Most obvious here might be your phone or tablet, and then back to your laptop.
You might want to share your project-claude state with other people, potentially those around you who are less technical (like maybe a CEO) or a head of product.
Claude thinking times can be long, and you might want to hop on and off of Wifi (or often get disconnected for other reasons) but don’t want to interrupt Claude. Just in general running AI without worrying about this is freeing: Imagine going from home to a coffee shop while the C-man is doing an ultrathink.
I’m sure there are many other reasons as well, AI-driven coding is just much better done from a stable environment that doesn’t disconnect even when you do.
Why did I build out my VPS? For all of the above reasons, In particular I’m back and forth from the doctor’s for my wife a lot lately and spending a lot of time waiting, and I wanted to be able to vibe code in that time.
Requirements
First I’ll say you could do this much cheaper (even free via Oracle cloud free tier) if you didn’t care about having a GUI desktop or local application MCP access. There are many free shells out there that would work just fine as a console program hopping off point.
So from there I’ll get into my own requirements:
One of my projects is a React webapp with a python back-end, the AI needs to be able to iterate on this hands free.
It needs to be able to run Chrome with the Debug MCP.
I am working on a web App with a Supabase backend. The app needs to talk to Supabase (Potentially I’ll even run it locally in a future iteration).
It needs to be able to run Claude Code.
It needs to be relatively cheap, past some point I would just buy hardware to use in my basement.
It needs to pleasant to work on, not some overloaded VPS chugging along.
It needs to be secure, I’m sometimes doing work with sensitive data or IP, a reputable provider is a must.
Easy setup, Firewall, other cloud tools are all nice-to-haves.
Concretely this turns into these technical requirements:
2 Cores + 8 GB of ram with SSD as minimum hardware reqs.
Low latency (< 50ms) to the area I live in on peak times (NYC Area)
Less than $20 a month (you can buy a reasonable jump box for $120)
Linux on x86 (some things still don’t run great on ARM)
On a provider that most people agree is good for business.
Note: There was a point where I did try local-on-my-mac docker containers to get the security I was looking for without an external machine and ARM got in the way a bit. For this reason I’d stick to x86 for now.
The Build
So I did a bit of searching and landed on Hetzner. They are well regarded and inexpensive. I got a local VPS in Virginia with 2 dedicated CPUs, 8GB of ram and 50GB of SSD storage with automated backups for $18 a month. You don’t technically need to pay for the backups but it seemed like an ok deal for something like $2 a month extra. Also I should note you could technically get this build down closer to $15/mo if you didn’t want the extra storage.
The process was relatively painless:
Set up your account
Verify your identity (got to keep the scammers out)
Click to deploy the box, it’s super easy you can pick from a number of distros, I picked Ubuntu LTS.
Wait a couple of minutes
Log in
Great, now I had a fresh ubuntu box, and it was so slow, the default web root console was incredibly laggy. I instantly panicked, did I just waste $15 and a bunch of my time on a slow as rocks VPS? Was this whole thing a wash?
Well thankfully the answer is no. After some broad evaluation of options in ChatGPT I installed NoMachine. Not open source but well regarded as the best remote desktop software around, and it worked great. Now my desktop was very snappy.
At this point I recommend enabling the Hetzner firewall with just port 4000 open incoming for NoMachine. It’s not on by default and better safe than sorry.
So now it was time for your typical linux installfest. This made me remember how annoying it is that none of the standard commercial software is in the linux package manager, and how most of the things it does come with are too old to work properly. (it makes you wonder what the point of the package manager is really):
Give yourself a personal account with sudo, don’t ever run as root, do all of your installs from there.
I’m going to skip over all of the stuff that’s in the box like git, misc utils, window manager (I used Xfce it’s lightweight), etc
Install Chrome (downloaded the deb and install, should have done the repo route)
Make a shortcut to run Chome with the following params to enable your MCP to safely connect
--remote-debugging-port=9222
--remote-debugging-address=127.0.0.1
--user-data-dir=/home/<user>/.chrome_dev_profile
Install modern node.js (ubuntu comes with the ancient 18, I used nodesource)
Install modern Python (sudo add-apt-repository ppa:deadsnakes/ppa)
Install uv (pipx now only exists to install uv)
Install Claude Code (npm install -g @anthropic-ai/claude-code)
Install VSCode (add the Microsoft repo to apt)
Install the VSCode plugins for Claude Code and cline (with Claude Code selected for AI provider).
MCP
Great, now I had everything I needed to run my software, next up was MCP. For Chrome MCP I used benjaminr/chrome-devtools-mcp on the recommendation of a friend. It didn’t have linux build instructions but it wasn’t hard to get working.
Download the repo
Make an environment and install the dependencies with uv, make sure to make the environment
Set up the MCP to run it with the —project flag via uv in the repo directory (I’ll show my example below)
MAKE SURE YOU HAVE A FORWARD SLASH AT THE END OF YOUR PROJECT PATH.
At first I struggled with the “claude mcp” via the command line but it was much easier to just edit the .claude.json file in my home directory.
Args should all be broken out (see below, Claude Code is super picky about this config)
The other I set up was supabase, but because it’s not running locally this was a snap. You can see the mcp part of my ~/.claude.json here:
"mcpServers": {
"chrome-devtools": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--project",
"/home/rick/Claude/chrome-devtools-mcp/",
"/home/rick/Claude/chrome-devtools-mcp/server.py"
],
"env": {
"CHROME_DEBUG_PORT": "9222"
}
},
"supabase": {
"command": "npx",
"args": [
"-y",
"@supabase/mcp-server-supabase@latest",
"--read-only",
"--project-ref=<put project ref here>"
],
"env": {
"SUPABASE_ACCESS_TOKEN": "<put token here>"
}
}
And there you go. Hopefully this helped you set up your own Vibe VPS. Join my chat and let me know if you have any other hot tips or MCPs you think I should be using on my new 100% for-Claude environment.
Take care out there.