Choosing a Server
You need a place to run your tools. That place is a VPS (Virtual Private Server) — basically a computer in a data center that you rent by the month.
⚠️ Heads Up: You can self-host on a Raspberry Pi or old laptop at home. But a VPS gives you a static IP, proper uptime, and you don’t need to worry about your ISP blocking ports. Start with a VPS. Go homelab later.
The Short Answer
Just get a Hetzner CX22. €4.50/mo, 2 vCPUs, 4GB RAM, 40GB SSD, 20TB traffic. It’ll run 5–10 Docker containers comfortably.
If Hetzner isn’t available in your region, get a DigitalOcean $6/mo Droplet.
That’s the recommendation. Below is the reasoning.
The Comparison
| Provider | Cheapest Plan | CPU | RAM | Storage | Best For |
|---|---|---|---|---|---|
| Hetzner | €3.79/mo | 2 shared | 4 GB | 40 GB | Best value overall, EU & US |
| DigitalOcean | $6/mo | 1 vCPU | 1 GB | 25 GB | Beginners, great docs |
| Linode (Akamai) | $5/mo | 1 vCPU | 1 GB | 25 GB | Solid alternative to DO |
| Vultr | $5/mo | 1 vCPU | 1 GB | 25 GB | Global edge locations |
| OVH | €3.50/mo | 1 vCPU | 2 GB | 20 GB | Budget EU hosting |
| Oracle Cloud | Free tier | 4 ARM | 24 GB | 200 GB | Can’t beat free (if you qualify) |
What Specs Do You Need?
Here’s a rough guide based on what you want to run:
| Use Case | RAM | CPU | Storage | Monthly Cost |
|---|---|---|---|---|
| 1–3 lightweight tools (Plausible, Uptime Kuma, Listmonk) | 2 GB | 1 vCPU | 20 GB | ~$5 |
| An entire Bootstrapper Stack (Supabase, Coolify, Plausible, etc.) | 4 GB | 2 vCPU | 40 GB | ~$6 |
| AI models (Ollama, Stable Diffusion) | 8+ GB | 4+ vCPU | 80+ GB | ~$15+ |
| “I self-host everything” | 16 GB | 4 vCPU | 160 GB | ~$25 |
🔥 Pro Tip: Start small. You can upgrade a VPS in about 30 seconds. It’s way harder to downgrade. Get a 4GB plan and upgrade when you actually feel it.
Once you have a VPS, the setup is the same everywhere. Don’t just install Docker and leave it open; follow these steps to secure your investment.
1. Hardening SSH (Don’t skip this)
Root password login is a magnet for brute-force attacks. Use SSH keys.
# On your local machine:
ssh-keygen -t ed25519 -C "your_email@example.com"
ssh-copy-id root@your-server-ip
# Now SSH back into the server:
ssh root@your-server-ipDisable password login:
nano /etc/ssh/sshd_config
# Find and set: PasswordAuthentication no
# Restart SSH: systemctl restart ssh2. Configure the Firewall (UFW)
Only open the ports you actually need.
# Allow SSH, HTTP, and HTTPS
ufw allow ssh
ufw allow 80/tcp
ufw allow 443/tcp
# Enable firewall
ufw enable3. Install Docker & Compose
The easiest way is the official convenience script.
# Update the system
apt update && apt upgrade -y
# Install Docker
curl -fsSL https://get.docker.com | sh
# Install Docker Compose plugin
apt install docker-compose-plugin -y
# Verify
docker --version
docker compose version4. Create a Non-Root User (Optional but Good)
Running everything as root is risky. Create a user with sudo privileges.
adduser dev
usermod -aG sudo dev
usermod -aG docker dev
# Now log in as 'dev' for future workThat’s your server ready and secured. Every deploy guide in these docs assumes you’ve done this.
Next Steps
Your server is ready. Time to deploy something real:
→ The AltStack Starter Kit — Our recommended first set of tools → Deploy Guides — Pick any tool and deploy it