Hosting WordPress on a VPS for $2.50 a month – 2 months free

You can get 1 to 2 months of free VPS to test it out if you have never used Vultr/Digital Ocean or Runcloud by using our reflinks, so you can just try the VPS and if you don’t like to manage it you don’t spend anything. More on that later.

Doing all this should take about an hour. Honestly, the longer part is creating accounts. Once you have the account it takes 10~15 mins to have a brand new VPS with a WordPress install running. Installing WordPress on a current VPS with Runcloud is as simple as using cpanel.

In this guide you’ll need to use a little bit of Linux terminal, even if you have never used it, it’s still pretty simple.

The process will involve:

  1. Creating all accounts
  2. Creating a VPS instance
  3. Accessing the server and installing Runcloud
  4. Pointing your DNS to the IP of the server (you can use a subdomain for testing if you want)
  5. Installing WordPress or importing your installation

Advantages and Disvantages of using a VPS

First off lets start by putting the advantages and disvantages of this setup.


  • Much better performance when compared to Shared Hosting
  • Complete control over the server and server locations
  • Price per performance ratio


  • Lack of support for webserver related issues – which shouldn’t happen, but depending on how much you change things can happen.
  • Lack of email server – if you need emails at @yourdomain.tld you’ll need to get a service like Gapps, Exchange or something like Mailcheap for unlimited domains and much better pricing. This also means you’ll need to use WP SMTP with some email or Sendgrid/Mailgun setup.
  • No server backups (for free, you can always pay). But you should be backing up your WordPress externally anyway.

What’s involved – tools and sites


Well, obviously needed.

You can migrate with no downtime from another server. Guide will be below.

Vultr, Digital Ocean, Linode and others for VPS hosting

Vultr – use the link and once registered you can get $3 for free  – Performance and location wise I prefer Vultr, but they’re very similar. It has more datacenters and better CPU benchmarks, where DO wins in disk benchmarks. Vultr $2.5 is sold out quite frequently, so there’s that.

Digital Ocean – use this link to get $ 10 free credit, so you can run 2 months for free – Digital Ocean is good to start out. They have tons of documentation and tutorials, good disk speeds and are pretty much on par with Vultr.

There are other cheaper per config alternatives, but honestly if you’re starting out, this is already pretty cheap and those 2 are more well known. The point of this guide is to be simple and show how much performance can you gain. Choosing another VPS is entirely possible, but it may be more complicated to do this installation, and some are not compatible (Like ARM processor instead of x86 ones).


Runcloud – use the link to get 15 days free when upgrading – Runcloud is a pretty new, but very good VPS management service. It’s Free without SSL, $8 with SSL and has a trial for 5 days. There are alternatives to Runcloud, but after using them, I don’t think they are as cheap, good and complete. You can manage as many VPS as you want, have a WordPress script installer and much more.

How much are you really going to spend?

Consider this: how much you currently spend in shared hosting? If you have little traffic (less than 2k per day) and you don’t need SSL or a dedicated email server… About $2.5 a month with Vultr. That’s like $30 a year, or $5/mo for $60/year. Still cheaper than most Shared Hosting with a guaranteed better performance compared to what you can get at this price point, there’s no competition.

Now here’s the thing. If you need SSL (and you should use it), that’ll be $8/month more from Runcloud for a total of $126~$156 per year. If you have only 1 site depends on how much you are curently paying to be worth, unless you’re already hitting the shared host server limits and need an upgrade anyway. If you have multiple hosts you should consider this option.

If you need a mail server, you can use a service like Mailcheap for much better reliability than a shared hosting, aditional EAS (Exchange ActiveSync) and some very good webmail options starting at $2/mo.

So for $15 ($5 VPS + 8$ Runcloud + $2 mail) a month you get a Virtual Private server that should be able to handle more than 5k visits a day (if correctly optimized), a mail server with unlimited domains, and the usual SSL, quick install stuff.

How much RAM/CPU I need in my VPS?

