The VikiD Truth

Knowledge base / Computing / Networking & the web

Online VPS, SaaS, PaaS, IaaS

Here is the truth about a VPS: you are renting a virtual machine that thinks it is a computer, and you are its sysadmin. The freedom is real; so is the responsibility when the cron job fills the disk at 3 a.m.

What it is, in plain words

A VPS (Virtual Private Server) is a virtual machine sold by a host – Linode/Akamai, DigitalOcean, Hetzner, OVH, Vultr, Oracle Cloud’s free tier, and many smaller providers. You get a public IP, a chosen Linux image (or your own), CPU/RAM/disk quotas, and root access. Underneath, it’s a KVM (usually) guest on hardware you don’t own.

Related products:

Why it matters

A VPS is how this site, a personal Git host, a VPN endpoint or a PicoLisp app leaves your laptop and meets the world. Learning to harden, update and back up one VPS is the most practical sysadmin education available for a few dollars a month.

An everyday analogy: renting a workshop

A PaaS is a shared makerspace with rules. A VPS is a locked workshop on an industrial estate: bring your own tools, change the locks, leave at midnight. The landlord (the host) keeps the building standing; everything inside is yours to break.

flowchart LR
  U[You / SSH] --> V[VPS guest]
  V --> H[Hypervisor + host hardware]
  V --> I[Public IP]
  I --> N[Internet]

A hands-on first-hour checklist

  1. Create the VM with your SSH public key baked in (never password-only on a public IP).
  2. Log in, update, reboot if kernel changed.
  3. Create a sudo user, disable root password login, lock SSH to keys – see SSH Login.
  4. Firewall – allow 22/80/443 only. Firewalls, ufw or nftables.
  5. Point DNS at the IP; issue TLS with Caddy or certbot – TLS.
  6. Automatic updates for security patches, plus a backup plan (Data Recovery mindset).
  7. Monitoring – even a cron that curls your site and mails on failure.
ssh root@YOUR.IP
adduser vikid && usermod -aG sudo vikid   # or wheel
# install key for vikid, then:
sudo apt update && sudo apt full-upgrade
sudo apt install fail2ban ufw
sudo ufw allow OpenSSH && sudo ufw allow http && sudo ufw allow https
sudo ufw enable

Pick a nearby region for latency; pick a provider whose network and support you’ve read about when things break. Price is not the only axis – egress bandwidth, IPv6, snapshots and honest status pages matter.

Cost control

Set a billing alert the day you open the account. Snapshot calendars, unused load balancers and egress to the public internet are how “$5/month” becomes a surprise. Prefer providers that charge egress honestly and let you cap it. Tear down experiments when you’re done – a forgotten VM is a forgotten attack surface.

SaaS, PaaS, IaaS: who manages what

The acronyms in the title name a sliding scale of how much the provider runs for you:

ModelYou manageProvider managesExample
On your own metaleverythingnothinga Pi on your shelf
IaaS (a VPS)OS, runtime, app, datahardware, hypervisor, networkLinode, Hetzner
PaaSapp and dataOS, runtime, scalingFly.io, Render
SaaSjust your data and settingseverything elseFastmail, GitHub

Read it top to bottom as “handing over responsibility one layer at a time”. A VPS (IaaS) is the sweet spot for learning, because you still touch the operating system and therefore still learn how it works. SaaS is the right answer when the thing is not your craft: most people should buy email as SaaS rather than run a mail server, because deliverability is a full-time job.

A worked example: this site’s shape

A static site like this one barely needs a server at all: Hugo builds HTML, and a CDN or GitHub Pages serves it. But the moment you want something dynamic (a comment box, a PicoLisp app, a Git host), you want a VPS:

# A minimal always-on PicoLisp app behind Caddy, on a Void VPS
# 1. a runit service so it restarts on crash and boot
sudo mkdir -p /etc/sv/myapp
printf '#!/bin/sh\nexec chpst -u vikid pil /home/vikid/app.l -go -wait\n' \
  | sudo tee /etc/sv/myapp/run
sudo chmod +x /etc/sv/myapp/run
sudo ln -s /etc/sv/myapp /var/service/     # runit starts supervising it

# 2. Caddy as a reverse proxy that also gets the TLS cert automatically
printf 'app.example.com {\n  reverse_proxy localhost:8088\n}\n' \
  | sudo tee /etc/caddy/Caddyfile
sudo sv restart caddy

That is the whole gap between “runs on my laptop” and “runs on the internet”: a supervised process and a proxy that terminates TLS. Everything else is hardening.

Choosing a provider in 2026

Price per gigabyte of RAM has stopped being the interesting number. What actually bites you later:

Common misconceptions

Connections

Last edited · 2 revisions

Tags: #Computing