Why Build Your Own?

Most people use Wix or Squarespace. That's $15-30 every single month. Over a year, you're looking at $200-400 — for a simple blog.

Here's what I did instead: bought a domain, rented the cheapest VPS I could find, and set everything up myself. Total cost? About $28 for the first year. And I learned how websites actually work in the process.

If you can follow a tutorial and copy-paste a few commands into a terminal, you can do this too.

The Shopping List

Item Cost Notes
Domain (.com) $6-12/year Namecheap, Dynadot, or Porkbun
VPS (1 vCPU, 1GB RAM) $2-4/month RackNerd, BuyVM, or Hetzner
First year total ~$28 Depends on VPS deal

Look for VPS deals on LowEndBox or Black Friday sales. I snagged one at about $2/month. It's not fast, but for a personal blog or portfolio, it's plenty.

What You Need

  • A credit card or PayPal
  • 2-3 hours of free time
  • A computer (Windows, Mac, or Linux — doesn't matter)
  • Basic typing skills (seriously, that's about it)

Step 1: Buy a Domain

Go to Namecheap, Dynadot, or Porkbun — they're all fine. Search for a name you like and grab the .com if it's available. Don't overthink this. Short and memorable beats clever every time.

After purchase, you'll need to point the domain to your VPS. The registrar will have a DNS settings page — set an A record pointing to your VPS IP address with @ as the host.

This step feels scary the first time but it's really just filling in two boxes and clicking save.

Step 2: Get a Cheap VPS

A VPS is just a computer in a data center that runs 24/7. For a simple website, you don't need much. Here are some options:

  • RackNerd — often runs promos at $18/year
  • BuyVM — $2/month with good support
  • Hetzner — €4/month if you're in Europe

Pick Ubuntu 24.04 LTS as your operating system. Most providers offer it as a one-click install. When your VPS is ready, they'll email you an IP address, username (usually root), and password.

Step 3: Connect and Update

Open your terminal (or PowerShell on Windows) and connect:

ssh root@your-vps-ip

Type yes when it asks about the fingerprint. Enter your password. Now update the system:

apt update && apt upgrade -y

Grab a coffee, this takes a few minutes.

Step 4: Install Nginx

Nginx is the web server — it serves your HTML files to visitors:

apt install nginx -y
systemctl enable nginx --now

Now open your browser and go to http://your-vps-ip. You should see the Nginx welcome page. If you do, the web server is running.

Step 5: Create Your First Page

Nginx serves files from /var/www/html/ by default. Let's overwrite the default page:

echo '<h1>Hello world</h1><p>My website works!</p>' > /var/www/html/index.html

Refresh your browser. You just made a website.

Step 6: Set Up SSL (HTTPS)

Nobody trusts a site without the padlock icon. SSL certificates used to cost money — now they're free with Let's Encrypt:

apt install certbot python3-certbot-nginx -y
certbot --nginx -d yourdomain.com -d www.yourdomain.com

Follow the prompts. Certbot handles the Nginx config automatically and sets up auto-renewal. That's it — your site now has HTTPS.

Step 7: Add Content

Now you have a working website. What you put on it is up to you:

  • Upload HTML/CSS files to /var/www/html/
  • Write a blog with markdown (like I do)
  • Host a simple web app on a different port

You can use scp to copy files from your computer to the VPS:

scp my-page.html root@your-vps-ip:/var/www/html/

How This Compares

DIY Wix Squarespace
First year cost $28 $192 $192
Speed Fast OK OK
Customization Full Limited Limited
Learning curve Yes No No
Ongoing cost $24/year $192/year $192/year

After year one, the DIY approach saves you about $170 every year. For a hobby blog, that adds up fast.

Common Problems

"Connection refused" when I try SSH — Your VPS might have a firewall blocking port 22. Check your provider's control panel.

Nginx welcome page doesn't show — Make sure Nginx is running: systemctl status nginx. If it's not, systemctl start nginx.

SSL certificate fails — Double-check your DNS A record is pointing to the right IP. DNS changes can take a few hours to propagate.

Domain shows something else — DNS propagation. Give it time — sometimes up to 24 hours.

What's Next

Now that you have a working server, you can:

  • Set up a blog using Python and Markdown (like this site)
  • Host a personal dashboard or notes app
  • Run automated scripts on a schedule with cron

This is the same way I built ByteLevelTech. Total cost: about $28 for the first year, and I control every piece of it.