in Linux

How to: Create a Narrowcast system

This guide will explain how to add and manage a Narrowcast. I’ve done this for the company I work for, we have yet to enrol them, but they are close to being ‘released’.



We will be using Xibo for our new Narrowcast/Digital signage system. Xibo is open-source and free to use, even for commercial use! It’s available for Windows, Linux and Android and it’s easy to manage. Maybe it’s useful to note that if you’re going to use the Android client you will need a license provided by SpringSignage. A license costs £15 per display, you can also choose to buy the whitelabel, which means you can use your own logo when booting Xibo on your Android Client. This will cost you £150.

We will be using a Linux virtual machine running CentOS 7 to host the Xibo website files. This OS is installed by using the minimal install option. We will use a Ugoos UT4 Octacore Android client, yours can be different.


First we need to make sure we have all the required items. The recipe for our Narrowcasting system is as follows:

  • The open-source Xibo files: download from cITricks or Xibo.
  • A Windows, Linux OR Android PC/server for hosting the website files
  • Either a: Windows or Android device who can install the Xibo Client.

Configuring Linux

Boot up your Linux distro. To ensure the Operating System is up-to-date, we’re going to update the system. Run the following code:

sudo yum -y update



We need to get our webserver up and running run the following code, remember to execute this as sudo:

sudo yum -y install httpd

sudo systemctl start httpd

sudo systemctl enable httpd


CentOS7 Apache Install
CentOS 7 screen when installing Apache

The code above will install the apache2 webserver and automatically boot it on start-up.

Now we’re allowing other computers or clients to reach the CMS, use the following commands:

sudo firewall-cmd --permanent --add-port=80/tcp

sudo firewall-cmd --permanent --add-port=443/tcp

sudo firewall-cmd --reload

You can change to port numbers to your own desire, I will use the default ones, if you change them, keep in mind you need to remember the port number to connect to your CMS.



Now we need a database to connect to, we use MariaDB. Run the following code to install MariaDB:

sudo yum install mariadb-server

Once installed, we want MariaDB to boot on start-up, and we also want to manually start it right now.

sudo systemctl enable mariadb

sudo systemctl start mariadb


Installing MariaDB on CentOs 7
Installing MariaDB on CentOs 7

To ensure we’re having the basic security, run the following script to harden the security:

sudo mysql_secure_installation

It will probably ask you what the current password is for your database, just press ‘enter’ as there is no password yet. It is really recommended to set a password.


PHP & phpMyAdmin

Now we’re running a ‘safer’ database, we’re going to install PHP, run the following command:

sudo yum install php php-mysql

To make sure PHP is supported, reboot Apache:

sudo systemctl restart httpd.service

You can use the following command to see if PHP is running and with which modules and libraries:

yum search php-

Because we support PHP now, we can install phpMyAdmin. First add the repository and then install the software:

sudo yum install epel-release

sudo yum -y install phpmyadmin

phpMyAdmin is now installed on your webserver, let’s configure it so you can actually access it!

sudo yum install nano

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

You’re now editing the configuration file of phpMyAdmin. Change the following code:

<IfModule mod_authz_core.c>
# Apache 2.4
Require ip
Require ip ::1


<IfModule mod_authz_core.c>
# Apache 2.4
Require all granted
Require ip
Require ip ::1


<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from
Allow from ::1


<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Allow from All
Allow from
Allow from ::1

Press CTRL-O to save your changes, then close by using CTRL-X.

After restarting your Operating System you can now access the phpMyAdmin environment by heading to http://<Your_Servers_IP_Address/phpmyadmin.


Libraries & Modules

Install the following components who are required by Xibo by running the command:

sudo yum install php-devel php-intl php-soap php-mcrypt json

Now we need to configure json, let’s check the json configuration file. Use the following command to edit json.ini:

sudo nano /etc/php.d/json.ini

If everything correct, it will tell you the exension for json is Press CTRL-O to save the file. Or press CTRL-X to close without saving.

