Xibo Tutorial: Complete guide to installation, security, and getting started

  • Configure XMR/XTR, Apache, PHP, and MariaDB for a robust Xibo CMS.
  • Strengthen access with 2FA, notifications, and email settings.
  • Manage content with Playlists and design with the Layout Editor.
  • Sort and filter in the CMS to scale operations without chaos.

Xibo digital signage tutorial

If you're just starting out with Xibo or want to take your digital signage to the next level, here you'll find a comprehensive guide, from installing the CMS on Ubuntu to getting started with content, screens, and security. Everything you need to get Xibo up and running This article has wisely condensed everything, including recommendations for new users, configuration of Apache, PHP, MariaDB, XMR/XTR, and guidelines for day-to-day system operation.

In addition to the step-by-step installation, we will cover security options such as two-factor authentication, sorting and filtering tricks within the CMS itself, and how to upload and schedule pre-created images and videos. If you prefer to create designs directly in XiboYou'll also see how to get started with the Layout Editor and templates to produce engaging content without any hassle.

Preliminary notes and requirements

Before touching anything, it's advisable to understand a few things. In certain scenarios, versions of MariaDB and PHP, which are not officially supported by Xibo; try to validate your stack with the compatibility matrix recommended by the project if you are looking for long-term stability.

Another important detail is the media library folder. This guide uses it. /var/www/Library as the library location, since the installer writes the installation log to /var/www/library and requires that the directory be empty to continue correctly.

For dynamic graphics, a A local instance of QuickChart is recommended For performance and control, although its installation isn't covered here. It's an interesting plugin if you intend to display rendered data on the fly.

All system requirements can be installed using apt on Ubuntu. You will need a web server, PHP with extensions, and supporting components. The following command gathers the minimum packages that have been successfully used in real-world environments:

sudo apt install mariadb-server mariadb-client apache2 php php-cli php-gd php-json php-dom php-mysql php-zip php-soap php-curl php-xml php-mbstring php-zmq libapache2-mod-xsendfile

If you are setting up a new environment, make sure that the firewall, DNS, and certificates are provided. Having HTTPS from day one It greatly simplifies the subsequent configuration of security and email notifications.

Installing Xibo on Ubuntu

Installing the Xibo CMS in /srv/xibo-cms

When deploying server software from outside repositories, it's good practice to place it under /srv. In this case, we'll install the CMS in /srv/xibo-cms to keep it organized and separate from other services:

sudo mkdir /srv/xibo-cms
cd /srv/xibo-cms
sudo wget https://github.com/xibosignage/xibo-cms/releases/download/3.0.2/xibo-cms-3.0.2.tar.gz
sudo tar -xvzf xibo-cms-3.0.2.tar.gz --strip-components=1

Once extracted, set the web server account as the owner to avoid permission issues. In Ubuntu with Apache, it's usually www-data:

sudo chown -R www-data:www-data /srv/xibo-cms

To simplify the VirtualHost configuration, the default Apache directory is removed and a symbolic link pointing to the Xibo path is created. Thus /var/www is linked to the CMS:

sudo rm -r /var/www
sudo ln -s /srv/xibo-cms /var/www

Configure Apache2 for Xibo

Enable the necessary modules and create the site configuration. You will need at least rewrite, SSL, and session management. Also enable X-Sendfile to serve the library efficiently:

sudo a2enmod rewrite
sudo a2enmod ssl
sudo a2enmod session
sudo nano /etc/apache2/sites-available/xibo-cms.conf

Example of a VirtualHost for HTTP and HTTPS (adjust the ServerName and paths to certificates): use XSendFile and allow .htaccess where applicable:

<VirtualHost *:80>
    DocumentRoot "/var/www/web"
    ServerName xibo.domain.com
    XSendFile on
    XSendFilePath /var/www/Library
    <Directory "/var/www/web">
        AllowOverride All
        Options Indexes FollowSymLinks MultiViews
        Order allow,deny
        Allow from all
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot "/var/www/web"
    ServerName xibo.domain.com
    XSendFile on
    XSendFilePath /var/www/Library
    SSLEngine on
    SSLCertificateFile "/etc/ssl/certs/ssl-cert-snakeoil.pem"
    SSLCertificateKeyFile "/etc/ssl/private/ssl-cert-snakeoil.key"
    <Directory "/var/www/web">
        AllowOverride All
        Options Indexes FollowSymLinks MultiViews
        Order allow,deny
        Allow from all
        Require all granted
    </Directory>
</VirtualHost>

Deactivate the default site and activate the new VirtualHost. Then, apply the changes. This will make the CMS usable under the configured name:

