Category Icon


We are working on a range of lab projects which form an important part of our web hosting products. This category includes blog posts about our lab projects.

CatN’s Network Time Protocol Network


Time is important, especially when it comes to computers serving time-sensitive data. There is of course a very well established means of keeping computers in-sync with each other, indeed it’s one of the oldest protocols still in use on the Internet — Network Time Protocol (NTP).

One of the services CatN provides to our customers is a reliable time service. In order to do this we run a network of stratum 2 NTP servers which derive their time from diverse stratum 1 servers either directly on our network or maintained by organisations which we peer directly with, and these in turn are synchronised via a mix of GPS and PPS stratum 0 time sources.

Read More

Racing to launch with ArduSat


A few months ago CatN became the sole platinum sponsor of the ArduSat satellite project on Kickstarter.

ArduSat is an Arduino powered satellite which allows the general public to design and run their own experiments in space. There’s a huge range of sensors and options on the device so part of the fun is seeing what crazy experiments people come up with.

Read More

Working with Virtual Machine images

CatN engineers spend a lot of time working with virtual machine images. We have put together this useful list of commonly used commands and procedures to help you get started on your next project.

For simplicity we assume to work with VM images created using the shell script, as explained on my previous post “Automated CentOS Virtual Machine Image Creation”.

Read More

Add a virtual storage device to a Virtual Machine

Following our previous article about resizing virtual machine images, we now look adding an additional storage device to an existing VM. If instead you wish to extend the existing VM storage volumes, please consult the article “Resize a CentOS Virtual Machine Image“.

For simplicity we assume that the VM image you wish to extend has been created using the shell script, as explained on my previous post “Automated CentOS Virtual Machine Image Creation“.

The file-based virtual storage device acts as a virtualized hard drive for virtualized guests and its creation is quite quite straightforward.

Read More

Resize a CentOS Virtual Machine Image

Following our series of articles about virtual machine images, we now look at a common problem faced by system engineers – what happens when you run out of disk space on your virtual machine? This guide addresses this issue and explains how to expand a CentOS Virtual Machine image, resizing any partitions contained within.

We assume that the VM image to resize has been created using the shell script, as explained on my previous post “Automated CentOS Virtual Machine Image Creation“. This is because the resizing script ( assumes details about storage volumes that rely on the having be used. In any case all the steps are illustrated here so you can adapt the commands to your needs.

The shell script is part of the CentOS-KVM-Image-Tools project that you can clone on your machine using the following command:

git clone git://

Read More

Automated CentOS Virtual Machine Image Creation

This article shows how to create a CentOS Virtual Machine (VM) in unattended mode using a shell script and illustrates the main steps and options to reproduce the process manually.

The following script and commands will create a base image that can be used to deploy multiple nodes from a system like Ansible to define roles for each node. It is very useful for creating clustered virtual environments such as the vCluster stack.

Read More

Access Control – Are you in or out?


As CatN continue on our journey towards ISO 27001 accreditation, part of the information security policy requires that we have an active and enforced security model in place at our office location.

Since introducing an access control system in June 2010, all employees have been required to tap in and out of the office using RFID technology, however the process for keeping track of guests coming in and out of the building has been very much a manual process.

Read More

Create an OpenStack instance with just Curl

For some reason, the idea of direct interaction with the various OpenStack components seemed like a good idea. The aim was to create an instance, set sane security rules, and add a public key all through the API.

I struggled with the documentation. It was a little hard to find, and what I did find seemed a little thin. However with the –debug option on the cli clients, which prints out all of the calls made to the various API endpoints as it goes along, it was game on.

First things first, we need an OpenStack environment to play with. RedHat with their newly released RDO comes to the rescue here. Out of all the one click OpenStack tools I’ve tried, RDO has been the simplest by far. Just three simple steps. Well, if you don’t include step 0 of course: . We also installed a machine image through the dashboard to make life a little easier.

Read More

Building a virtual machine image for CentOS

CentOS Images Featured Header

This post describes the process of creating a CentOS virtual machine image. Creating a base or master image is incredibly useful in a cloud environment as it allows the creation of multiple nodes / VMs or guests based on the original template.

We have an existing CatN Labs project where we are hosting pre-built CentOS golden master images for use when deploying multiple nodes. You can read about the project on the CatN Labs CentOS Images page.

The base image is a static template of software including OS which is mounted when the VM runs and referenced by further clone nodes. To get started on the base template you will need to have some tools installed on your Linux node. Adapt the following commands for your distribution of choice!

Read More

Advanced PHP error handling in the cloud

LogPipe is a PHP extension module that extends the default PHP error messages with additional information and allows you to pipe the logs to an external program or write them to a syslog facility.

When a user connects to a PHP website hosted on a cloud platform like vCluster, the response may come from different web servers running on different virtual and physical machines. This introduced the problem of needing to aggregate the PHP error logs from different cluster nodes and then split them up again based on the virtual host. Unfortunately the default PHP error message handler does not provide the information or ability to pipe the error logs to an external program, unlike the CustomLog directive in Apache does.

Read More