Setting up a cheap VPS for your website is straightforward if you follow a clear process. This guide walks you through everything from choosing a provider to deploying your first site – all in under 10 minutes of active work (plus waiting time for installations). No prior server administration experience required.
You do not need expensive managed hosting to run a personal site or small business website. A $5-$7/month VPS handles most WordPress or static sites easily. Start by browsing our budget VPS provider comparison table to find a plan that matches your budget and region.
What You’ll Need
- A cheap VPS plan ($5-$7/month recommended for websites)
- A domain name (pointed to your VPS IP via DNS)
- SSH client (Terminal on Mac/Linux, or PuTTY on Windows)
- Basic comfort with command-line operations
Step 1: Choose and Purchase a VPS Plan
Select a provider from our affordable VPS comparison page and purchase a plan. For a first-time website, look for:
- At least 1GB RAM and 1 vCPU
- NVMe or SSD storage (20GB minimum)
- Ubuntu 22.04 or 24.04 LTS as the OS option
- A control panel like Vultr’s or Linode’s for easy management
Most providers provision your server within 30-60 seconds. You will receive a root password and IP address via email or dashboard.
Step 2: Connect via SSH and Secure Your Server
Open your terminal and connect:
ssh root@your-server-ip
First thing: update the system and create a non-root user:
apt update && apt upgrade -y
adduser myadmin
usermod -aG sudo myadmin
Then secure SSH by disabling root login and password authentication. Edit /etc/ssh/sshd_config, set PermitRootLogin no and PasswordAuthentication no, then restart: systemctl restart sshd. Always use SSH keys for access.
Step 3: Install a Web Server
For WordPress, install Nginx with PHP and MariaDB. Run this one-liner:
apt install nginx mariadb-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip -y
Start services and enable them to run on boot:
systemctl start nginx mariadb
systemctl enable nginx mariadb
Step 4: Configure the Database
Secure MariaDB and create a database for WordPress:
mysql_secure_installation
mysql -u root -p
CREATE DATABASE wp_database;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'strong_password_here';
GRANT ALL PRIVILEGES ON wp_database.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Step 5: Download and Configure WordPress
Download the latest WordPress release and set permissions:
cd /var/www/html
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
mv wordpress/* .
rmdir wordpress latest.tar.gz
chown -R www-data:www-data /var/www/html/
chmod -R 755 /var/www/html/
Step 6: Configure Nginx for WordPress
Create an Nginx site configuration file, then enable it:
ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
Step 7: Complete the WordPress Installation
Point your domain to the server IP via an A record. Then visit http://yourdomain.com/wp-admin/install.php in your browser. Enter your database credentials and follow the 5-minute WordPress setup wizard.
Step 8: Enable HTTPS with Let’s Encrypt
Free SSL is non-negotiable in 2026. Install Certbot:
apt install certbot python3-certbot-nginx -y
certbot --nginx -d yourdomain.com -d www.yourdomain.com
Certbot auto-configures your Nginx and sets up automatic renewal. Verify with certbot renew –dry-run.
Step 9: Set Up a Basic Firewall
UFW makes firewall management simple:
ufw allow OpenSSH
ufw allow 'Nginx Full'
ufw enable
Step 10: Install a Caching Plugin
With 1GB RAM, caching makes a huge difference. Configure Nginx FastCGI cache or install a WordPress caching plugin like WP Rocket or W3 Total Cache. This cuts page load times from 2-3 seconds to under 500ms.
Troubleshooting Common Issues
- 502 Bad Gateway: PHP-FPM is not running. Run systemctl restart php8.3-fpm (adjust version as needed).
- Connection refused on SSH: Confirm the server IP and that port 22 is open. Check your provider’s firewall console.
- DNS not resolving: A records can take 1-30 minutes to propagate. Use dig yourdomain.com to check.
- MySQL Access denied: Double-check your database username, password, and that the user has privileges on the specific database.
Final Thoughts
You now have a fully functional website on a cheap VPS, running securely with HTTPS and a firewall. Total active setup time: roughly 10 minutes. For more budget hosting tips and provider comparisons, check out our affordable VPS comparison table to see if you can get better specs for the same price.