sudo a2dissite 000-default.conf
sudo a2ensite xibo-cms.conf
sudo systemctl restart apache2

Prepare MariaDB

Access the MariaDB client and set a secure password for the root account. Remember to replace MY_NEW_PASSWORD with yours and keep the secret properly:

sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MI_NUEVA_CONTRASEÑA';
FLUSH PRIVILEGES;
exit;

We will create the CMS database using the web wizard. On that screen, select the option to create a new database for Xibo to initialize with its scheme and permissions.

Adjust PHP for large file uploads

If you're going to work with video and large images, you'll need to increase the execution and upload limits in php.ini. Edit the Apache SAPI php.ini file (adjust the version if it is not 7.4):

sudo nano /etc/php/7.4/apache2/php.ini

Modify the following directives to avoid bottlenecks. 2G is usually sufficient for most videos, but you can scale up if your infrastructure supports it. Don't forget to restart Apache after the change:

max_execution_time = 300
memory_limit = 256M
post_max_size = 2G
upload_max_filesize = 2G
session.cookie_secure = Off
session.cookie_httponly = On
session.cookie_samesite = Lax

XMR real-time messaging and XTR scheduled tasks

XMR is the real-time messaging component that allows the CMS to send commands to the Players instantly. Edit its configuration file to adapt IP addresses and ports. Change the public IP in pubOn to your server's IP address (You can check it with "ip a" or your provider):

sudo nano /srv/xibo-cms/vendor/xibosignage/xibo-xmr/bin/config.json

Example content (adjust pubOn to your public IP): Keep listenOn local and publish to port 9505:

{
  "listenOn": "tcp://127.0.0.1:50001",
  "pubOn": ["tcp://192.168.1.1:9505"],
  "debug": false
}

Grant ownership of the file to www-data so that the service can read it without problems. You will avoid permission errors when starting XMR:

sudo chown www-data:www-data /srv/xibo-cms/vendor/xibosignage/xibo-xmr/bin/config.json

Create the systemd service for XMR and enable it. This will cause it to start automatically with the system. Check the status after starting to confirm that there are no errors:

sudo nano /etc/systemd/system/xibo-xmr.service
[Unit]
Description=Xibo XMR
After=network.target

[Service]
User=www-data
Group=www-data
ExecStart=/usr/bin/php /srv/xibo-cms/vendor/bin/xmr.phar
Restart=always
KillMode=process
RestartSec=1

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable xibo-xmr.service
sudo systemctl start xibo-xmr.service
sudo systemctl status xibo-xmr.service

XTR, on the other hand, is the set of recurring tasks that the CMS executes every minute. Add it to the web server user's crontab so it runs without additional credentials. Schedule the execution per minute with this line:

sudo crontab -u www-data -e
* * * * * /usr/bin/php /var/www/bin/xtr.php

Firewall, ports and boot

Open the necessary ports in UFW: SSH for remote administration, HTTPS for the CMS, and TCP port 9505 for XMR publishing. Enable the firewall at the end to apply the rules:

sudo ufw allow ssh
sudo ufw allow https
sudo ufw allow 9505/tcp
sudo ufw enable

Restart Apache and access the URL configured in the VirtualHost. If everything is correct, you will see the Xibo pre-checks screen. The only regular alert is for large increases If you haven't adjusted php.ini as instructed:

sudo systemctl restart apache2

Web Installation Wizard

On the first screen, at the bottom, tap Next to continue with the wizard. Fill in the MariaDB connection details and select "Create a new database" so that Xibo creates the database and the necessary privileges automatically.

Next, the installer will ask you for the CMS administrator username and password. Write down these credentials securely. because you will use them for the first login.

The next step is to indicate the content library routewhich in this guide is /var/www/Library. You can also confirm or adjust the server license for player registration. If you are not interested in sending telemetry, uncheck the statistics option.

Once finished, you will be able to log in with the newly created administrator account and access the main CMS panel. If you don't see any designs or notice anything unusual, forces the browser to reload (e.g., Shift+F5) to clear the cache.

First start: access security, profile and notifications

The first time you log in, you should change your password. Go to your user profile, tap Edit, and set a new password. Take this opportunity to add a valid email address with which to receive reminders and alerts.

In the Profile you will find Interface Preferences and a link to redisplay the welcome screen whenever you want. Personalize these details It saves you time on a daily basis if you manage many screens.

Strengthens access with Two-Factor Authentication (2FA)You can choose to receive the code by email or enter the code generated by the Google Authenticator app. When activated, it generates Recovery Codes; copy them and save them in a password manager.

