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.
Prerequisites
- 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.
- Sign up for an account.
- Create your Droplet.
- Select Ubuntu 16.04. Note: Higher versions will not work as of 2017.
- Choose your hosting Plan. The $5 droplet is sufficient for testing and a website.
- This is optional, advanced options.
- Select the datacenter nearest your deployment of your target audience or you.
- These are optional. For this example, IPV6 has been enabled (makes it easier for future configuration)
- This is optional, however it can be setup later. This is highly recommended for security reasons.
- Add your domain. For this example, I will use example.com as a domain.
- While your droplet is being made, go to More>Add A Domain.
- Enter your domains name.
- This will auto-create your domains DNS zones.
- Create a subdomain A record that points to your droplet. This can be named whatever your heart wants.
- Now there should be four entires.
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”]
ns1.digitalocean.com
ns2.digitalocean.com
ns3.digitalocean.com [/code]
for more information, this guide from TutsPlus will help you understand everything there might be about your domain settings. https://code.tutsplus.com/tutorials/an-introduction-to-learning-and-using-dns-records–cms-24704

Step 3 | Test your Domain Setup
Open terminal or your command prompt.
In Terminal, Ping your domain
[code language=”bash”] ping domain.com [/code]

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:

CTR + C
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 sub.domain.com[/code]
Wait a few seconds, view results, then stop the ping with this command.
CTR + C
Step 4 | Check E-mail

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]

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)
[/code]

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

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.

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 ‘domain.com.’ 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]

Diagnoses: In this case, the FQDN is setup correctly. The hostname should be ‘domain.com’ and it is ‘domain.com’
Step 3 | Verifying your HostName’s FQDN-HostName (Optional)
Check your servers FQDN-Hostname.
[code language=”bash”]hostname -d[/code]

Pre-Diagnoses: The Servers FQDN-Hostname should be ‘sub.domain.com’. 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: example.com
- FQDN-Hostname: cloud.example.com
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, ‘cloud.domain.com’ 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 ‘cloud.domain.com’[/code]

In Terminal, apply these changes.
[code language=”bash”]hostname -F /etc/hostname[/code]

Step 2 | dhcpcp
Next you’ll want to pre-diagnose if your system has a dhcpcp file.
[code language=”bash”]ls /etc/default[/code]

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]

Scroll down, after the ‘127.0.0.1 local host’ or ‘127.0.1.1 ubuntu’, type in the IPv4 address of the virtual server address, then your FQDN-hostname. As mentioned above, the FQDN-hostname is typically ‘sub.domain.com. In this tutorial, ‘cloud.domain.com’ will be used. After this this is done, you’ll want to save and exit the file.
In terminal, add the following line after 127.0.0.1 or 127.0.1.1
[code language=”bash”]138.68.46.43 cloud.domain.com[/code]
Make sure the IPV4 is your address. And the domain/sub.domain.com is your 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]

Next you will be greeted with the GUI interface. Follow this slide-show to view how to configure these settings, if need be.
- Select ‘Ok’
- Select your Geographic Area. Then scroll down and select ‘oK’
- Select your region. Then scroll down to ‘Ok’
In Summery
Now your time zone should be configured. The results will be displayed after you exit the GUI interface.

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: https://www.fail2ban.org/wiki/index.php/Main_Page
Step 1 | Adding Fail2Ban
In Terminal, enter
[code language=”bash”]apt-get install fail2ban[/code]

In Terminal, enter
[code language=”bash”]y[/code]

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]

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

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]

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]

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.

Step 2 | Check the Domains (Again)
Type in the following commands:
[code language=”bash”]
hostname -d
hostname -f
[/code]

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 http://software.virtualmin.com/gpl/scripts/install.sh -O /root/virtualmin-install.sh [/code]

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:

You should expect to see something similar to this:
2013-07-06 11:03:57 (129 KB/s) - `/root/virtualmin-install.sh' saved [45392/45392]
Step 2 | Install VirtualMin
To install, you will run a script, already preconfigured.
In Terminal, enter
[code language=”bash”]sh /root/virtualmin-install.sh[/code]

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]

If your domain was not setup correctly, you will need to change your domain FQHN.
If prompted…
In Terminal, enter
[code language=”bash”]cloud.domain.com[/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.

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…










actionscript3
USERFUL for IPV6
use your
[code language=”actionscript3″]This is code for: [/code]
bash
[code language=”bash”]This is code for: [/code]
clojure
[code language=”clojure”]This is code for: [/code]
coldfusion
[code language=”coldfusion”]This is code for: [/code]
cpp
[code language=”cpp”]This is code for: [/code]
csharp
[code language=”csharp”]This is code for: [/code]
css
[code language=”css”]This is code for: [/code]
delphi
[code language=”delphi”]This is code for: [/code]
diff
[code language=”diff”]This is code for: [/code]
erlang
[code language=”erlang”]This is code for: [/code]
fsharp
[code language=”fsharp”]This is code for: [/code]
go
[code language=”go”]This is code for: [/code]
groovy
[code language=”groovy”]This is code for: [/code]
html
[code language=”html”]This is code for: [/code]
java
[code language=”java”]This is code for: [/code]
javafx
[code language=”javafx”]This is code for: [/code]
javascript
[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]
objc
[code language=”objc”]This is code for: [/code]
perl
[code language=”perl”]This is code for: [/code]
php
[code language=”php”]This is code for: [/code]
powershell
[code language=”powershell”]This is code for: [/code]
python
[code language=”python”]This is code for: [/code]
r
[code language=”r”]This is code for: [/code]
ruby
[code language=”ruby”]This is code for: [/code]
scala
[code language=”scala”]This is code for: [/code]
sql
[code language=”sql”]This is code for: [/code]
text
[code language=”text”]This is code for: [/code]
vb
[code language=”vb”]This is code for: [/code]
xml
[code language=”xml”]This is code for: [/code]