Updated on 25.5.2023

How to configure ClassicPress using VestaCP

ClassicPress

ClassicPress is a fork of WordPress (without Gutenberg) that serves as a business and a professional focused CMS. What sets ClassicPress apart is the preservation of the classic TinyMCE editor as the default option. Moreover, it is strictly a community-based project and decisions are been made democratically (Suggestion and Features can be made via the petition system).

Following this tutorial you can learn how to set up, install and configure a ClassicPress website on Ubuntu 18.04. To make this easy and fast, we are first installing Vesta Control Panel that can be used to manage multiple websites, email accounts, MySQL Databases, DNS records and more. VestaCP also provides a built-in Analytics, Server Statistics, Backups & Restore, Free SSL from Lets Encrypt, Great CLI & API, and many more.

Prerequisites

First, you will need to deploy a new cloud server that fulfils the minimum system requirements of 512MB RAM, 20GB of storage, and 1 CPU core. As such, the $5 Simple plan is more than enough.

VestaCP supports a wide variety of operating systems, but for this example, we are using Ubuntu 18.04.

Additionally, for a fully-fledged website, you will need to have registered a domain name. We’ll be setting up the following records once the new cloud server has been deployed. Naturally, replace the domain names shown as an example with your own.

  • An A records pointing your domain e.g. classic.example.com to your cloud server’s public IP Address for the ClassicPress site
  • An A records pointing e.g. vestacp.example.com to your cloud server’s Public IP Address for the VestaCP Dashboard
  • A CNAME record pointing www. to your domain e.g. www.classic.example.com to classic.example.com

Check out the general instructions on how to manage DNS records if you want to learn more.

Step 1. Setting domain name records

In addition to pointing a domain name to your UpCloud web server, you should change the reverse DNS name to your websites’ name. You can change the reverse DNS name by visiting your UpCloud control panel.

Navigate To The Network Section under your cloud server settings.

Click the pencil icon to edit the Reverse DNS Name of your public IP address:

VestaCP set reverseDNS name

Note: This should be your registered domain name, for example, classic.example.com.

Then copy the public IPv4 address as you’ll need it to configure the A record.

The next thing you would need to do is to point an “A record” to your server’s public IP address, this should be done via your domain registrar dashboard. You can find general instructions here but refer to your domain registrars for more information.

Once you have done that, create an additional A records pointing dashboard.yourwebsite.com to your public IP address, this would be solely for accessing the VestaCP dashboard. This way, we can keep the backend separate.

Lastly, create a CNAME record pointing www.classic.example.com to classic.example.com. This will be created at your domain registrar similarly to the A record.

Step 2. Creating new user with sudo privileges

It is highly recommended to create a non-root user account. If you have a non-root user account, you can skip this step!

Here are some reasons as to why you should:

  • Security: Intruders/Bots knows there is a root account, that means you are opening a known entry point which is very likely to be a target
  • Logs: root doesn’t log entry of commands but with a sudo account, every command run is logged, which helps in diagnosing a problem with the system.
  • Minimize Disaster: root is really powerful and a little mistake when running commands can destroy the whole system, consider you mistakenly run the following command: sudo rm -r / home/user, you see that space between the / and the home is your system directory, if you run that command, your whole system is down, which is why sudo is recommended, if you use sudo, at least, you will be prompted the password, so, luckily, you can see the mistake before you enter the password.

Let’s create a non-root user account with sudo privileges.

Log in as root over SSH and add a new user with the following command while replacing the newuser with your desired username:

adduser newuser

You will be prompted to create a new password for your new user, enter and confirm the password.

Having done that, you will be prompted to fill in your info, skip by hitting the enter key and input to verify your details.

Once your new user is created, the next task is to give the new user a sudo privilege, this way we can perform administrative tasks with the sudo command.

Give it a superuser privilege by running the following command:

usermod -aG sudo newuser

Remember to replace newuser with your own username.

That’s it about creating a non-root user with sudo privileges. Continue in the next step on how to install VestaCP itself.

Step 3. Installing Vesta Control Panel

First, switch to the non-root account using the command below where the newuser would be the non-root account you just created.

