Host Your Own Website Easily
I spent years paying $10–20 per month for shared hosting, watching my site sit behind slow servers, dealing with support tickets, and hitting arbitrary resource limits. Then I decided to take control. Hosting your own website doesn't require a computer science degree or a dedicated server cabinet. With the right approach—whether that's a cheap VPS, a spare laptop in your closet, or a Raspberry Pi on your network—you can run a real, professional website for a fraction of what you're probably paying now.
Why Host Your Own Website?
Let me be direct: I prefer self-hosting because it teaches you real infrastructure skills, removes middlemen, and saves money at scale. You own your data, your uptime, and your configuration. You're not competing with thousands of other sites for CPU cycles. When something breaks, you fix it—which sounds like work until you realize the alternative is waiting for a support ticket to be answered three days later.
The secondary benefit is honesty. You know exactly what you're running, where your content lives, and how requests are being handled. No hidden logging, no surprise IP blocks, no sudden policy changes from a hosting company's legal team.
Three Hosting Approaches
Option 1: Affordable VPS (Best for Most People)
If you want reliability without managing hardware, a small VPS is unbeatable. I recommend RackNerd for their KVM VPS plans—they're genuinely cheap (often under $2/month promotional pricing) and have solid uptime. You get full root access, real CPU cores, and enough bandwidth for most websites.
When I set up a VPS, I typically choose:
- 2GB RAM minimum (handles a static site or WordPress easily)
- 25–50GB SSD (plenty for content and backups)
- 2TB bandwidth (overkill unless you're streaming)
The alternative providers worth considering: Hetzner Cloud (EU-friendly, excellent performance), Contabo (cheap storage if you need it), and Linode (pricier but very reliable). I've used all three. RackNerd wins on price-to-performance for hobby and small business sites.
Option 2: Docker on Your Own Hardware
If you have a spare computer—even an old laptop—sitting around, you can run a website from home using Docker and a reverse proxy. I did this for three years on a 2015 MacBook Pro. The catch: your internet connection must be stable, and you need to handle DDoS mitigation yourself (more on that later).
Option 3: Hybrid: VPS + Home Server
My current setup uses a tiny VPS purely as a reverse proxy and static edge, with actual applications running on home hardware. This gives me the reliability of a VPS without paying $20/month for compute I don't need.
Setting Up a Basic Website on a VPS
Here's my actual workflow for spinning up a new site. I'm assuming you've provisioned a fresh Ubuntu 24.04 VPS and can SSH in as root.
# Update packages
apt update && apt upgrade -y
# Install Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# Install Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# Create a directory for your web files
mkdir -p /srv/website
cd /srv/website
# Start a simple Nginx container serving a static site
docker run -d \
--name my-website \
--restart always \
-p 80:80 \
-v /srv/website/html:/usr/share/nginx/html:ro \
nginx:latest
# Create a basic index.html
mkdir -p /srv/website/html
echo "Welcome to my website!
Hosted with Docker on a VPS.
" > /srv/website/html/index.html
That's it. You now have a website running. Visit your VPS IP address in a browser and you'll see the page. But a VPS IP address isn't a real domain. You need DNS.
Adding a Domain and HTTPS
Register a domain from any registrar (I use Porkbun for cheap domains and clean dashboards). Point the nameservers to Cloudflare or your VPS provider's DNS. Once DNS propagates, use Caddy to automatically handle HTTPS certificates and reverse proxying.
# Install Caddy (easiest reverse proxy for beginners)
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl https://dl.filippo.io/caddy/stable?plugins=github.com/caddy-dns/cloudflare && sudo dpkg -i caddy_*.deb
# Create your Caddyfile
sudo tee /etc/caddy/Caddyfile > /dev/null <
Caddy automatically fetches an SSL certificate from Let's Encrypt, handles certificate renewal, and proxies traffic to your Docker container. Your site is now accessible at yoursite.com with HTTPS. The entire process takes ten minutes.
Handling Email Properly
Email is the one thing I don't self-host, and neither should you. Maintaining mail server reputation, SPF/DKIM/DMARC records, and spam filtering is a full-time job. I use a cheap mail service like Mailgun (free tier covers 100 emails/day) or keep my registrar's email service. The friction isn't worth it.
Backups and Maintenance
The responsibility of self-hosting is responsibility for backups. When I set up a website, I immediately configure automated backups. For a VPS, I use a simple cron job that tars my /srv directory and uploads it to a cheap S3-compatible storage service (Backblaze B2, Wasabi, or DigitalOcean Spaces).
Every month, I spend 15 minutes updating packages (apt update && apt upgrade), checking disk space (df -h), and reviewing logs (journalctl -u caddy). That's the maintenance cost. Compare that to managing WordPress updates and hosting support tickets—it's actually less work.
Security Essentials
Self-hosting means you're responsible for security. This isn't optional. At minimum:
- SSH keys only (no passwords). Generate a key on your local machine and add it to ~/.ssh/authorized_keys on the VPS.
- UFW firewall. I allow only SSH (22), HTTP (80), and HTTPS (443):
ufw allow 22,80,443/tcp - Fail2ban. Auto-blocks IPs after repeated SSH failures:
apt install fail2ban - Limit root access. Use sudo; disable root login in /etc/ssh/sshd_config.
The Real Cost
Let's do math. A decent shared hosting plan costs $10–15/month = $120–180/year. A small RackNerd VPS costs $15–30/year (often less with their aggressive promos). A domain costs $8–12/year. Your total: under $50/year compared to $150/year for shared hosting. You're saving money immediately, and you own the entire stack.
Your time cost is maybe 4–6 hours to learn the basics, then 1 hour/month for maintenance. If you value your time at $50/hour, that's $58/year in labor. Still cheaper than the shared hosting fees, and you've learned something real.
Next Steps
Start small. Pick a VPS from RackNerd (their promotional pricing is real and recurring), deploy a static HTML site or a lightweight CMS (Hugo, Jekyll, or a single-container WordPress), and let it run for a month. You'll be surprised how stable it is and how much you learn from owning your infrastructure. Once you're comfortable, expand: add monitoring with Uptime Kuma, implement a CDN, or migrate other projects onto the same server.
Self-hosting your website isn't just cheaper—it's more honest. You know what you're running, and nobody can surprise you with a billing increase or a terms-of-service change. That's worth the small effort.