Xibo

The Xibo system seems tuned for Unixalike-on-Windows with a .NET base and Python plus XAMPP being a suggested variant stack; and thence backported into Ubuntu with a straight-up LAMP stack as a secondary option. Subtly this means that Fedora should work but there will be “issues.” There is some wording that there are Windows-specific and Ubuntu-specific components that are necessary for the client player.¬† The player does direct access to the GPU so hardware support ls limited against a Hardware Compatibility List.

“Porting” to Fedora

Pete Biggs asks Xibo Python client on Fedora or RHEL?; 2011-02-16.
Alex Harrington responds: no, build libavg, browsernode, awesomium from src.

Background

Release

Xibo 1.4.1 “Brorsen”

Architecture

Clients are (stationary, static) venues connect to the server which contains the media schedule and the media library. Venues are only defined in this dynamic sense by the act of a client connection. Once a client connects, it can operate in a sporadic offline mode. If there are no clients connecting, yet or ever, there are no venues. Thus there is no way to prepopulate the definition and schedule for a media campaign. Venues are expected to be fullscreen (i.e. this isn’t an in-browser type ad server).

Server, Admin UI and Media Database

  • LAMP

Client (Venue Player)

  • Bespoke with direct GPU rendering
    • i.e. not Firefox in Kiosk mode
    • i.e. not mplayer
    • i.e. not anything else easy.
    • There are no other client options besides direct GPU hacking
  • Components
  • libbrowsernode Build Instructions

Installation

  • Server => easy as a WordPress install; as noted; further details herein.
  • Client => you’re on your own with GPU-level source code assembly;

 Server

  • The server install is pretty walk-through easy
  • You install and build on-site from source (a copied php tree).
  • As such there are SELinux issues because there are no appropriate labels
    • but there is a semanage fcontext pattern set herein.
  • Robustness
    • It self-checks to ensure that latent errors don’t crop up later
    • It rechecks the self-checks to ensure that changes didn’t occur with the install flow
    • It conveniently restarts the install flow again if it didn’t work

Client

The Client Build Experience for Fedora 17 is described separately following the libbrowsernode Build Instructions circa 2012-10-12.

Locations

For example the servicename could something unimaginative such as billboard

/var/xibo/servicename

  • …/root is the apache server DocumentRoot; install the xibo server distribution here; the php files, etc.
  • …/uploads is an area for storing media files outside the DocumentRoot

The site configuration (database passwords, secret keys, etc.) is written as a data file during the on-site installation workflow:
/var/xibo/servicename/setup.php

Configurations

The apache httpd.conf VirtualHost Declaration

<VirtualHost *:80>
    ServerName servername.example.com
    ServerAdmin admin@example.com
    DocumentRoot /var/xibo/servername/root
    <Directory "/var/xibo/servername/root">
	Options Indexes FollowSymLinks
	Order allow,deny
	Allow from all
    </Directory>
</VirtualHost>

The MySQL is on localhost

  • database user xibo
  • grants against just the billboard database.

SELinux

You will have significant issues with SELinux. Be strong and power through them. The following will get you most of the way there.

$ sudo semanage -o - | grep xibo
fcontext -a -f 'all files' -t httpd_sys_script_exec_t '/var/xibo/org.baker.emerson.billboard/(index|maintenance|services|xmds)\.php'
fcontext -a -f 'all files' -t httpd_sys_rw_content_t '/var/xibo/org.baker.emerson.billboard/(settings|install|upgrade)\.php'
fcontext -a -f 'all files' -t httpd_sys_content_t '/var/xibo/org.baker.emerson.billboard/.*\.(css|gif|html|htm|ico|jpg|js|png|sql|txt|TXT|wsdl|xml)'
fcontext -a -f 'all files' -t httpd_sys_script_exec_t '/var/xibo/org.baker.emerson.billboard/[^/]+/.*\.(inc|php)'

Suggestion:

  • View the dribbles into /var/log/messages interactively looking for sealert messages
  • Run the install flow, restarting and retrying as directed.
  • Use semanage and restorecon to get the tree “right enough” to get past the install.
  • You may have to warp the labels on the tree one way and then the other way during the install. Substantially this is because Xibo wants to write data to php scripts and then execute those scripts.

References

Leave a Reply