Tested how-tos
Server guides
Step-by-step server guides where every command was run top-to-bottom on a fresh Ubuntu VM before publishing — real output, honest timings, and a tested undo for each.
All resource sectionsSSH keys, properly: never type a server password again
Your laptop will hold a small pair of files called an SSH key. Your server will trust it, so logging in never asks for a password — then we turn password logins off completely.
12 min read
First hour with a new Ubuntu server: locking the doors
A fully updated server, a personal account with admin rights, a firewall that blocks everything except SSH, and security updates that install themselves.
10 min read
Docker in 2026: install it the way Docker actually recommends
Docker installed from Docker's own package source, the way their documentation says to do it — and how to remove every trace of it, because I tested that too.
10 min read
Run an AI model on your own computer — no GPU, no cloud, no account
An AI model running on your own machine, answering questions in your terminal. No account, no API key, no GPU — your prompts and replies stay on this machine.
12 min read
Show someone a page on your machine — without opening a single port
A web page served from your own computer, readable on a phone anywhere in the world — without touching your router, opening a port, or creating any account.
11 min read
Backups that actually restore: restic from zero
An encrypted backup of a folder, stored in a second location, that you have personally restored from. That last part is the whole point.
15 min read
Docker Compose for real: one file, whole service — and the firewall trap
A real service running from one small text file, surviving reboots — then I prove, with real output, that Ubuntu's firewall does not protect Docker's published ports, and show you the fix.
10 min read
Know when things break: a tiny monitoring setup
Two small dashboards watching your server: Beszel graphs the machine itself, Uptime Kuma watches your services. In my test the stack used about 155 MB of RAM at idle.
11 min read
fail2ban on Ubuntu 24.04: banning the door-knockers (the journal way)
Any machine that gets a password wrong five times will be banned from your SSH port for ten minutes, automatically. I attacked my own test server to prove it.
10 min read
Tailscale: your own private network in twenty minutes
Your machines — server, laptop, phone — on one private network that follows them anywhere, encrypted end to end. No port opened on your router, no fixed addresses to memorise.
12 min read
Backups while you sleep: systemd timers and retention
A backup that runs itself every night: back up, then apply a keep-this-many rule. No cron syntax, no forgetting.
9 min read
The off-site copy, and proving your backups still restore
Your nightly backup pushes a copy to a second machine, and a one-word command proves the backup still restores — because an untested backup rots quietly.
11 min read
A proper chat interface for your local AI (Open WebUI + Ollama)
A proper web chat — history, multiple conversations, a login — in front of your local model, reachable from any phone or laptop on your network.
13 min read
A real address for your services: named Cloudflare Tunnel + Caddy
The permanent version of the quick tunnel: your own domain names, each reaching a different service on your machine. No ports opened, and the tunnel survives reboots.
17 min read
Your first virtual machine: KVM on Ubuntu, no drama
A small Ubuntu virtual machine running inside your Ubuntu machine: create it, log into it, switch it off and on, and delete it — all in the terminal, with free tools.
16 min read
Headless VMs: virt-install, cloud-init and snapshots without a desktop
A virtual machine on a server you only ever touch over SSH. No desktop, no console passwords — your SSH key is injected at first boot, and the guest survives host reboots.
11 min read
Snapshots, cloning, and the identity trap
Snapshots you can rewind to, and a clone that you break and then properly fix. The breaking is deliberate: cloning has a common identity trap.
12 min read
Back up a database, then prove you can get it back
A PostgreSQL database, a real backup of it, and a restore you have watched succeed — plus a restore that fails while looking half-successful, the exact trap the essay warns about.
17 min read
Got a better way?
The best guides on this site started as forum posts. Share what works for you and we’ll fold it in, with credit.
Share your setup