There are two kinds of hosting. Platform hosting (Vercel, Netlify, Railway) gives you zero config but no server access. VPS hosting (DigitalOcean, Hetzner) gives you full SSH access but expects you to configure everything yourself.

Most developers want something in between: SSH into a real Linux server, run whatever they want, but skip the nginx config, SSL certificates, firewall rules, and process manager setup.

That middle ground exists. Here’s what it looks like.

The VPS Configuration Tax

When you spin up a VPS and SSH in, you’re looking at 6-8 tasks before your app is reachable:

  1. Install your runtime - Node.js, Python, PHP, or whatever your app needs
  2. Configure nginx - write a reverse proxy config, set up server blocks, handle static file serving
  3. Set up SSL - install certbot, configure auto-renewal, update nginx to use the certs
  4. Configure the firewall - UFW rules for ports 80, 443, 22, and your app port
  5. Set up a process manager - PM2, systemd, or supervisord to keep your app running after SSH disconnects
  6. Configure DNS - point your domain to the server IP, wait for propagation
  7. Set up log rotation - before your disk fills up with access logs
  8. Handle updates - keep the OS, runtime, and packages patched

That’s 2-4 hours of work for a developer who’s done it before. Longer for someone doing it the first time. And you do it again for every new project.

The frustrating part: none of this is your app. It’s infrastructure. Your app was done 3 hours ago.

What Platform Hosting Gets Wrong

Vercel, Netlify, and Railway solved the config problem. Push code, get a URL. No nginx, no SSL, no firewall.

But they took away the server. You can’t:

For frontend-only apps, that’s fine. For anything with a backend, persistent state, or system-level needs, you need a real server.

The Middle Ground: SSH Without Config

What if you could get a server that’s already configured? Runtime installed, nginx proxying to your app port, SSL provisioned, firewall locked down, domain assigned - all before you SSH in for the first time.

That’s the model InstaPods uses. Here’s what the workflow looks like:

# Deploy your app
instapods deploy my-app --preset nodejs

# SSH in whenever you need to
ssh instapod@my-app.nbg1-1.instapods.app

The first command gives you a running server with:

The second command drops you into a real Linux shell. Full SSH access. You can install packages, edit files, check processes, tail logs - whatever you’d do on a VPS.

What You Can Do With SSH Access

Having SSH access to your hosting server matters for things you can’t do through a deploy pipeline:

Debug production issues in real time

# Check what's actually running
ps aux | grep node

# Watch logs as requests come in
tail -f /var/log/app.log

# Check memory and disk
free -h
df -h

Install system dependencies

# Need ImageMagick for image processing?
sudo apt-get install imagemagick

# Need FFmpeg for video transcoding?
sudo apt-get install ffmpeg

# Need a specific library for Python ML?
sudo apt-get install libopenblas-dev

Run one-off scripts

# Database migration
node scripts/migrate.js

# Data import
python3 scripts/import-data.py

# Cache warmup
curl http://localhost:3000/api/warmup

Use SQLite

SQLite needs a persistent filesystem. Serverless platforms can’t run it reliably because the filesystem isn’t guaranteed to persist between invocations. With SSH hosting, SQLite works exactly like it does on your local machine.

How to Choose

Here’s a quick decision framework:

Use platform hosting (Vercel/Netlify) when:

Use a raw VPS when:

Use SSH-enabled managed hosting when:

The Cost Comparison

Hosting TypeMonthly CostSSH AccessConfig RequiredTime to Deploy
Vercel (Pro)$20/moNoNone2 min
DigitalOcean Droplet$6/moYes2-4 hours2-4 hours
Railway (Starter)~$5-15/moNoNone5 min
InstaPods (Launch)$3/moYesNone60 seconds

The raw VPS is cheapest per dollar, but your time has a cost. If you value your time at $50/hr and spend 3 hours on server config, that $6/mo Droplet cost you $156 in the first month.

Getting Started

If you want SSH access without the configuration overhead:

  1. Deploy your app: instapods deploy my-app --preset nodejs (or python, php, static)
  2. Your app is live with SSL, domain, and nginx - all configured
  3. SSH in anytime: ssh instapod@my-app.nbg1-1.instapods.app

Your server, your rules - without the DevOps tax.

Deploy with SSH access - $3/mo