su newuser

Then download bash install script using the following command:

sudo curl -O http://vestacp.com/pub/vst-install.sh

You might be prompted for a password to confirm you are the new user, enter the password for the non-root user account and proceed by removing group admin using:

sudo groupdel admin

Note: If you receive “groupdel: group ‘admin’ does not exist”, kindly ignore as VestaCP will create it during the install.

Finally, install VestaCP:

sudo bash vst-install.sh

You will be asked to confirm the software you want to install on your Ubuntu server, enter y & hit enter to continue, input your email and enter your FQDN (Fully Qualified Domain Name), this should be the dashboard URL: e.g vestacp.example.com:

 _|      _|  _|_|_|_|    _|_|_|  _|_|_|_|_|    _|_|
 _|      _|  _|        _|            _|      _|    _|
 _|      _|  _|_|_|      _|_|        _|      _|_|_|_|
   _|  _|    _|              _|      _|      _|    _|
     _|      _|_|_|_|  _|_|_|        _|      _|    _|

                                  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
   - Dovecot POP3/IMAP Server
   - MySQL Database Server
   - Vsftpd FTP Server
   - Softaculous Plugin
   - Iptables Firewall + Fail2Ban

Would you like to continue [y/n]: y
Please enter admin email address: [email protected]
Please enter FQDN hostname [vestacp]: vestacp.example.com
Installation backup directory: /root/vst_install_backups/1581758296

Installation will take about 15 minutes ...

Installation can take up to 15 minutes, this will vary depending on your cloud server…

Vesta installation script will install the control panel and configure the following dependencies for you:

Apache webserver with Nginx as the frontend. Apache will render PHP and HTML files, while Nginx will serve static files (such as images and CSS).

  • Bind DNS Server
  • Exim and Dovecot for email accounts
  • MySQL Database Server
  • Vsftpd FTP Server
  • Iptables Firewall + Fail2Ban
  • Roundcube mail client
  • Analytics
  • and more

Once the script is done installing, you should see this if it successfully installed:

 _|      _|  _|_|_|_|    _|_|_|  _|_|_|_|_|    _|_|
 _|      _|  _|        _|            _|      _|    _|
 _|      _|  _|_|_|      _|_|        _|      _|_|_|_|
   _|  _|    _|              _|      _|      _|    _|
     _|      _|_|_|_|  _|_|_|        _|      _|    _|

Congratulations, you have just successfully installed Vesta Control Panel

    https://vestacp.example.com:8083
    username: admin
    password: T5D7yKlRdo

Step 4. Setting up VestaCP

Go to the URL given to you at the end of the install.

This should be https://vestacp.example.com:8083/, but yours will vary based on the hostname you entered at the beginning.

Note: If you aren’t able to access your dashboard URL, it probably has to do with the DNS propagation, it might take anywhere between 30 minutes — 48 hours, use your cloud server’s IP address to login instead, e.g 94.237.120.45:8083. You can also check the URL using whatsmydns.net to see if your name record has propagated.

You will get an SSL warning has shown below, kindly click on Advance and Proceed. The warning is normal on the first time accessing a site that is using a self-signed certificate:

VestaCP not private continue

Log in with the username and password Vesta generated for you at the end of the installation output.

VestaCP login

Next, you should change your Vestacp password. Hover over the admin user and click Edit:

VestaCP edit admin

You can either let Vesta generates the password for you or set it yourself.

You can also change other settings, for example, the user’s first and last name.

You can leave the Nameserver as is or you can change it to use your own Nameserver if you have one.

Click Save when you are done with the settings, take your time!

When you are done updating the admin user details, navigate to the Web section and click the Add Web Domain button revealed by mousing over the plus icon:

VestaCP add domain

Add your domain name and change the IP address to your cloud server’s public IP address. Then make the following selections:

  • DNS Support — check
  • Mail Support — check
  • Click Advanced Options, and use the following setting:
    Aliases should be e.g. www.vestacp.example.com, this way your user can access your website using www
  • Proxy Support — check
  • (Optional) SSL Support — check
    • Let’s Encrypt Support — check
  • (Optional) Web statistics — choose Awstats
    • Statistics authorization — check, and add a unique user & pass
  • (Optional) Additional FTP — If you feel you need one for uploading files to your server, check and create the user and pass, leave the path as is