If you ever lose access to the email or the codes app, an administrator can Reset recovery codes from the User gridAfter the reset, re-enable 2FA from your profile by following the steps.

The system Notifications displays user messages and system eventsAccess it via the bell icon next to your profile, and if you wish to create a new notification, go to the Notification Center and use "Add Notification." Keep in mind that the available options depend on the features enabled by your administrator for your role.

If you don't see the notification drawer, request that the corresponding features be activated in Features and that a notification drawer be configured. mailing address In Settings > Network. The "interrupt" option in a notification automatically redirects the user to view it; for email alerts to work, enable "Enable Email Alerts" in Settings > Maintenance.

Upload and display content on screens

If you already have Images and videos created outside the CMSUpload them to the Library and schedule them on your screens from the Scheduling section. It's quick and lets you start broadcasting in minutes.

For carousel-type rotations, create a Playlist that groups your assets and assign it to the Displays you want. Adding or removing items from the list will update the screens without redoing entire layouts.

If you prefer to compose your messages directly in Xibo, open the Layout EditorYou can start from pre-designed templates or a blank canvas, placing regions for video, image, text, feeds, etc., and fine-tuning the duration of each widget.

Remember that Displays must be connected and authorized in the CMS to start displaying content. If you haven't created any yet, go to the Screens section, authorize the ones that appear as pending, and assign your first designs.

Sorting and filters in the CMS

In almost every grid in the CMS (Designs, Media, Screens, Users, etc.) you have tools for Sorting and filtering to find what you're looking forSort by columns, apply filters by name, label, date or status, and save views if needed.

Using these options correctly helps you manage large catalogs and displays with dozens of screens. A good taxonomy with labels and consistent filters reduce errors and speed up team work.

CMS Updates

When it's time to update, the easiest thing to do is stop Apache and XMR, make a backup, and deploy the new version. Start by stopping services and versioning the current directory. for a quick return:

sudo systemctl stop apache2 xibo-xmr
sudo mv /srv/xibo-cms /srv/xibo-cms.backup

Make a database dump (replace "username" with your non-root username) and save it in your home directory or secure storage:

sudo mysqldump -u root -p xibo > /home/usuario/xibo-cms.sql

Deploy the new version of the CMS in a clean directory, copy settings.php, the complete Library and the config.json from XMR. Remove the web installer to avoid warnings and set appropriate permissions:

sudo mkdir /srv/xibo-cms
cd /srv/xibo-cms
sudo wget https://github.com/xibosignage/xibo-cms/releases/download/3.0.8/xibo-cms-3.0.8.tar.gz
sudo tar -xvzf xibo-cms-3.0.8.tar.gz --strip-components=1
sudo cp /srv/xibo-cms.backup/web/settings.php web/
sudo cp -r /srv/xibo-cms.backup/Library .
sudo cp /srv/xibo-cms.backup/vendor/xibosignage/xibo-xmr/bin/config.json vendor/xibosignage/xibo-xmr/bin/
sudo chown -R www-data:www-data /srv/xibo-cms
sudo rm web/install/index.php

If you are upgrading between major branches (e.g., from 2.x to 3.x), run the database migration from the CMS directory. This step applies the scheme changes necessary:

vendor/bin/phinx migrate -c phinx.php

Restart the services and log into the CMS. If the designs are not loading correctly, force refresh the browser (Shift+F5). You can check the installed version from the "About" link in the bottom left corner:

sudo systemctl start apache2 xibo-xmr

Windows Player and Displays

To test your display network on a Windows PC, download and install the Xibo Player for Windows (free). Accept the license, leave the "run at completion" option checked, and complete the wizard.

When you open the Player, enter the CMS URL and connect. After a few seconds, it should indicate that the connection has been established. Next, log into the CMS and authorize that new player. from the Screens section.

With the authorized Player, you can now assign layouts or playlists to that Display. This is the starting point of your networkAdd more Players to your locations and orchestrate signage from the CMS.

Training, documentation and community

If you're looking for learning materials, there are videos that complement the official documentation and helpful resources in the community. Xibo's open source forums They are a great source of practical solutions and good ideas.

In some environments you will find support plans and private communities dedicated to open technologies (for example, initiatives like "Systems Ingenious," with affordable subscriptions and daily podcasts). These resources can help you quickly resolve doubts and stay up to date.

With careful installation, enhanced security with 2FA, operational XMR messaging, scheduled XTR, and best practices for content uploading and scheduling, You will have a stable and flexible digital signage platformTake advantage of the CMS's sorting and filtering features, authorize your screens strategically, and combine Playlists and Layouts to iterate quickly without sacrificing the quality of what you display.