Testing hosting since 2009. 60+ accounts across major providers. Former web dev turned full-time reviewer.
When I set up my first VPS it took three hours because I had to piece together commands from five different tutorials, each written for a slightly different environment. None of them explained what the commands actually did. This guide is the one I wish I had found.
This assumes Ubuntu 22.04 LTS. If your VPS runs a different OS, some commands will differ — but the structure is the same. Ubuntu 22.04 is what I recommend for beginners: it has the best documentation, the largest community, and the most consistent package versions.
What You Need Before Starting
A VPS
RackNerd ($1.49/mo), InterServer ($6/mo), or DigitalOcean ($4/mo). Minimum 1GB RAM for WordPress.
A Domain Name
You'll point your domain's A record to your VPS IP address. DNS propagation takes 5-30 minutes.
SSH Client
Terminal on Mac/Linux. PuTTY or Windows Terminal on Windows. You'll connect to your VPS over SSH.
Step 1: Buy and Access Your VPS
Purchase a VPS
Sign up at RackNerd or InterServer. Choose Ubuntu 22.04 as the OS. After purchase you will receive an email with your server IP, root password, and SSH port (usually 22).
Connect via SSH
Open your terminal and connect to your server:
Update the system
First thing on any new server — update all packages:
Step 2: Secure the Server
Never run your web server as root. The first thing to do on any VPS is create a non-root user and lock down SSH access.
Create a non-root user
Create a regular user with sudo privileges:
Set up SSH key authentication
On your local machine, generate a key pair and copy it to the server:
Disable root login and password auth
Edit SSH config to only allow key-based login:
Enable firewall
Allow only SSH, HTTP, and HTTPS traffic:
Step 3: Install LEMP Stack
LEMP = Linux + Nginx + MySQL + PHP. This is the standard stack for WordPress on a VPS. Nginx uses significantly less RAM than Apache, which matters on a 1GB server.
Install Nginx
Install MySQL
Install PHP 8.2
Create database for WordPress
Step 4: Install WordPress
Download and extract WordPress
Configure Nginx for WordPress
Complete WordPress setup
Visit http://YOUR_DOMAIN in your browser. WordPress will guide you through the setup wizard. Enter the database name (wordpress), user (wpuser), and the password you set in Step 3d.
Step 5: SSL and Domain Setup
Install Certbot (free SSL)
Get your SSL certificate
Verify auto-renewal
Certbot sets up a cron job for auto-renewal. Verify it works:
Your site is live.
Visit https://yourdomain.com. Total time: 20-30 minutes. Total cost: $1.49-6/month for the VPS plus $10-15/year for the domain. You now have a server that outperforms most $18/mo shared hosting renewals.
Things That Trip People Up
Unmanaged means you handle security
Patches, firewall rules, backups — all on you. If you're not comfortable with SSH yet, start with managed hosting (Cloudways) and learn VPS management in parallel on a separate cheap VPS.
"Unlimited bandwidth" means shared port
Budget VPS plans often advertise 1Gbps but that is a shared port. During peak hours you might get 100Mbps actual throughput. It is still fast enough for most use cases.
Don't skip backups on a VPS
I lost a client's staging server because I assumed the provider had automatic snapshots. They didn't. Set up UpdraftPlus before you start using the site, not after.
Check the virtualization type
KVM is better than OpenVZ for isolation and kernel control. Some cheap deals are still OpenVZ. The VPS spec page should list it — if it does not say KVM, ask.
Which VPS to Use
| Provider | Price | RAM | Best For |
|---|---|---|---|
| RackNerd | $1.49/mo | 1GB | Budget VPS, learning, dev servers |
| InterServer | $6/mo | 2GB | Price-locked, better support |
| DigitalOcean | $4/mo | 512MB | Best documentation for beginners |
| BandwagonHost | $49.99/yr | 1GB | China-optimized routing |
For following this guide: RackNerd or DigitalOcean. RackNerd is cheaper. DigitalOcean has better documentation if you get stuck — their tutorials are comprehensive and kept up to date.
See RackNerd pricing