Once done, click the Add button to confirm.

VestaCP configure domain

Access your website URL (e.g classic.example.com) and you should see the default page:

VestaCP default index

You can also enable email configuration by going to the mail section and mouse over the domain you want to add the email support.

Use the following settings:

  • Account – your username
  • Password – Add a unique one and click “Advanced Options
  • Quota – It allows you to set a mailbox size limit. Also, You can press the infinity icon to give it an unlimited storage
  • Aliases – It allows you to add other email addresses that forward to that main account, you don’t need this in most cases. The only case you might need one is when you
    have an email account on another service, and you want to keep your emails on that service
  • Forward To – If you want to forward mails to other email services, you would want to check “Do not store forwarded mail” to save server resources.

Send login credentials to the email address – Send login credentials to an available email of yours and click Add.

Step 5. Option 1. Installing ClassicPress via Softaculous

Softaculous is included in VestaCP and installed by default. It is useful for installing scripts among others are ClassicPress, Presta, Joomla, Abantecart, and WordPress.

However, ClassicPress isn’t available in the free version of Softaculous. You can either use the Softaculous one-month free trial to one-time install ClassicPress or download it manually as shown in the option 2. below.

Visit Softaculous Free Premium for the free trial, enter your cloud server public IP and click the Issue License button:

VestaCP Softaculous trial

This might take a few minutes to process. If you want to speed it up, go to VestaCP App section and click the Admin Panel for Softaculous at /softaculous/index.php?ap=1& on your Vesta Control Panel domain.

https://vestacp.example.com:8083/softaculous/index.php?ap=1&

Then on the Softaculous Admin Home page, click the link to Refresh the License under the Software Info section and your free premium trial should activate.

VestaCP Softaculous refresh license

Once you are done, head back to Softaculous app section, and search for ClassicPress, then click the app name under the search field as it comes up.

VestaCP Softaculous apps

You should see the ClassicPress Installation Page, hover over the Install and choose Custom Install:

VestaCP Softaculous install ClassicPress

Use the following setting to complete the installation:

  • Software Setup — Your protocol should either be https// or https//www, select your domain name, and make sure the “In Directory” is blank
  • Site Settings — Add the website name and your preferred description
  • Admin Account — You need this to access your admin panel; input user, pass and email of the account
  • Enter your email in the Email installation details, and Install
VestaCP Softaculous install ClassicPress

The Installation will take a few seconds and once done, you should be given the following details:

VestaCP Softaculous ClassicPress installed

Access the admin dashboard e.g https://classic.example.com/wp-admin, and that’s it about installing via Softaculous.

Step 5. Option 2. Installing ClassicPress manually

Fire up your console and Change to your website’s public directory:

cd /home/admin/web/classic.example.com/public_html

Download a copy of the latest ClassicPress file:

sudo wget https://github.com/ClassicPress/ClassicPress-release/archive/1.1.2.zip

Unzip the downloaded zip file:

sudo unzip 1.1.2.zip

Clean up the zip file:

sudo rm 1.1.2.zip

Issue a recursive copy to /home/admin/web/classic.example.com/public_html, while replacing the example domain with your own.

