This quick tutorial is for intermediate IT Admin or fullstack developper. To follow the instruction, you need to know how use the shell, have root access and a minimum of knowledge about servers, mysql and hosting... or be adventurous. Not joking, today you can setup quickly a free instance on Amazon or Google Cloud and yes, try, create and terminate instance for 0 cost (use tier free option). You just need time and to be ready to fail and to learn.

Anyway, what you don’t want to do is to play on live data without backup or without knowing what to do.
Don’t risk catastrophe, you can always ask me to do it for you or search in the Tiki Consultants list if you need professional job done by... Specialist.

I installed twice using 2 different method and server setup.
Once I used an AWS EC2 instance from Amazon and the second time I setup a bare Linux server from scratch.

Server preparation

Install on AWS EC2 Instance

Log into your AWS Console, and follow the install process for your EC2 instance. Select a community AMI for your Linux distribution (Debian 10 in my case). Set security group and open port 80, 443, 22 and 10000. There is plenty of help page.

Install on bare bone server

  1. Download your Linux Debian distro and follow the instruction to create a bootable volume at : https://www.debian.org/CD/http-ftp/ (This is a cd/network install I choose to avoid changing my server bios setup but there are also disk on key install, etc). You need to connect your server to the internet to update and complete properly this installation.
  2. Boot the server on the volume just created and select the installer. I used the live one but there is also a graphical install providing a more user-friendly experience.
  3. Set language, keyboard (suggested to keep all in English/US) and your location.
  4. Configure hostname and domain (you can change them later on, see below)
  5. Create root and first user account.
  6. Partition disk (Guided – use entire disk is the easiest choice), follow the guide there is recommendations for new users). At the end of the process write the changes to the disk to validate.
  7. Select a mirror, at some point you'll be asked to connect to a Debian mirror online selecting one close to your server location.
  8. Select your package, I selected the minium: web server, SSH server, Standard system utilities
  9. Install GRUB boot loader (follow the 2 screen recommendation and default selection)

Remove your Debian install volume (CD or USB disk) and reboot
You should be able to login using you newly created user (and to switch to root if needed: su)

Set the root password (EC2)

Not everybody will need this but as I used an AWS AMI Debian10 package I needed it so it may be useful for others in similar case. (default ssh user is admin)

sudo -i passwd

Check your hostname

For Webmin to work properly, you need to configure the hostname and FQDN on the server itself by editing the /etc/hostname and /etc/hosts files.

hostname -f

It should display your hostname mostly your domain name like "mydomain" (without http or .com)
(by default Amazon set the internal IP instance address and later on Virtualmin won’t like it)

You can change this and set it for your host name (just the name without http or .com)

sudo nano /etc/hostname


You need to check add your host here too:

sudo nano /etc/hosts

Insert a new line with

127.0.1.1   your_hostname.your_domain.com your_hostname

Reboot and recheck (sudo reboot)

Update your Debian server

Log onto your server and first update/upgrade it with the following commands:

sudo apt update
sudo apt upgrade

Install mariaDB

sudo apt install mariadb-server
sudo mysql_secure_installation
sudo systemctl status mariadb

Install Webmin and Virtualmin

Download Virtualmin using the below script. It is basically a shell script that will handle rest of the installation once executed.
Then run it

wget https://software.virtualmin.com/gpl/scripts/install.sh
sudo /bin/sh ./install.sh


You have now to set your Webmin password (don’t use the letter & ?).

sudo /usr/share/webmin/changepass.pl /etc/webmin root yourpassword

Restart webmin.

sudo systemctl restart webmin


You will now have access to your control panel if the port 10000 is open else, you may need to open the port it on the server. Because by default the Virtualmin will listen to the port Virtualmin. You only have to open this port if all the incoming requests on your server are blocked by default. (this is done using the security group on AWS)

Use https://your_server_domain:10000 (you can use your server IP too)
Once you are in , follow Virtualmin Post installation wizard.
It is pretty straightforward and everything is done to guide you.

Virtualmin Install

Additional stuff

Install several versions of PHP

Debian 10 come by default with 7.0 and installing MariaDB will add PHP7.4. As I wanted to keep PHP7.2 for a Tiki 21 I added it.

I enabled the sury.org repository and update the package list:

apt install apt-transport-https lsb-release ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
apt update

From here you can install any PHP package (change version number for what you need) and it will be accessible for your PHP version configuration in Virtualmin

sudo apt-get install php7.2 php7.2-cgi php7.2-cli php7.2-fpm php7.2-mysql

 Your Linux distro may require some tweaks
I used a bare bone Debian10 from Amazon and have really the minimum Linux packages installed. I had to add extensions so it ended like this for me to be able to complete the Tiki install (below):

sudo apt-get install php7.2 php7.2-cgi php7.2-cli php7.2-fpm php7.2-mysql php7.2-xml php7.2-gd php7.2-intl php7.2-xsl php7.2-curl php7.2-zip php7.2-mbstring

On another server installed from scratch (not using AWS debian 10 AMI), after applying the above, I had to delete manually files starting with "ondrej-" at /etc/apt/sources.list.d to be able to install any php version


Once I completed the installation of the second PHP I recheck the Virtualmin configuration it by logging into Virtualmin, and clicking System Settings -> Re-Check Config

You can configure which one is the default PHP version used on new Virtual Servers. The default is to use the newest available. You can change that default in System Settings -> Server Templates -> Default -> PHP Options. To set your host or domain PHP version go to Virtualmin -> Server configuration -> PHP version and on that screen you can set the PHP version to useversion.

Installing git

Install and check git is running

sudo apt install git
git --version

Installing Tiki

Navigate into your html directory. If you don’t know where it is located on your new server on Virtualmin check the Virtual Server Summary.
There, enter the git clone command. In my case I needed Tiki branch (version) 21.x without previous history (depth=1)

git clone --depth=1 --branch=21.x https://gitlab.com/tikiwiki/tiki.git .


Tada... Follow the regular Tiki install process (setup.sh (see additional notes below), database creation) and you have a Tiki ready to be installed !

Tiki Installed

Additional notes to install composer and the dependencies

The composer installation from setup.sh check and requires some packages and libraries

  • curl must be installed apt install curl
  • The extension ext-gd must be installed for your php version apt-get install php7.4-gd
  • The extension ext-intl must be installed for your php version apt-get install php7.4-intl
    • Also the xls package for your php version apt-get install php7.4-xsl
  • The extension ext-curl must be installed for your php version apt-get install php7.4-curl
  • The extension ext-zip must be installed for your php version apt-get install php7.4-zip
  • The extension ext-bcmath must be installed apt-get install php7.4-bcmath
  • Restart apache2 systemctl restart apache2

Update:

Once I run my first Tiki I wanted to add other Virtualmin virtual server to add another Tiki website.
Once set I found out it point to the first website. Here how I fixed this;

Virtualmin | System Settings | Virtualmin Configuration | Defaults for new domains | Address format for Apache virtual hosts
One can choose:
detect automatically (in my case it was a problem)

Always use IP - this solved my problem:-)