If you’re moving from a Shared Hosting, you can easily go with 512MB to 1GB. Even if your Shared Provider tells you that you have “2GB RAM”, it’s actually split resources between multiple accounts, so even if the number is lower in the VPS, the resource usage is much more efficient. Performance will be better as well.

With a good caching setup (if your site is not dynamically updated more than once every hour) and a free CDN like Cloudflare, you can handle more than 50 simultaneos users without even touching your memory/CPU. More information on that in our article Optimizing WordPress with caching and server settings.

Creating the accounts

Ok, that’s the more time consuming part.

VultrDigital Ocean <- Choose one, go to the site and create your account.

These services charge by the minute, so it’s much less expensive to do tests with it.

Runcloud – very simple to create an account. No need for credit card info. During the trial you’ll be able to setup SSL and you can keep it, but you won’t be able to change it after. With the free plan you can still manage 1 VPS without SSL.

Creating a VPS instace

Once the accounts have been created, you’ll need to create a VPS instance.

Advice: Always install the server as close as possible to your users (or to you if you want a really fast WordPress Admin Panel).

Here’s one thing to note that I see happening often:

People buy a server with a huge config specs for a low price, but very far from them and think the server is slow. Unless you’re not getting what you paid for, the server is probably fine, but it’s so far that the distance makes requests be way longer than they should, increasing latency and making it seem slower. So if you’re in the US and your users as well, get an US server, if you’re in Europe, a European one, and so on. If you have visitors from everywhere you’ll obviously want to use a CDN besides the server. Also, you can check our article about Optimizing WordPress with caching and server settings.

Create your VPS, but you’ll need a Ubuntu 18.04 or 16.04 x64. Keep that in mind.

Also, if avaliable install IPV6. This will be handy in the future and you can already add DNS records for it.


After deploying the VPS needs a few minutes to be ready. Wait 3~5 minutes before accessing it.

Accessing the server and installing Runcloud

This will be done via terminal. If you’re using Windows you’ll need to install Putty.

Open Putty, your server information page in Vultr and log in to Runcloud.

In the Vultr server information you’ll see the IP address of the VPS, the root user and Password.

On Runcloud, after login in, on the top right press Connect Server.

Add your Server IP Adress in Runcloud. The name of the server can be anything you want. After that page it’ll show you a script to copy.

Now you’ll need to go to Putty. Copy the server IP from Vultr, go to Putty and paste it.

Press open to start the terminal.

Once greeted in the terminal, login with the user and password, you can copy from the Vultr server information. Paste it with a right click (nothing will show on screen, but it will be inserted) and press enter.

Once logged into the server, copy the Runcloud script and paste the code into Putty terminal with right click again. The installation will begin. You can close the terminal at this point, but you can leave it open to make sure nothing goes wrong and you get a warning message. This should take a couple minutes. You can go to the Runcloud tab and check the installation progress as well.

After the installation is complete you’ll see the Runcloud server page.

Ok this step is done. Now you need to point your DNS to Runcloud.

Point your DNS to the IP of the server

NOTE: if you’re migrating you main domain, first make a backup of your current WordPress install. Leave the DNS changes for last. Skip to the migration in this case.

This can be different depending on the service you use. If you use Cloudflare, you need to change (if you’re migrating) or add a DNS record (testing or new site).

This is very different depending on what DNS manager you have, so I’ll leave it up to you to do a little research on “how do I change my DNS [insert dns manager here]”

Once the DNS is correctly pointed to your VPS, you will install WordPress on the server.

Installing or migrating WordPress

Installing/Migrating with a plugin

Creating a web app

Go to your Runcloud server information > click on webapps > create your webapp

Now you’ll have a bunch of settings. You only need to change:

Web application name: whatever you like

Domain: the Domain you pointed in your DNS. Don’t forget to also add the www version if you are using a main domain.

PHP settings: 7.2

Web application stack: Native NGINX <- Note about this: Unless you know what htaccess is and you use it you don’t need Apache. Cache plugins for the most part don’t need it as well, so unless you changed it manually, don’t use Apache.

Then create the webapp

Creating a database and user

If you’re doing a clean install or migrating with a plugin you’ll need to do two things: create a database and user on Runcloud and run the WordPress script installer.

