Xibo Digital Signage
Der Begriff Digital Signage umschreibt den Einsatz digitaler Medieninhalte bei Werbe- und Informationssystemen wie elektronische Plakate, elektronische Hinweistafeln oder digitale Türbeschilderung im Innen- sowie Außenbereich.
Xibo ist eine professionelle Open Source Digital Signage Software, die als digitales Informationssystem an den verschiedensten Orten eingesetzt werden kann. Xibo steht im GitHub als Docker Image öffentlich zur Verfügung. In diesem Artikel geht es nur um die zentralen Serverdienste und nicht um den Player zur Darstellung der Inhalte.
Leider ist die Konfiguration der Docker Compose Umgebung, die für Xibo bereitgestellt wird, noch auf dem Stand von Docker Compose Version 2. Für mein HomeLab habe ich diese an meine Umgebung mit Traefik und Portainer angepasst und dabei auf Memcached sowie Quickchart verzichtet. Die benötigten Variablen wurden von der Vorlage übernommen und als "stack.env" unter Portainer importiert.
Standardmäßig legt Xibo den Administrator "xibo_admin" mit "password" an, dessen Password als erstes geändert werden sollte.
version: "3.7"
services:
cms-db:
# MySQL 5.7 EOL 31.10.2023
image: mysql:5.7
restart: unless-stopped
env_file:
- stack.env
volumes:
- "db:/var/lib/mysql"
environment:
- MYSQL_DATABASE=cms
- MYSQL_USER=cms
- MYSQL_RANDOM_ROOT_PASSWORD=yes
cms-xmr:
image: ghcr.io/xibosignage/xibo-xmr:0.9
restart: unless-stopped
env_file:
- stack.env
ports:
- "9505:9505"
deploy:
resources:
limits:
memory: 256M
networks:
- default
cms-web:
image: ghcr.io/xibosignage/xibo-cms:release-3.3.7
restart: unless-stopped
env_file:
- stack.env
links:
- cms-db:mysql
- cms-xmr:50001
depends_on:
- cms-db
- cms-xmr
volumes:
- "cms:/var/www/cms/custom"
- "backup:/var/www/backup"
- "theme:/var/www/cms/web/theme/custom"
- "library:/var/www/cms/library"
- "scripts:/var/www/cms/web/userscripts"
- "certs:/var/www/cms/ca-certs"
environment:
- XMR_HOST=cms-xmr
labels:
- "traefik.enable=true"
- "traefik.http.routers.xibo.rule=Host(`${CMS_SERVER_NAME}`)"
- "traefik.http.routers.xibo.entrypoints=websecure"
- "traefik.http.services.xibo.loadbalancer.server.port=80"
- "traefik.http.routers.xibo.service=xibo"
- "traefik.http.routers.xibo.tls.certresolver=leresolver"
- "traefik.docker.network=proxy"
networks:
- proxy
- default
volumes:
db:
cms:
backup:
theme:
library:
scripts:
certs:
networks:
proxy:
external: true
Bei dieser Lösung wird noch das alte MySQL 5.7 verwendet. Der Webserver des CMS wird über Traefik mit einem Let's Encrypt Zertifikat versorgt und über HTTPS angesprochen, so dass das Volume "certs" leer bleiben kann. Ohne die veraltete Compose Anweisung "links" findet allerdings das CMS den MySQL Server nicht. Das Xibo Message Relay "cms-xmr" öffnet direkt den Port 9505 nach außen.