Want to set up a VPS with a free VPS control panel? Do you host websites for yourself or for clients? Or are you planning to? Do you want to switch from shared hosting to your own VPS? Or you don't even want to get started with shared hosting because of the slow speeds, the high spam scores and the limited control you have over your own websites? You have come to the right place. In this full guide, we will discuss how to set up your own VPS with a free VPS control panel in just 30 min.
We will discuss:
- VestaCP: Free and open-source VPS Control Panel
- Why choose VestaCP as your VPS Control Panel?
- Where to get your VPS
- Setting up your VPS for VestaCP
- Installing your VPS Control Panel: VestaCP
- A quick tour through the VPS Control Panel
- Set automatic backups
VestaCP: Free and open-source VPS Control Panel
In this guide, I am going to provide you with step-by-step instructions on how to install a free VPS control panel on a Ubuntu 18.04 VPS host. I'll be using Vesta control panel (VestaCP). VestaCP is a full-fledged open source hosting control panel, which can be used to manage multiple websites, create and manage email accounts, FTP accounts, and MySQL databases, manage DNS records and more. So if you need a VPS that can do any of the following with an easy-to-use interface, you've come to the right place:
- Create and manage multiple websites
- Use Softaculous for easy app installation (like Wordpress) (Optional)
- Set up unlimited mail accounts per domain (Optional)
- Allow for multiple user management (for reseller hosting for example) (Optional)
- Create FTP Accounts (Optional)
- Add and manage MySQL databases (Optional)
- Manage DNS records (Optional)
- Automatic backups (Optional)
- Much more
Why choose VestaCP as your VPS Control Panel?
You might be familiar with DirectAdmin or cPanel already. So you might ask, why not install those admin panels instead? Most people opt for VestaCP mainly because it’s free, compared to DirectAdmin and cPanel, which cost between $2 - $45 dollars per month, depending on your needs.
Where to get your VPS
There are several great VPS providers out there. Too many if you ask me hehe😜
I've used quite a few over the years, but these are my favorites:
Versio - Best value for money VPS
Versio is my absolute favorite. Besides having an easy to use interface and offers from small to large VPS boxes, they are by far the cheapest as well. I haven't seen any VPS provider with these prices. If you want to host in Europe/The Netherlands, I would go for Versio.
DigitalOcean - Cheap and lots of features/extras/upgrades
DigitalOcean is the best option if you want to go for network speed, features and easy to use combined with a great price. They are very cheap compared to the other VPS providers out there and comes packed with features. DigitalOcean has servers in several locations (so you can host all around the world, wherever you want). Besides, they have pre-made Operating Systems that come with Docker/Wordpress/LAMP/Grafana/cPanel/Plesk pre-installed (which they call 1-click-apps) which saves you a lot of time during installation. They have special CPU-Optimized or Memory-Optimized VPS'es if that's what you're looking for.
Setting up your VPS for VestaCP
In order to set up your VPS for VestaCP, I recommend using Ubuntu 18.04. You may, of course, choose any other OS, but the guide below is based on Ubuntu Server.
Before we get started preparing your VPS for VestaCP, you're going to need a domain for your VPS. Versio is a great place for cheap domains as well, so in this guide, I am going with them, but feel free to register your domain wherever you like.
Step 1: Register a domain for your VPS
In the following screen, Versio will ask for the hostname of the VPS. In this case, they are asking for the FQDN (Fully Qualified Domain Name) for your VPS. This has the format of
myvps.domain.com
if "domain.com" is the domain you just added to your cart to register, you will have to add the hostname to the VPS in front of it. In our example we're going for: panel.eglas.online. eglas.online is the domain name we just added to our cart, and panel is going to be the hostname of the VPS. Set your FQDN and choose Ubuntu as the OS for your VPS
Click continue and go for the following options:
You can continue without a SSL certificate as well, we’re going to set up free SSL certificates within our admin panel and LetsEncrypt later.
Step 2: Setting up private nameservers for your VPS
Now it’s time to set up private nameservers for your VPS. In order to do so, make sure to go to your customer portal:
And click on my products > Domain names > Overview on the left-hand side.
Click on your domain and then turn DNS management on:
Delete all the records that are present and make sure to add the following records:
You will find the IP Address of your VPS in the email you’ve received after checkout.
@ | A Record | your_vps_ip
ns1.yourdomain.com. | A Record | your_vps_ip
ns2.yourdomain.com. | A Record | your_vps_ip
yourhostname.yourdomain.com. | A Record | your_vps_ip
www.yourdomain.com. | CNAME Record | yourdomain.com
After you’re done, it can take up to 48 hours until your DNS records are properly propagated, but usually, it’s just a few hours.
Step 3: Log in to your VPS control panel
After your purchase, it can take a few minutes for your VPS to be ready. Once it’s ready you will receive an email with the login details for your VPS (and a free backup server to place your backups, sweet!). If you’re on windows, download an SSH client like Putty, if you’re on Mac or Linux, just open your terminal and enter:
ssh root@<your-vps-ip-address>
alternatively, if enough time has passed for your DNS records to propagate, you can also enter:
ssh root@your_FQDN
so for me that would be: ssh root@panel.eglas.online
Next, enter the password you received in your email for your VPS.
Step 4: Set up a user account
Great! You’re logged in. As you might know, it’s not smart to operate on the root account all the time. So let’s quickly create a new user with root privileges before we start installing your VPS Control Panel. In your terminal type:
adduser <yourusername>
In my case I’m going for user called cmdnick:
Add your password, then enter the required details (or skip them by pressing return). Now that we have our new user, let’s give it some root privileges by executing:
usermod -aG sudo cmdnick
let’s switch to this user:
su cmdnick
Awesome! You’re good to go, let’s install VestaCP!
Installing your VPS Control Panel: VestaCP
Great! You’ve made it so far, now it’s time to install the VPS Control Panel. First, let’s make sure your package list and the OS packages are up to date by running the following commands:
sudo apt-get update
sudo apt-get upgrade
After that’s done, we’re ready to download the vesta install script:
curl -O http://vestacp.com/pub/vst-install.sh
Now you can use the command below or head over to https://vestacp.com/install/ and generate install command to install nginx, apache, vsftpd, exim, dovecot, spamassassin, named, iptables, fail2ban, softaculous, MySQL and use file system quota:
sudo bash vst-install.sh --nginx yes --apache yes --phpfpm no --named yes --remi yes --vsftpd yes --proftpd no --iptables yes --fail2ban yes --quota yes --exim yes --dovecot yes --spamassassin yes --clamav no --softaculous yes --mysql yes --postgresql no --hostname YOUR_HOSTNAME_HERE --email admin@YOUR_DOMAIN --password YOUR_PASSWORD_HERE
Don’t forget to change ‘YOUR_FQDN_HERE’ with your FQDN and ‘YOUR_DOMAIN’ with your actual domain name above and use a strong password for your VestaCP Admin user.
You will see the following output:
Vesta Control Panel
The following software will be installed on your system:
- Nginx Web Server
- Apache Web Server (as backend)
- Bind DNS Server
- Exim Mail Server + SpamAssassin
- Dovecot POP3/IMAP Server
- MySQL Database Server
- Vsftpd FTP Server
- Softaculous Plugin
- Iptables Firewall + Fail2Ban
Hit ‘y’ and wait for the installer to finish doing its thing. Wait until you receive the following output:
Congratulations, you have just successfully installed Vesta Control Panel
https://your_server_ip:8083
username: admin
password: YourPasswordHere
Now go to https://your_vps_ip:8083 and enter the login details from the terminal output.
A quick tour through the VPS Control Panel
Now that Vesta is installed, let’s have a look and see what we can do. If your DNS is ready, go to:
https://your_fqdn:8083
Alternatively, you could enter:
https://your_vps_ip:8083
When you do, you’re probably going to see the following:
That’s because Vesta self-generated an SSL certificate for you, which cannot be verified. Let’s set up a verified Let’s encrypt certificate before we continue.
Let’s Encrypt SSL Certificate for your VPS Control Panel
In order to proceed click ‘advanced’ and click “Proceed to {your_domain}”
Enter your username and password:
Now check the following boxes and hit save at the bottom of the page:
This will only work if you waited for your DNS records to propagate and you were able to reach your VPS Control Panel by entering the domain in your browser instead of your VPS IP address.
That’s it! Within a few minutes Let’s Encrypt will create a new verified SSL Certificate for your domain.
Add new domains
Let’s say I registered a second domain called yourseconddomain.com on which I want to host a website. To add this domain to your account, simply click on ‘WEB’ >> click the green plus button that will say: ‘ADD WEB DOMAIN’ >> enter your new domain name and click ‘Add’.
For every domain you register, make sure the nameservers are pointed towards ns1.yourdomain.com and ns2.yourdomain.com. In my case, the nameservers for yourseconddomain.com are pointing towards ns1.eglas.online and ns2.eglas.online
Add new email accounts
To create a new email account for any given domain, just click on ‘MAIL’ at the top >> hover over the domain name >> click ‘ADD ACCOUNT’ >> enter your new email address (without the domain name), click generate to generate a password for your email account and click ‘Add’.
Add new databases
To create a database, click on ‘DB’ at the top >> ‘ADD DATABASE’ >> enter your new database name, database username, click generate to generate a password for your MySQL user, and click ‘Add’.
Set automatic backups
If you registered with Versio as I did, you will be supplied with a free backup server. In order to set this up with Vesta, all you have to do is go to ‘server’ at the top >> click configure >> backup >> remote backup. Select SFTP as the protocol and enter your backup server details. In the directory field, you can specify a directory where your backups would go. For mine I choose ‘vestacp_backups’.
Congratulations! You’ve completely set up your own VPS with a free VPS Control Panel. I hope you will get a lot of use out of it. If you liked this article and want to receive more articles like these, make sure to subscribe to my newsletter: