Xibo 多媒体信息发布系统详细部署指南

一、 系统架构简介

Xibo 采用典型的“C/S架构”:

  1. CMS 服务端(中心控制台): 就是我们要在服务器或 NAS 上通过 Docker 部署的后台服务。它完全免费且不限制终端数量。
  2. Player 播放端: 安装在电视、显示器绑定的电脑或安卓盒子上的客户端软件(Windows/Linux 版免费,安卓版收费)。

二、 环境准备

在服务器上规划一个目录用于存放 Xibo 的配置和挂载数据。建议的目录结构如下:

1
2
3
4
5
/your/path/xibo-cms/
├── docker-compose.yml # 容器编排文件
├── config.env # 环境变量配置文件
└── shared/ # 自动生成的持久化数据目录 (数据库、媒体库等)

通过 SSH 连接到你的服务器,创建并进入该目录:

1
2
3
mkdir -p xibo-cms
cd xibo-cms

三、 配置文件详解

1. docker-compose.yml

新建 docker-compose.yml 文件。以下是我目前正在使用并验证通过的模板。

核心改动说明:

  • 替换了官方容易拉取失败的镜像,使用了自建的私有镜像库(docker.cnb.cool/... 系列)。
  • cms-web 服务的端口映射改为了 1880:80,避免与服务器上原有的 80 端口(如其他 Web 服务)发生冲突。这表示我们后续将通过 1880 端口来访问系统。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
version: "2.1"

services:
cms-db:
image: docker.cnb.cool/nnu/docker-images-chrom/mysql:8.4_amd64
volumes:
- "./shared/db:/var/lib/mysql:Z"
environment:
- MYSQL_DATABASE=cms
- MYSQL_USER=cms
- MYSQL_RANDOM_ROOT_PASSWORD=yes
mem_limit: 1g
env_file: config.env
restart: always
cms-xmr:
image: ghcr.io/xibosignage/xibo-xmr:1.3
ports:
- "9505:9505"
restart: always
mem_limit: 256m
env_file: config.env
cms-web:
image: ghcr.io/xibosignage/xibo-cms:release-4.4.4
volumes:
- "./shared/cms/custom:/var/www/cms/custom:Z"
- "./shared/backup:/var/www/backup:Z"
- "./shared/cms/web/theme/custom:/var/www/cms/web/theme/custom:Z"
- "./shared/cms/library:/var/www/cms/library:Z"
- "./shared/cms/web/userscripts:/var/www/cms/web/userscripts:Z"
- "./shared/cms/ca-certs:/var/www/cms/ca-certs:Z"
restart: always
environment:
- MYSQL_HOST=cms-db
- XMR_HOST=cms-xmr
- CMS_USE_MEMCACHED=true
- MEMCACHED_HOST=cms-memcached
env_file: config.env
ports:
- "1880:80"
mem_limit: 1g
cms-memcached:
image: docker.cnb.cool/nnu/docker-images-chrom/memcached:alpine_amd64
command: memcached -m 15
restart: always
mem_limit: 100M
cms-quickchart:
image: docker.cnb.cool/nnu/docker-images-chrom/ianw-quickchart:latest_amd64
restart: always

2. config.env (重要)

Xibo 的容器依赖外部环境变量。在同级目录下新建一个 config.env 文件,输入以下内容。

注意: 必须修改 MYSQL_PASSWORD 为一个强密码,并设置 XIBO_WEB_HOST

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 数据库连接密码(由于数据库不对外暴露,此密码主要用于容器间通讯,请设置为字母和数字组合的强密码)
MYSQL_PASSWORD=YourStrongPasswordHere

# 邮件发送配置(如果是纯内网使用,可以保持默认)
CMS_SMTP_SERVER=smtp.gmail.com:587
CMS_SMTP_USERNAME=youraccount@gmail.com
CMS_SMTP_PASSWORD=yourpassword
CMS_SMTP_USE_TLS=YES
CMS_SMTP_USE_STARTTLS=YES
CMS_SMTP_REWRITE_DOMAIN=gmail.com
CMS_SMTP_HOSTNAME=gmail.com
CMS_SMTP_FROM_LINE=youraccount@gmail.com

# Xibo 系统的访问地址(必须配置)
# 如果是在内网通过 IP 访问,填写内网 IP,例如:XIBO_WEB_HOST=192.168.1.100
# 如果配置了域名,请填写域名。不需要加 http 也不需要加端口号。
XIBO_WEB_HOST=你的服务器IP或域名

四、 启动与初始化

在确认 docker-compose.ymlconfig.env 都准备就绪后,执行以下命令一键启动集群:

1
2
docker-compose up -d

第一次启动时,数据库容器(cms-db)需要运行初始化脚本建库建表,Web 容器(cms-web)也会进行一些目录权限和基础数据的初始化。这个过程通常需要 2~5分钟,请耐心等待。

你可以通过以下命令查看实时日志,确认系统是否启动完毕:

1
2
docker-compose logs -f cms-web

当日志中不再有明显的报错,且出现类似 Starting cronready to handle connections 的字样时,说明启动成功。

五、 访问后台与修改密码

系统启动后,打开浏览器,访问你在 docker-compose.yml 中映射的端口(外网端口):

访问地址: http://服务器IP:1880

进入登录界面后,使用官方默认凭证登录:

  • 默认账号: xibo_admin
  • 默认密码: password

处于安全考虑,首次登录成功后,系统会强制要求你立刻修改管理员密码。按照提示设置你的新密码即可。

六、 部署终端设备(Player)

CMS 服务端部署完成后,你需要让屏幕连接到它。以免费且易用的 Windows 为例:

  1. 找一台连接了电视机的 Windows 小主机,下载并安装 Xibo for Windows 客户端。
  2. 运行 Xibo Player 选项(Xibo Player Options),配置以下信息:
  • CMS Address: http://服务器IP:1880
  • Key: 可以在你的 Xibo CMS 网页后台的 Administration -> Settings 中找到你的服务端专属通信密钥。
  • Local Library: 本地存储素材的路径。
  1. 点击 Save 保存并启动播放器。
  2. 回到 Xibo CMS 网页后台的 Displays (显示器管理) 菜单,你会看到新接入的设备,将其授权(Authorize)即可开始下发节目!

部署多媒体发布系统是一个系统工程,解决完服务端的私有化部署后,接下来的重头戏就是研究 Layout 布局排版和日程下发了。有问题欢迎在评论区交流。