How to setup VPS with a free VPS control panel: VestaCP

Web development Hosting Domain Tech VPS 10 min read

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

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

Do you already have a VPS set up? Click here to go straight to the VPS Control Panel installation part!

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

VPS Versio

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

With DigitalOcean VPS’s are called Droplets

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

Choose a domain and add it to your cart
Add the VPS to your order

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:

Continue without webhosting (we are going to host on our VPS)
Continue without SSL certificate

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:

Customer portal

And click on my products > Domain names > Overview on the left-hand side.

Go to your domain overview

Click on your domain and then turn DNS management on:

Click on your domain
Turn on DNS management

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
Set your DNS records

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:

Create a new user

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:

Your connection is not private message

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}”

Proceed with the self-signed certificate

Enter your username and password:

Enter your username and password
Welcome to your VPS Control Panel

Now check the following boxes and hit save at the bottom of the page:

Check SSL Support and Check Let’s Encrypt support

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 domains to your account

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 mail addresses to your account

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’.

Add new databases to your account

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’.

Go to Server, then configure
Enter your backup server details

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:

Receive an email when cmdnick.com releases more articles
VPS Hosting Web Hosting Self Hosted Domains Domain Tech Web Development