There are three dimensions when considering hosting: price, quality, and convenience. For price, in the WordPress space, you can go from free to diamond-encrusted royal deluxe, with a lot of range in between. Quality also varies greatly, from server farms that stuff as many accounts on as possible to physical dedicated servers with fast processors, disk, and network. Generally, move the slider closer to free and the quality goes down and move it up and the quality follows. In terms of convenience, it goes from doing it yourself on the command line to having it done for you by experts. Convenience also tracks on price. It is that middle range where most of us live and where we find our comfort zone.
With the explosion of cloud hosted options, relatively inexpensive Virtual Private Servers (VPS) have become a go-to for site builders, agencies, and organizations. You get decently equipped servers, containerized so that you are not sharing resources with other customers, but you need to administer the Linux yourself. Server administration is a task that some are not comfortable with or don’t have time for. To ease this pain several companies have developed hosted server management control panels which have built-in scripts to automate all or most of the usual tasks. These server management platforms install inside of your VPS, provide a LAMP stack (Linux, Apache, MySQL, PHP – or alternatives), and with them you can also easily install WordPress.
Hosting your WordPress sites on a VPS, using a server management platform, is pretty close to the sweet-spot. You get good server performance, for a decent price, with only a fair amount of effort. However, it is not for everyone. There is a major caveat. It requires someone who has some server management experience or at least a power user who is willing to jump into the unknown and figure things out … because while these server management control panels can shield you from a lot of the command-line effort, at the end of the day there is some assembly required and you are responsible for the server. Thus, this route is not for everyone, but I decided to give it a go.
Twenty years back I worked as a database, Windows, and network admin. About 9 years ago I hosted Drupal sites on a Linode VPS. I chose to go that route for the experience. I’m not a Linux or network guru, but I understand the concepts. Today it was time for me to upgrade the hosting plan for my own sites. I was getting out of memory errors and tasks in the WordPress admin side, like opening or saving a post, were slow. There were my own sites and I wasn’t passing the cost on to clients so I wanted to keep costs low. I decided to give a VPS plus management panel a try. My reasoning and the choices I made reflect my own calculations and I’m not advocating that everyone follow and do the same. I share my thought process and this information in case it is helpful.
Picking a Server Management Control Panel
There are several respected server management solutions. They each have pricing tiers, but they are split differently. My requirements were that I needed to manage one VPS server, needed support for multiple sites, I wanted it to be easy to create a WordPress site (including an SSL certificate), each site should be separate from others for security purposes, and I wanted good support. I looked at the plans of the most often recommended providers.
|GridPane||Unlimited servers, large number of features, great support||$30 mo|
|RunCloud||1 server, necessary features, good support||$6.67 mo|
|ServerPilot||1 server, necessary features, OK support||$9 mo ($5 + .50 per app)|
Choosing RunCloud was a no-brainer. It has a good price point. Also, Rajendra Zore, the Chief Marketing Officer, is active on social media and I’ve had a number of good interactions with him. I found him to be honest and straightforward. I joined the RunCloud Users Facebook group before deciding and monitored the types of posts, problems, and responses. What I saw was that RunCloud is periodically adding new features and the RunCloud team is responsive to user issues. There was the occasional platform problem and when it occurred the team owned it and responded quickly. Then I watched an interview on Smart Web Creators between Davinder Singh Kainth and Rajendra Zore. During the interview there was some skepticism about the wisdom and ability for site builders to reliably handle a VPS, even with using a server management panel, but the response was that RunCloud is committed to providing good support and advanced Linux knowledge was not necessary.
Picking a Cloud VPS provider
There are a number of Cloud VPS providers offering similar products. I considered Digital Ocean, Vultr, Linode, UpCloud, Webdock, and Hetzner. What I found was that here are two tiers. Digital Ocean, Vultr, Linode, and Upcloud have very similar pricing and features. Webdock and Hetzner have more features for a lower price.
|Digital Ocean, Linode, UpCloud, Vultr||2 GB||1||50 GB||2 TB||$10 mo|
|Webdock US||4 GB||4||8 GB||Unlimited||$11 month|
|Webdock Europe||4 GB||6||15 GB||Unlimited||$11 mo|
|Hetzner||8 GB||2||80 GB||20 TB||$12 mo|
I spend a lot of time looking at reviews. I generally distrust dedicated review sites because I know that users can be given incentives to post reviews, so I looked at blog posts, Reddit, and in the LowEndTalk VPS forums. The hosting wisdom is to locate near your visitors for best performance. While the ample server resources of Hetzner was very appealing, they only had locations in Finland and Germany. I read that when they launched they had a huge capacity and great performance, but over time performance was uneven.
I looked next at Webdock. Webdock is primarily located in Norway with a data center in Texas. The plans for Texas represent the lower end of the ranges and I saw from reading reviews that Webdock even recommended using their European data center. Hmm, that was the first warning flag. The amount of storage on their US plan was limited, but I thought it might work so I gave it a try. I knew that I was going to have to do research and figure things out, but what I found was that their documentation was very limited, out of date, and unhelpful. For example, their documentation for connecting to your VPS via SSH from a Windows machine was to install the Linux subsystem. Number one I didn’t want to install Ubuntu in order to get an SSH client and number two, a year ago an SSH client was included with Windows 10, but the documentation hadn’t been updated. This threw up additional warning flags and so I moved on.
Digital Ocean, Vultr, Linode, and UpCloud looked very similar. I used the comparison feature on VPSBenchmarks to look at these side by side. Vultr High Frequency and UpCloud were the two best. I have heard a lot of good things about Vultr High Frequency VPS and UpCloud offerings. In the side by side comparison Vultr came out slightly ahead. I researched a bit more and found that Vultr allows you to scale up your servers, while UpCloud lets you scale them up and down. I next search the documentation of these two providers for “RunCloud.” There was no mention on the Vultr site, but UpCloud had a step by step tutorial on how to connect RunCloud to your UpCloud server. There was also a $50 UpCloud credit link from the tutorial. So, I decided to go with UpCloud.
UpCloud Signup and Setup
I can’t guarantee that there will still be a $50 credit when you sign up for UpCloud, but here is the link to the tutorial I used. Note that promotions don’t stack, so if you have some other promotion or see some notice about getting a credit, you can only use one.
When I clicked the signup link in the tutorial I came to this page where the promo code was automatically applied.
After you enter that information, you then go to a second screen where you enter your billing information. You are signing up for a free trial, but you still have to supply your credit card.
And when you enter your newly created account you get a notice about limitations of the trial account.
As I planned to go ahead, I made the $10 payment to exit trial mode. Here is a screenshot of my account balance after 3 days. I have the $50 credit plus the $10 payment.
Adding an SSH Key to UpCloud
There is the option to add an SSH Key. If you are using a Mac then you should follow instructions for generating an SSH key on a Mac. If you want to create one, you can open the power user shell in Windows 10 by clicking on the Windows icon in the lower left corner and type “powershell”.
Then when you get the powershell prompt you can type “ssh” to see if it is installed. If it is you will see a set of help commands.
If the SSH client is not installed there here is a link to help get it installed or enabled. An SSH client will be needed when we get to the RunCloud portion.
Once you have the SSH client available, you can type “ssh-keygen” and follow the onscreen instructions. A public and private key will be generated.
The file with the “pub” extension is the public key you will need. Back in the UpCloud UI, click on the button to add an SSH key.
Give the key a name and paste the contents of your public key into the SSH key text box. Then click the save button.
Creating the VPS on UpCloud
Under the Servers tab there is a big button to “Deploy Server.”
Then there is a long form for picking your server options. I selected the location closest to me, the $10 a month plan, accepted the default 50 GB of storage, and picked the Ubuntu 18.04 image. Picking the Ubuntu 18.04 image is important because that is the Linux version supported by RunCloud. I filled out the Optionals form and selected the SSH Key I already added. Then I clicked the Deploy button.
In a few minutes the server is ready and you can select it to see the details and stats. When you server is created you will get an email that has the IP address and root password. I blurred out my IP address, but the location is shown in the screenshot. We will need the root password and IP address to install the RunCloud script later.
And if you click on that, here are the server details.
Notice the sub-menu. There is an emergency console, an interface to resize your server, an interface to take a manual backup or schedule backups, a network tab with network information, and a place where you can configure firewall rules. The default firewall rules allow us to install RunCloud.
The Backup are full disk images, without compression, that cost .06 six cents per GB per month. Too bad there is no disk compression to save on costs. Setup backups as desired.
RunCloud Signup and Setup
At this point we are ready to signup for RunCloud. Go to RunCloud and either sign up for the free trial or select the plan you want. I selected the Basic Plan for managing one server.
You then go to a screen to create your account.
After going through the account creation process you will come to the screen to connect your server. I filled in the form providing the IP address of the UpCloud server, selected the UpCloud button, and clicked the button to Add the server.
You then get a screen with a script that you need to copy.
Go back to the SSH command window on your local computer. Type ” “ssh root@myipaddress” (substituting your server IP address) to log into your UpCloud server via SSH. Enter your root password and after you are authenticated, paste in your RunCloud install script. It will take several minutes as software is installed and configured. You will eventually get a success screen with some password information. You should copy those usernames and passwords in case you need them later.
Here is my Runcloud server dashboard. As you can see, I have already created 8 WordPress sites (web applications).
Adding a WordPress Site
If you already have a WordPress website that you are moving over, the first step is to log into it and take a backup. You can use the free WPVivid, Updraft Plus, All in One WP Migration, or your plugin of choice. Here is a link to a post I wrote about WPVivid. In this walkthrough I’m using All in One WP Migration with an extension that removes the backup size limit.
I exported the site to a file that I saved on my computer.
I then went to my domain name registrar and changed the domain records to point to the new IP address of my UpCloud VPS. It can take a while for your DNS change to be picked up by DNS servers. You can use the free “What’s My IP” checker to see that your IP change has been propagated. Once the IP address has changed you will see a page like this when you try to visit the site.
So now you can setup your WordPress site / Web Application. When you click on the Web Application menu item you get an option to create a new one.
Then you get an option to create a custom PHP web app or a WordPress application.
When I clicked the 1 Click WordPress button there is a form to fill out. I noticed near the top of the form that there is an option for which user to assign for the web application ownership. For security purposes, you absolutely want to use a separate user for each site. The default runcloud user is the only one that exists when you start out. If you uncheck the default RunCloud user you can type in a username. I suspect that this creates the user without a password and you can later go to the System User menu to set one.
However, instead of doing that, I went ahead and went to the System User menu. I clicked the Create button and got a short form to fill out.
I clicked the Create button and got a short form to fill out.
I used the Generate Password button, copied it to my password manager, and then clicked to use it. This fills in the form with the generated password. Once the user for the web app was created, I returned to the Web Application menu and clicked the 1 Click WordPress button. Here is the full form. I went with the latest version of PHP and the NGINX + Apache hybrid. One thing to note is the WordPress user and password. You are going to need them to log into your site for the first time. Here again, I used the password generator. I tried using the exiting site password but for some reason the form rejected it.
I clicked the Add Web Application button at the bottom of the page, the app was created and I got a summary page.
At this point you are actually in the UI for the app and the menu items on the left site all pertain to this site. There are areas here for managing your web app settings. I clicked on the Domain Name menu. I added the naked domain name without the sub-domain.
I then clicked on the SSL/TLS menu item on the left. On the bottom of the form you need to select the environment from the drop down and then click Submit.
You then get a screen telling you that the certificate is being created.
I gave it a minute and then tried to reach the site in my browser. The default WordPress install came up with the 2020 theme.
I logged into the new site using the username and password supplied when the web app was created. I then went to the plugin menu, deleted the default plugins that come with WordPress, and installed my backup plugin, All in One WP Migration.
I went to the All in One WP Migration Import menu and selected the site backup I made earlier. The backup was restored and my site had been migrated to the new server.
Other RunCloud Web Application Menus
File Manager Menu
Back in the RunCloud UI, I’ll point out a few of the other menu areas that might be of interest. While still within the area for a web application, there is a RunCloud file manager. This lets you access all of the files on your site and when you click on one you can edit it.
You can also change permissions, rename and delete.
The Settings Menu lets you change the PHP, web server setting, and environment configuration.
The Tools menu lets you change or fix file and directory ownership permissions.
The Web Server Log menu lets you filter to see all activity or just the error logs.
There is also the option for special RunCloud caching that you can setup from the RunCache menu. I haven’t tried this as I am wary of using lots of layers of caching on sites that have active content creation.
I asked in the Facebook group if there were things people needed to do after first install and the answer was that sometimes the database log files can grow large and pile up. There is no way to manage those from the RunCloud interface, but I found an article, aptly named Things to Do After Installing Runcloud, that described the steps, so I SSHed into the VPS and disabled the logs.
Database Collation Not Set
When looking at the list of databases I was surprised to see that the database collation was “unset.” I researched this and found that just by coincidence, MariaDB uses the same default character set and collation as WordPress recommended, so I guess that wasn’t a problem, though I wasted an hour researching it.
Something else that was a bit disappointing is the backup option. You get 30GB of storage with the plan, but you have to pay $.03 per “instance.
However, you aren’t backing up your RunCloud system but instead the web applications (sites) and their databases. Each web app counts as an instance and each database counts as an instance, so each backup file is $.03. For a site that is $.06 a day. Multiple that by the number of sites and then multiply that by the number of backups for each site in your rotation plan. It can add up. I saw in the Facebook group that there was a mention of the possibility of allowing people to use their own offsite storage, such as Google Drive or pCloud. That would be good as RunCloud backups could provide a nice safety net in addition to your usually WordPress backup solution.
Managing the Databases
One thing that caught me by surprise is that there is no database administration app installed by default. I’m used to having PHPMyAdmin or HeidiSQL available. I found an article in the knowledge base on how to securely connect to your database using HeidiSQL from your desktop over SSH, which is a more secure method. I just happened to have HeidiSQL installed because it comes with Laragon. HeidiSQL basically sets up an SSL tunnel to the database. I tried that and was able to connect fine. This wasn’t a gotcha, but is something good to know about.
Support Is Good
During the setup process I asked support questions a couple of times. I was very pleasantly surprised to get a response in just a few minutes. Also, the responses were knowledgeable and helpful. So big win there.
Overall A Good Level of Control
You definitely get a much more hands on relationship with your VPS than with Cloudways, but other than managing the database logs, the options and interface are pretty extensive and I felt like I had a good amount of control. Everything worked and provisioning a WordPress site, including setting up the SSL certificate, were fast and easy.
Summary and Conclusions
If you have followed along this far then you have basically let me be your guinea pig and hopefully you can start to get a sense of whether managing your own VPS with RunCloud is something you can or want to do. Cloudways is a good alternative if you want to have a VPS without needing to deal with it at all, but you pay extra for that convenience. It made sense for me though to take the leap and give the Cloud VPS a try.
Overall, I’m pretty happy with the UpCloud + RunCloud combination. It is a bit of an experiment, but I’m confident now that I have it setup that I won’t need to spend a huge amount of time on server administration. This is especially true given the good support from the RunCloud team.
I hope you’ve found this overview and walkthrough useful. Thanks for reading.