This guide will go over installing WordPress, using VirtualMin on Ubuntu. This is designed to be simple and pictures to guide you along. First off, you will need your own Virtual Server. In this guide, Digital Ocean will be used.

This guide is adapted and based from digitalocean and fullcircuit.


  • Registered Domain Name
  • A (VPN) Virtual Private Host
  • Ubuntu 14.04 (32 or 64 bit)
  • Pre-System Setup
  • Min of 256mb Processor (I recommend at least 1Gb.
  • VNC Access (Terminal (Mac) or Bash) (You can use Droplets Console access, but you’re limited of copy and paste, Ctr + V)

Pre Install Configuration

Step 1 | Create a Droplet

This slideshow will prepare what an ideal droplet looks like.

Step 2 | Edit Domains DNS

Edit your name servers. Here, we point the name servers to digital ocean. Here, I will use google’s domains beta.

I am not advertising, however they do offer great pricing for their domains. You can purchase your domains from any host provider. What is important is that your domains name servers are pointed in the correct location.

[code language=”bash”] [/code]

for more information, this guide from TutsPlus will help you understand everything there might be about your domain settings.–cms-24704

Step 3 | Test your Domain Setup

Open terminal or your command prompt.

In Terminal, Ping your domain

[code language=”bash”] ping [/code]

virtualmin-setup-ubuntu-wordpress - 49
I will use and as an example through-out this tutorial.

After you entered your code to ping your domain, you will see logs. If you do not see these logs, then your domain is not setup correctly.

In Terminal, to stop the ping, with your keys enter:
virtualmin-setup-ubuntu-wordpress - 50


If your console returns with ping data, similar to above, then your domain should be setup correctly. Make sure you also ping your subdomain.

In terminal, now test your subdomain.

[code language=”bash”]ping[/code]

Wait a few seconds, view results, then stop the ping with this command.


Step 4 | Check E-mail

virtualmin-setup-ubuntu-wordpress - 18

Check your email. There should be a new email from Digital Ocean. This takes roughly around 30 seconds to receive. Inside your email is enclosed your server that will be needed.

Step 5 | Start SSH

In terminal, type ssh + default username + your virtual ip number.

[code language=”bash”]ssh [email protected][/code]

You will be prompt if you would like to continue connecting, select yes.

[code language=”bash”]Yes[/code]

virtualmin-setup-ubuntu-wordpress - 20

Step 6 | Password(s)

Next you will be prompt to enter your password again, followed by a new password twice.

[code language=”bash”]

Old_Password #found from your email

Old_Password #found from your email (once more)

New_Password #Create your new password

New_Password #Type in your new password (once more)


virtualmin-setup-ubuntu-wordpress - 23

Now that you are logged in, you will be greeted by Ubuntu’s information. Make sure double check what version you are running.  Currently *(as of April 7th, 2017), VirtualMin’s supported operating systems are:

  • CentOS/RHEL/Scientific Linux 7 on x86_64
  • CentOS and RHEL 5-6 on i386 and x86_64
  • Scientific Linux 6 on i386 and x86_64
  • Debian 6, 7, and 8 on i386 and amd64
  • Ubuntu 12.04 LTS, 14.04, and 16.04 LTS on i386 and amd64
  • FreeBSD 7.0 and 8 on i386 and amd64
virtualmin-setup-ubuntu-wordpress - 54
In this setup, the Ubuntu Version is set correctly. The Version is 16.04.2 running an AMD 64 bit processor.

Network Diagnostics

Configuring Ubuntu for VPS server. This portion will prepare VirtualMin’s installation by editing your servers  timezone,  networking,  hostname,  ip address, etc. You should be able to see this window. The green circled name should be your domain’s name, however if that is not the case we will pre-diagnose to find out why.

virtualmin-setup-ubuntu-wordpress - 24

Step 1 | Pre-Diagnose (Optional)

First, you will want to look at the server’s name. The name is located after the ‘[email protected]’. The example below shows that this virtual server’s name is ‘’ However w will edit this regardless, to ensure that the server is setup correctly. Else, the IPV4/IPV6 address along with your domain will need to be configured manually in VirtualMin. (These steps will prevent frustrating moments later on).

Step 2 | Verifying HostName’s FQDN (Optional)

Check the servers FQDN.

[code language=”bash”] hostname -f [/code]

We are just pre-diagnosing whether the FQDN is setup correctly.

Diagnoses: In this case, the FQDN is setup correctly. The hostname should be ‘’ and it is ‘’

Step 3 | Verifying your HostName’s FQDN-HostName (Optional)

Check your servers FQDN-Hostname.

[code language=”bash”]hostname -d[/code]

virtualmin-setup-ubuntu-wordpress - 26
The server’s FQDN-Hostname is not correct.

Pre-Diagnoses: The Servers FQDN-Hostname should be ‘’. It is not in this case.

In Summary

In this server, the domains are not setup. We will need to edit them (Regardless if they are right or not). They should to this resemble this:

  • FQDN:
  • FQDN-Hostname:

Network Setup

Now that we know where our server network stands, we are able to create a plan to correctly change the network settings. However, if your pre-diagnosis is correct, verify once more. The plan now will be to edit and verity both the FQDN and FQDN-Hostname.

Step 1 | Configure FQDN-Hostname

Edit the FQDN-Hostname. In this example, ‘’ is the FQDN-Host. Typically, subdomains are used for VirtualMin and this is highly recommended. Despite this, the FQDN is also allowed, however you may run into problems later when configuring VirtualMin.

In Terminal, edit your FQDN-Hostname:

[code language=”bash”]hostnamectl set-hostname ‘’[/code]

virtualmin-setup-ubuntu-wordpress - 55
If done correctly, you should see this as a result.
In Terminal, apply these changes.

[code language=”bash”]hostname -F /etc/hostname[/code]

virtualmin-setup-ubuntu-wordpress - 57

Step 2 | dhcpcp

Next you’ll want to pre-diagnose if your system has a dhcpcp file.

[code language=”bash”]ls /etc/default[/code]

virtualmin-setup-ubuntu-wordpress - 28
There is no ‘dhcpcp file’ as mentioned

Diagnoses: No ‘dhcpcp’ file found. Therefore there is nothing else to do here.

Note: In this setup (fresh install), there should be no ‘dhcpcp’ file.  If you do have a dhcpcp file, you will want to edit it to ensure that your network is configured  correctly.

Step 3 | Point IP to Hostname.

Now you will want to point your IP to your hostname. In order to do this, you will need to edit the hosts file. In this tutorial, nano will be used. Nano is a text editor that is preinstalled on your operating system.

In Terminal, use nano to edit your hosts file.

[code language=”bash”]nano /etc/hosts[/code]

virtualmin-setup-ubuntu-wordpress - 29

Scroll down, after the ‘ local host’ or ‘ ubuntu’, type in the IPv4 address of the virtual server address, then your FQDN-hostname. As mentioned above, the FQDN-hostname is typically ‘ In this tutorial, ‘’ will be used. After this this is done, you’ll want to save and exit the file.

In terminal, add the following line after or

[code language=”bash”][/code]

Make sure the IPV4 is your address. And the domain/ is your domain.

virtualmin-setup-ubuntu-wordpress - 58
example of my setup for my domain.

Configure Time Zone

The time zone of your virtual server is most likely incorrect. Changing this will make sure your system has the correct time, from your time zone.

Step 1 | Editing Configuration

In Terminal, enter the following command

[code language=”bash”]dpkg-reconfigure tzdata[/code]

virtualmin-setup-ubuntu-wordpress - 31

Next you will be greeted with the GUI interface. Follow this slide-show to view how to configure these settings, if need be.

In Summery

Now your time zone should be configured. The results will be displayed after you exit the GUI interface.

virtualmin-setup-ubuntu-wordpress - 35
This is a large time different, by 6 hrs.

Fail2Ban (Optional)

This package is optional. However, it is useful for scans files and banning IP’s who have attempted to login too many times. Read more here:

Step 1 | Adding  Fail2Ban

In Terminal, enter

[code language=”bash”]apt-get install fail2ban[/code]

virtualmin-setup-ubuntu-wordpress - 41

In Terminal, enter

[code language=”bash”]y[/code]

virtualmin-setup-ubuntu-wordpress - 42
type ‘y’ for yes and enter.

Installing Updates

Updating your system will help preventing errors, after installing VirtualMin. To update, we will use a command that has enabled permissions, combined with all of the necessary updates and cleaning of packages that are not needed. This command will update, upgrade, auto remove, auto clean, all in one simple, single sudo command. 

Step 1 | Combo Command

In Terminal, enter

[code language=”bash”]sudo sh -c “apt-get -y update;apt-get -y dist-upgrade;apt-get -y autoremove;apt-get -y autoclean; apt-get -y clean; apt-get -y check”[/code]

virtualmin-setup-ubuntu-wordpress - 39

In Summary

After updating your, terminal should look like this. The last line will end with a # symbol.

virtualmin-setup-ubuntu-wordpress - 40

Step 2 | Reboot

Now that your system is up to date, you will want to reboot. This will refresh all of the changes you have made to your system.

In Terminal, enter

[code language=”bash”]reboot[/code]

virtualmin-setup-ubuntu-wordpress - 36

Step 3 | SSH Again

In terminal, most likely after rebooting, the session should have been terminated. Now you will want to login again. Wait a few seconds before attempting to login in, this may take up to 30 seconds. After, you will be able to login now with your domain name.

In Terminal, enter

[code language=”bash”]ssh [email protected] [/code]

virtualmin-setup-ubuntu-wordpress - 37
At this point, I will share a secret with you. By now you are scratching your head and most likely saying  ‘wait, but you are using this IP again for the login? Yes that is true. Furthermore,  the truth of the matter is simple. ‘’ is a factious domain not owned by me. This domain was used to not confuse you during the main installation. (Now that this is off my chest, please don’t mind random naming of terminal hostname and the next’s that will be used.)

Post Configuration

Now we will check that our configuration is successful.

Step 1 | After SSH

We will look at the beginning files. Take a look at the logs. Here, all packages and updates are up to date. Time is also up to date. The version is still correct.

virtualmin-setup-ubuntu-wordpress - 53

Step 2 | Check the Domains (Again)

Type in the following commands:

[code language=”bash”]
hostname -d
hostname -f

virtualmin-setup-ubuntu-wordpress-retouched - 1 (1)
Viola! Everything looks good.

VirtualMin Installation

As mentioned before, doing the 'pre-installation' will result in non-pulling hear conflicts, one may experience. Now that everything is up to date, all necessary 'plugins' and respiratories
are installed and the network is configured... it is safe to install VirtualMin.

Step 1 | Dowland the Software

Download VirtualMin. This install script is provided by VirtualMin. This installs directly to your ‘/root/’ directory.

In Terminal, enter:

[code language=”bash”] wget -O /root/ [/code]

virtualmin-setup-ubuntu-wordpress-retouched - 1 (2)

You will be prompt if you have the support operating system.

In Terminal, enter

[code language=”bash”]y[/code]

This shouldn’t take too long. After complete, you should expect to see something like this:

virtualmin-setup-ubuntu-wordpress - 43

You should expect to see something similar to this:

2013-07-06 11:03:57 (129 KB/s) - `/root/' saved [45392/45392]

Step 2 | Install VirtualMin

To install, you will run a script, already preconfigured.

In Terminal, enter

[code language=”bash”]sh /root/[/code]

virtualmin-setup-ubuntu-wordpress - 44

A prompt will appear, asking if you would like to install appears, asking if your OS is qualified. Type Y for Yes.

In Terminal, enter

[code language=”bash”]y[/code]

virtualmin-setup-ubuntu-wordpress - 45
If your domain was not setup correctly, you will need to change your domain FQHN. 

If prompted… 

In Terminal, enter

[code language=”bash”][/code]

Step 3 | Coffee Time

Now is the time to go for a 15 min walk or get some coffee. Feed your cats or whatever you little desire.

virtualmin-setup-ubuntu-wordpress - 47

Step 4 | Reboot

After installation, reboot to assure configuration is setup correctly.

Congrats, you have installed VirtualMin. However you are not out of the woods, just yet. There are some essential configuration that needs to take place.  

The rest is still in process… STAY TUNED…

virtualmin-setup-ubuntu-wordpress - 64
virtualmin-setup-ubuntu-wordpress - 63
virtualmin-setup-ubuntu-wordpress - 62
virtualmin-setup-ubuntu-wordpress - 61
virtualmin-setup-ubuntu-wordpress - 60
virtualmin-setup-ubuntu-wordpress - 59
virtualmin-setup-ubuntu-wordpress - 68
virtualmin-setup-ubuntu-wordpress - 67
virtualmin-setup-ubuntu-wordpress - 66
virtualmin-setup-ubuntu-wordpress - 65



use your

[code language=”actionscript3″]This is code for: [/code]


[code language=”bash”]This is code for: [/code]


[code language=”clojure”]This is code for: [/code]


[code language=”coldfusion”]This is code for: [/code]


[code language=”cpp”]This is code for: [/code]


[code language=”csharp”]This is code for: [/code]


[code language=”css”]This is code for: [/code]


[code language=”delphi”]This is code for: [/code]


[code language=”diff”]This is code for: [/code]


[code language=”erlang”]This is code for: [/code]


[code language=”fsharp”]This is code for: [/code]


[code language=”go”]This is code for: [/code]


[code language=”groovy”]This is code for: [/code]


[code language=”html”]This is code for: [/code]


[code language=”java”]This is code for: [/code]


[code language=”javafx”]This is code for: [/code]


[code language=”javascript”]This is code for: [/code]

latex (you can also render LaTeX)

[code language=”latex (you can also render LaTeX)”]This is code for: [/code]

matlab (keywords only)

[code language=”matlab (keywords only)”]This is code for: [/code]


[code language=”objc”]This is code for: [/code]


[code language=”perl”]This is code for: [/code]


[code language=”php”]This is code for: [/code]


[code language=”powershell”]This is code for: [/code]


[code language=”python”]This is code for: [/code]


[code language=”r”]This is code for: [/code]


[code language=”ruby”]This is code for: [/code]


[code language=”scala”]This is code for: [/code]


[code language=”sql”]This is code for: [/code]


[code language=”text”]This is code for: [/code]


[code language=”vb”]This is code for: [/code]


[code language=”xml”]This is code for: [/code]

There are currently no comments.