First create the Database. In the Server page, go to Databases on the left menu, and create database.

After creating the database, you need to create the user.


And then attatch the user to the db

Ok, once this is done we’ll head to the web application you created.

Adding SSL

If you want to add SSL to your site you can do this by going to the SSL/TLS menu on the left of the webapp, leave all the info as default, then go to Let’s Encrypt Enviroment and add Live. If you are using Cloudflare make sure the cloud icon (CDN proxy) is gray, otherwise the handshake may fail. After you see that it is working you can enable the cloud icon again.

Acessing your install

Now you can finally access you site. You’ll then install WordPress passing the db and user info you got earlier.

Add your site and contact info as requested.

Next you’ll login into your WordPress and it is done. If you want to migrate other site you can do it.


You can migrate 2 ways. Manually copying everything (DB and wordpress files) or using a plugin. If you are moving your site and don’t want any downtime, you’ll need to do it manually, but it is more complicated.

First using a plugin.


To migrate with a plugin you’ll need to install WordPress like I said above. After that, go to the site you want to copy and install a backup plugin. The simplest one I can think of is All-in-One WP Migration.

Here’s a video on how to export you install.

After you have your site backup file, you’ll need to import it to the new one.

NOTE: if you are migrating the same domain with a plugin, this is where you need to update your DNS, go back to the installtion step and install wordpress.

If you’re using a plugin to import the install that’s all you need to do. You may need to update your permalinks as well.


Manual migration is only advised if you have more knowledge on exporting and importing DB.

Note: even if you have no downtime at all, you’ll still not be able to move changes made after the database backup.

This consistis of:

  1. Compressing your current WordPress install
  2. Exporting your database to a SQL file
  3. Importing the files via command line or SFTP
  4. Importing DB via phpMyAdmin/HeidiSQL or command line

Export Files

The easiest way to compress your files is to go to your cpanel, select the file manager, go to your installation folder (inside where the index.php is) and compress it.

This will generate a .zip file with everything in your wordpress install.

Export DB

Login into your current site phpMyAdmin. Even if you have a shared host you can access it, take a look at your current cpanel and search for it.

In phpMyAdmin you have an option “Export”. Select it and export the db. This will download a .sql file with all your current database.

Import files

You’ll need to send the files to your server, you can do this via SSH or simply by uploading with SFTP.

With FTP: you can use a software like filezilla or Cyberduck to login to your server via SFTP. You can follow this guide to get you there.

Once you have accessed the webapp folder, upload your zip. After it’s complete, you can uncompress it (at least in Cyberduck) with a right click.

Command Line: you can actually download the file from your main server if it is public accessible. So if it is a huge file you won’t even need to download it. To do this, login as runcloud to your server via SSH, then run this command, changing as needed:

wget -P /home/runcloud/webapps/your-app-namehttp://yoursite.tld/”

After some time it should be done.

Now you just need the db.

Import DB

You can do this using phpmyadmin/HeidiSQL or via command line.

You will need to create the WordPress DB and user in the Runcloud manager. If you dont know how, you can check the Creating a db and user section. You can use the same WordPress wp-config.php file db user and password if you want to skip having to change the file later on.

Using phpMyAdmin to import involves creating a new subdomain (and pointing the DNS to the VPS), a new webapp and running the phpMyAdmin script on it, then acessing it via de domain url.

Or for an easier alternative you can use HeidiSQL and follow this tutorial. But instead of the root user and password, use the one you created for WordPress. Also, check this article on how to import your SQL file into HeidiSQL

Command Line: If you want you can use the same file method to download your SQL file, or upload it to the server with SFTP, after that you can login to your VPS and run this command to import the .sql to the database:

Replace the user, password to your WordPress ones and the path to where you downloaded the sql file to:

mysql -u wordpress_user -p user_password < /home/runcloud/webapps/your-webapp/filename.sql

After importing the database the site should be live.

If you are doing a no downtime migration. This is where you should change your DNS to point to your VPS.


That’s it for this one. Any questions leave in the comments bellow.

This Post Has One Comment

Leave a Reply