sudo cp -r ClassicPress-release-1.1.2/* /home/admin/web/classic.example.com/public_html

You can delete the ClassicPress archive directory if you want:

sudo rm -r ClassicPress-release-1.1.2

The next step is to create a MySQL database for ClassicPress:

VestaCP add database

Now, create your database, this is what we would be using in the wp-config file:

VestaCP add database

The next step is to edit the wp-config file, but first, let’s rename it first:

mv wp-config-sample.php wp-config.php

Open wp-config.php and replace:

sudo nano wp-config.php

Note: You can also use FTP to edit the config settings

  • DB_NAME – The name of the database you created In VestaCP Database
  • DB_USER – The username of the database you created In VestaCP Database
  • DB_PASSWORD – The password of the database you created In VestaCP Database

If you are using the nano editor, you can use CTRL + X to save by entering Y to confirm your action.

Note: You can also connect to your FTP server to make the changes.

The next step is to generate a salt and keys for better website security.

Run the following command to generate salts for your wp-config.php:

curl -s https://api-v1.classicpress.net/secret-key/1.0/salt/

Alternatively, if you don’t want to rely on a remote service to generate the keys for you, you can run this one-line command:

python -c "import random; import string; r = random.SystemRandom(); print(chr(10).join('define( {q}{0}{q}{1}, {q}{2}{q} );'.format(key,' '*(16-len(key)),''.join(r.choice(string.ascii_letters+string.digits)for _ in range(64)),q=chr(39))for key in 'AUTH_KEY SECURE_AUTH_KEY LOGGED_IN_KEY NONCE_KEY AUTH_SALT SECURE_AUTH_SALT LOGGED_IN_SALT NONCE_SALT'.split(' ')))"

You should get something similar:

define('AUTH_KEY',         '*;xmjy!C&XL|-vl|bq,2!YffCev@ tdl(]6<qfMz0VrIGw}/F-0b^U[ludO|UWYB'); 
define('SECURE_AUTH_KEY',  'z{%35CIgE*RMT1O?W>*C;_xi8]c.[~]Nuv#N;=v}}/,>e[jRPa=jyDiVEgInTS/D');
define('LOGGED_IN_KEY',    'Ye>D MKmYavj-;i7P2/Wv3Okj_79K$|rQgF}j^{^F,{y=U80<p-!,8P)S5H5i>ih');
define('NONCE_KEY',        'lLgedy>SCA2V6-x|ozF4q*HW/sI6QvthDIl[c&t+v-FDHZA-+J%c,#miK|Wg@,|/');
define('AUTH_SALT',        '55lvI7Zw7l[q$%n=5`mE]b]Tt]ka`vG&N*#`&qbjO+~YunMv``=oQBeb9VK}{f=S');
define('SECURE_AUTH_SALT', '%JTKXx+U)|v 6)X/e1{HjLGdnsz,]:>oi4Qaj7C+,)UX7<Yy-=zQp`~r%-`3(/#l');
define('LOGGED_IN_SALT',   'a?@S:~KsarWWihO-|uoxCLwqaeW@ BEBs0*496FNrW71*787ADoNN4C}6XWN0jPJ');
define('NONCE_SALT',       '}2Qt1+H;E4`AJCx4h?2.ST@$ir*Ad_j^g.Y9B[o2p$|1j=l>z>BZOUGVRj}eK;=d');

Replace corresponding lines in your wp-config.php:

sudo nano wp-config.php

If you are using the nano editor, make sure you save by using CTRL + X and confirm by pressing Y.

Afterwards, open the /wp-admin/install.php at your ClassicPress site, e.g. https://classic.example.com/wp-admin/install.php to complete the installation:

ClassicPress admin setup

Once the installation is complete, log in and you have successfully created a ClassicPress website.

Optional 1: Creating a new SSH key for the new user (Recommended)

SSH is more secure than using a password to log in to your server.

SSH helps to communicate remotely with another computer, and it ensures the exchange of data is encrypted.

Learn how to use SSH keys authentication

Optional 2: Change VestaCP’s default login port for stronger server security (Recommended)

As you probably know by now that VestaCP uses 8083 as the default port for its login control panel, which could be an open can of worms for bots/intruders.

To mitigate this, we would change and block VestaCP’s default port.

Login to your Vesta panel and navigate to the Firewall section and click the Add Rule:

VestaCP add firewall rule

Then configure the following settings:

  • Action – Accept
  • Change the port (I’ll be using 4950, use whatever soothes you),
  • Protocol – TCP
  • IP address – 0.0.0.0/0

Then click Add, to add the new port to your Firewall.

VestaCP add firewall rule Vesta

The next thing is editing Vesta Nginx config to listen to the new port.

Login to your server with a non-root user account that has sudo privileges, then run the following command:

Replace the default port with the one you added (I am using 4950):

sudo sed -i 's/8083;/4950;/' /usr/local/vesta/nginx/conf/nginx.conf

Alternatively, you could open the config file in a text editor:

sudo nano /usr/local/vesta/nginx/conf/nginx.conf

and you then find and replace 8083.

Restart Vesta Service:

sudo service vesta restart

Now, you can log in to your panel using the new port, e.g. https://vestacp.example.com:4950/

Remove the old port by hovering over the rule for port 8083 and clicking Delete:

VestaCP delete firewall rule

And that’s it about creating a new port.

Installing security updates

To begin installing security updates, the first thing is to update your repository index, which would instruct the server to check all lists of packages that are new or outdated.

Run the following command to update your repo:

sudo apt update

Once, you’ve done that, you will need to upgrade them if any new packages are available.

You can either run

sudo apt upgrade

or

sudo apt dist-upgrade

The difference here is that the apt upgrade will automatically install an update without removing any packages while the apt dist-upgrade will update new packages, install new packages as a dependency of the upgraded packages and remove packages that are broken by upgraded packages.

Troubleshooting the most common installation problems

Getting an Error connecting to the database

The error establishing a database connection error simply means that ClassicPress was unable to connect to your MySQL database which is likely due to incorrect database information.

To fix this, Open the wp-config file again just like we did before and carefully reenter the database login information.

Being asked for FTP credentials:

ClassicPress would prompt you for FTP credentials if it does not have the proper file permission.

To fix this, run the following command:

sudo chown -R admin:admin /home/admin/web/yourdomainname.com/public_html

That should fix it.

The INFO.XML file could not be found

If you get an error on Softaculous reporting the INFO.XML file missing, log into your cloud server with the root account and run the following command to update and download the required scripts:

sudo /usr/local/vesta/php/bin/php /usr/local/vesta/softaculous/cron.php

You may get a message about other missing files but the INFO.XML file should get added as required.

Ahmed Faruq

  1. VestaCP recently had a Zero-Day vulnerability, it has been fixed but hasn’t been pushed to apt and rpm repo, while we wait for that, this is the temporary fix by dpeca:

    Updating VestaCP on Debian/Ubuntu from official GitHub repo:
    sudo su –
    apt install -y git
    cd /root
    rm -rf /root/vesta
    git clone https://github.com/serghey-rodin/vesta.git
    cp -rf /root/vesta/* /usr/local/vesta

  2. Janne Ruostemaa

    Hi Ahmed, thanks for the update. Zero-day vulnerabilities are certainly unfortunate and having the ability to install from the source is always beneficial.

  3. I can’t access to Vesta CP. This site can’t be reached.I’m using upcluoud server with install Ubuntu18 . I received ip address https://52.xx.xxx.xxx:8083/ . and account information when I enter into admin login page Vesta CP. it show This site can’t be reached
    why i can’t access Vesta CP following https://52.xx.xxx.xxx:8083/ .
    why it is showing that This site can’t be reached.

    Please help me

  4. Janne Ruostemaa

    Hi there, thanks for the question. While the Vesta CP admin panel should be reachable if the installation was successful, I would suggest double-checking your cloud server’s IP address as I don’t believe we currently have IP addresses in the 52.0.0.0/ range.

  5. I’m using VestaCP to host 6 WordPress websites. Although I haven’t done any lab benchmarks, I’ve noticed that after enabling opcache in the php configuration files my cpu load dropped alot.

    I still havent figured out how to upgrade to PHP7? I’m running ubuntu 18.04

  6. Janne Ruostemaa

    Hi there, thanks for the comment. There is a helpful guide to upgrading PHP on VestaCP’s forum, although intended for Debian it’ll work much the same for Ubuntu. Remember to disable the old PHP version and enable the new for the install to take effect.

  7. Additionally, the HTTPS protocol issue for the VestaCP control panel can be resolved by assigning to panel the security certificate that has been installed on an existing domain. This in web interface: Server – Configure – Vesta SSL. So you can enter the respective port with secure protocol.

Leave a Reply to Ahmed Faruq

Your email address will not be published. Required fields are marked *

Back to top