Installing Zabbix 3.0 on Ubuntu 16.04

Firstly, download Ubuntu Server 16.04 from the Ubuntu website – You’ll need to get this installed yourself, there’s thousands of guides on the internet if you’re struggling.

Once your server is accessible, i’d recommend that you SSH to it, although you could perform this though a console.

Firstly, update the APT repositories to ensure everything’s up to date

apt-get update

And update any out of date packages. Review the packages that require updating, and then then type ‘yes’ on your keyboard when prompted if happy.

apt-get upgrade

Next, we’ll install some packages that are required for zabbix server

apt-get -y install build-essential mysql-server mysql-client libmysqlclient-dev libcurl4-openssl-dev libxml2-dev libopenipmi-dev libssl-dev libsnmp-dev libssh2-1-dev

You’ll be prompted to create a password for the MySQL root user – please make a password and remember it!

These should all install without any errors, if you’re having problems please leave a comment and I’ll try to help

Now we’ll download the Zabbix source and extract it

cd /usr/src
tar xzfv zabbix-3.0.3.tar.gz

Now we start getting to the fun part, actually configuring and compiling Zabbix. I’ve configured it with everything but ssh and jabber, you may remove parts such as –with-openipmi if you’re not wishing to use IPMI monitoring.

cd zabbix-3.0.*
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-openssl --prefix=/usr/local

This should only take a few moments, and you’ll be presented with the final configuration – check over this to ensure it has everything you need and then we can start compiling.

make install

This only took a minute or so on my small virtual machine I tested with, but could be slightly slower or faster depending on the specification of the server.

Now, we’ll make the MySQL accounts that Zabbix will need. Let’s start by getting to the MySQL console

mysql -u root -p

This will prompt for the MySQL root password that we set earlier. Now we’ll run the SQL to create the Zabbix user and database and assign that user privileges to access that database. Please change PASSWORD to your own password, this can be something completely random as you’ll only need it once to configure Zabbix.

create user 'zabbix'@'localhost' identified by 'PASSWORD';
create database zabbix;
grant all privileges on `zabbix`.* to 'zabbix'@'localhost';
flush privileges;

After each line, you should get returned something like ‘Query OK, 0 rows affected (0.00 sec)’ or ‘Query OK, 1 row affected (0.00 sec)’ printed to the screen.

Now we’ll import the Zabbix schema.

cd database/mysql
mysql -u root -p zabbix < schema.sql
mysql -u root -p zabbix < images.sql
mysql -u root -p zabbix < data.sql

You’ll be prompted to enter the MySQL root password 3 times here. If everything is OK there will be no other messages printed.

Now we’ll configure the MySQL password in the zabbix-server configuration file. Open /usr/local/etc/zabbix_server.conf in your text editor.

At around line 111, you’ll see the line

# DBPassword=

remove the # from the front and paste the Zabbix MySQL user password on the end. It should now look like this


Save and quit the file.

Now we’ll add a user for Zabbix to run as. We’ll configure scripts to control the zabbix server daemon.

Create the file /etc/systemd/system/

Paste the following contents into the file and save and quit

Description=Zabbix Server mysqld.service

ExecStart=/usr/local/sbin/zabbix_server -c /usr/local/etc/zabbix_server.conf
ExecReload=/usr/local/sbin/zabbix_server -R config_cache_reload


Now we need to add the user on the system for Zabbix to run as

useradd -M zabbix

Now we’ll reload systemd and start the zabbix-server service

systemctl daemon-reload
systemctl start zabbix-server.service

That completes the configuration needed for zabbix-server, we’ll move onto the Web interface now.

Firstly, install NGINX, PHP and various PHP modules that we’ll need to run the web interface.

apt-get -y install nginx php php-bcmath php-mbstring php-gd php-xmlwriter php-xmlreader php-mysqli

Now we’ll need to make a directory for the files to be served from and copy the front end files to it.