The (small) configuration file for JSON.
The (small) configuration file for JSON.

To ensure the libraries and modules are applied and running, we will reboot the operating system. Use the sudo reboot command to do is. This will immediately reboot the device.

Placing Xibo

Now we have installed all the required software, libraries and modules, we need to download the Xibo CMS files. We will use the curl command to download the files to the WWW location where the website files are stored. Use the following command to download the archive from Xibo and have it saved in the WWW folder:

sudo yum install wget unzip

sudo wget ''

sudo mv /home/citricksnet/ /var/www/html/

cd /var/www/html/

sudo unzip

Don’t forget to change the location of the user folder in the command above. citricksnet should be replaced with your username. Once you’ve extracted the archive file, you can delete the archive by using the follow command:

sudo rm

Now run the following commands so the webserver has access to the extracted Xibo files:

cd /var/www

sudo chown apache.apache -R xibo

cd /var/www/html

sudo mkdir /xibo-library

sudo chown apache.apache -R /xibo-library


Installing and Configuring Xibo

Now we’re finally done with installing and configuring the webserver, we will start installing and configuring Xibo. Open your web browser and open your Xibo installation page (this is probably http://(WEB_SERVER_IP) or http://(WEB_SERVER_IP:80) or any other port you entered. You will see the following page:

The Xibo Installation screen.
The Xibo Installation screen.

Everything should be shown as  ‘✓’, if not check what you’re missing and try to re-install and update everything mentioned above. The ‘!’ warning sign shown next to Large File Uploads can be solved by editing your php.ini file. To edit the max file upload use the following command:

sudo nano /etc/php.ini

When editing, search for post_max_size, upload_max_size and max_execution_time. Save the file and reboot php or your Operating System.


Configuring the Database

Open phpMyAdmin and log-in with your credentials. Your username is probably root, the password is the one you’ve set when hardening the security of MariaDB. If you can log-in you have access to the database. Use the same information on the Xibo Database Configuration page.

Xibo Database Configuration Page
Xibo Database Configuration Page

At the Database Name field, you can choose your own name for the database. Press next. You will now be asked to create a user account for your Xibo CMS. Choose your Administrator username and password and press next.

You can now choose your library location you can either choose to store it locally, or store it somewhere at another location. You can also choose your own server key, this key is used for allowing displays to connect to your CMS. You can keep it as a default as you can change it later.

Xibo Database Configuration Page
Xibo Database Configuration Page

You’re now done configuring Xibo narrowcast. You can now start adding displays and content.

Accessing the Narrowcast

It’s pretty straight forward to access your narrowcast, just launch your browser and add the url of your webserver in the browserbar. You might have chosen another port, if so, add this to the url you’re visiting.

Example: or


Related Posts

  • Great tutorial! Really well explained, this is definitely something I’m going to put on my to-do list! Thank you 🙂

    • Rick St

      Thank you! I appreciate your comment!

  • Duncan

    Thanks mate.
    I had to disable SElinux so Apache could create setup.ini
    I also couldn’t get the Large File Upload warning to go away after modifying php.ini to 1.8G

    • Hello,

      Sorry for the late reply! What I always do after making a certain change is restart the httpd apache service, this way I am sure it will use the new configuration. If it’s not a production machine (yet!) you can also just restart your machine!

      Also make sure you use the correct extensions with capital letters (m, g etc.)

      Best regards,


  • Tom Brown

    What distro of linux did you use and which version?

    • Rick


      Can you add a full screenshot of your directory and the command you’re using? This might help me to help you!

      Best regards,


  • surfnode

    Do you have any guidance on how to update to latest version once installed based on above install guide?

    • Rick


      I might take the time to upgrade our current version of Xibo to a newer one. We’ve been running the same version for a while and I am convinced it’s better to do an upgrade soon. Once I choose to do the upgrade I will document this and will create a new guide!

      Best regards,