mkdir /usr/local/www
cd ../../frontends/php/
cp -r * /usr/local/www/
chown -R www-data:www-data /usr/local/www/*

Now we’ll configure the web server. Open /etc/nginx/sites-enabled/default in your favorite text editor. Delete all the existing contents and replace them to look like this:

server {
listen 80 default_server;
listen [::]:80 default_server;

root /usr/local/www;

index index.php;

server_name _;

location / {
try_files $uri $uri/ =404;

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;

Now save this file. Next we’ll be changing some options in the PHP config. Open /etc/php/7.0/fpm/php.ini with your text editor.

Around line 368 you will see

max_execution_time = 30

This needs to be changed to

max_execution_time = 300

Around line 378 you will see

max_input_time = 60

This needs to be changed to

max_input_time = 300

Around line 656 you will see

post_max_size = 8M

This needs to be changed to

post_max_size = 16M

Around line 912 you will see

;date.timezone =

This needs to be changed like this

date.timezone = Europe/London

See a list of possible timezones here.

Save and exit the file, and restart NGINX and PHP FPM.

Now, go to your server’s address in your web browser, you should see a screen like this

Screen Shot 2016-06-19 at 07.58.28

Click the ‘Next Step’ button and you will be presented with a ‘Check of pre-requisites’ page. Scrolling down the list these should all have ‘OK’ next to them.

On the next page, you’ll just need to enter the password for the zabbix user in MySQL.

Screen Shot 2016-06-19 at 08.01.12

If everything is Ok, the next page will look like this. You can optionally give your server a name.

Screen Shot 2016-06-19 at 08.02.30

On the next page you’ll be presented with an installation summary like the below

Screen Shot 2016-06-19 at 08.03.07

On the next page, you’ll get a ‘Congratulations’ page like this

Screen Shot 2016-06-19 at 08.03.44

You’ve now successfully installed Zabbix and it’s web interface! Clicking finish will take you to the login page, the default user is admin and the password is zabbix.

You should see on the dashboard that the Zabbix server is running. This means all is OK – you can now start configuring Zabbix.

If you have any problems or questions, please leave a comment below.

Receive incoming calls from Twilio with Asterisk

Twilio is a great service which is aimed at developers who want to integrate phone calls and text messaging into their application with ease.

It can also be used to create phone systems, with which you can control and route calls dynamically using XML files (known as TwiML).

If you want to terminate your calls to IP Phones, Twilio can direct calls to SIP. In order for this to work, you’ll need Asterisk or some asterisk-based distribution.

Twilio have many gateways which calls may originate from, 7 of them are currently in use, 16 of them are not. Sadly means that we need to create 7 peers (minimum) in order to receive calls from all gateways, however asterisk makes it simpler.

The following code needs to be entered into your sip.conf, please set the secret to something of your own choice.

I have added the IPs for the gateways that are not yet in use – whilst this isn’t needed, it’s recommended.


; north american gateways - currently the only ones in use
host =
host =
host =
host =
host =
host =
host =

; south american gateways - not currently used but added for future use
host =
host =
host =
host =

; european gateways - not currently used but added for future use
host =
host =
host = 5176.34.236.224
host =

; asian gateways - not currently used but added for future use
host =
host =
host =
host =
host =
host =
host =
host =

Now, you need to enter some lines into your extensions.conf in order to tell the incoming calls where to go.

I have used the context incoming, but you can use whatever you want but remember to change all references to it.

exten => 441234567890,1,Dial(SCCP/100)
same => n,Hangup

You will see I have used ‘441234567890’ as the extension, this can be anything but using the actual number is useful.

I have my calls going to a Cisco IP Phone that uses the Skinny Protocol, however, if you were using SIP you could use Dial(SIP/100).

If you have multiple numbers that you want to be terminated to SIP but want them to be dealt with differently in asterisk make sure you use different extensions.

Now for the TwiML to connect calls.

<?xml version="1.0" encoding="UTF-8"?>
<Sip username="twilio" password="xxxxxxx">sip:441234567890@</Sip>

Make sure the username and password are the same as what you have set in sip.conf, and you’ll need to change the SIP URI to include your extension and IP address.

You should now be able to receive incoming calls to asterisk from Twilio.

Please leave a comment if you are having any problems and I’ll try my best to assist.

EUMETCast working on Linux

So, after quite a bit of faffing around with configuration files, drivers and kernels I finally managed to get the EUMETCast Multicast client working under Ubuntu 8.04 LTS.

All seems to be working well at the moment but I’m sure something will arise with time.

Eventually, I’ll have to work out what I did to get it all working and write a little guide to help others.

Last year, I was speaking to Francis Bell about the setup on which we run our system on, as not only were we running it all on one machine, but running it along side 7 other guest operating systems on high end consumer hardware. I’ll be writing an article on this subject, including our hardware specs and some benchmark tests.

Icom ID-E880 (D-Star)

As many people will know, I am a Radio Amateur (and for any of you interested my call sign is M3SUJ).

Today I purchased a Icom ID-E880 from Lam Communications in Barnsley. This is the first D-Star radio that I have, and now I am also wanting to buy a hand held d-star radio. (Father has also had thoughts about running a d-star repeater).

Anybody who has bought a d-star radio will tell you that is a steep learning curve, as the way that would operate the radio and make contact is different.

As a note for any one looking to buy a d-star radio, you need to be registered on the d-star network to be able to use all the functions of d-star. You can do this online via your local d-star repeater (or if they don’t have a registration link south Yorkshire repeater group have one here.) This will register your call sign on the d-star network so that you can use it via any repeater (not just the one you registered on), however requests are usually manually processed and may take some time to become active.

As yet, I’ve not had much time to play around with the system however, I have heard a few people contacting each other and the sound quality is excellent, however I have also heard some stations with scrambled audio (as you would find on Freeview etc when there is a bad signal or interference).

Has any one else purchased a D-Star Capable radio or is looking to purchase one? I’d like to know your thoughts on it all.