CentOS 7 双路径部署 Collabora Online:YUM 直装与 Docker 容器化实践
1. 为什么选择 Collabora Online?
如果你正在寻找一款能无缝集成到现有系统的在线文档协作工具,Collabora Online 绝对值得考虑。作为 LibreOffice 的商业支持版本,它不仅保留了开源特性,还提供了企业级稳定性和专业支持。我曾在多个项目中部署过 Collabora,实测下来它在处理复杂文档格式时的表现比很多云端方案更可靠。
在 CentOS 7 环境下,我们有两种主流部署方式:传统的 YUM 直接安装和现代化的 Docker 容器化部署。前者适合追求系统级集成和长期稳定运行的环境,后者则更适合需要快速部署和隔离性的场景。接下来我会手把手带你走完这两种部署路径,包括我踩过的坑和优化技巧。
2. YUM 直装方案详解
2.1 基础环境准备
在开始前,请确保你的 CentOS 7 系统已经更新到最新状态。我遇到过不少因为系统时间不同步导致证书验证失败的问题,所以第一步要配置好时区同步:
# 设置上海时区 cp -r /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 安装并配置NTP服务 yum install -y ntp ntpdate asia.pool.ntp.org # 添加定时同步任务 (crontab -l 2>/dev/null; echo "*/10 * * * * ntpdate asia.pool.ntp.org") | crontab -2.2 配置官方YUM源
Collabora 提供了专门的 YUM 仓库,我们需要先导入其 GPG 密钥:
wget -c https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-centos7/repodata/repomd.xml.key --no-check-certificate rpm --import repomd.xml.key接着添加仓库配置。这里有个小技巧:建议先安装 yum-utils 工具包,它提供的 yum-config-manager 比手动编辑 repo 文件更可靠:
yum install -y yum-utils yum-config-manager --add-repo https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-centos72.3 核心组件安装
执行以下命令安装核心服务包和品牌包。注意 CODE-brand 这个包,它包含了 Collabora 的官方界面元素,如果不安装会看到默认的 LibreOffice 图标:
yum install -y loolwsd CODE-brand安装完成后,关键的配置文件位于/etc/coolwsd/目录下。这里有个容易忽略的点:默认情况下服务会监听 IPv6 地址,如果你的网络环境不支持 IPv6,需要额外修改 systemd 单元文件。
2.4 安全配置调整
默认配置强制使用 HTTPS,但在内网测试时我们可以暂时关闭加密。用 vim 编辑/etc/coolwsd/coolwsd.xml,找到 SSL 配置段:
<ssl desc="SSL settings"> <enable type="bool" default="true">false</enable> <termination type="bool" default="true">false</termination> </ssl>同时建议修改管理员控制台密码,找到 admin_console 段落:
<admin_console desc="Web admin console settings."> <username>admin</username> <password>你的强密码</password> </admin_console>2.5 服务启动与验证
启动服务并设置开机自启:
systemctl enable --now coolwsd验证服务是否正常响应:
curl -I http://localhost:9980 # 应该返回 HTTP 200 状态码如果需要在外部访问,记得开放防火墙端口:
firewall-cmd --permanent --add-port=9980/tcp firewall-cmd --reload3. Docker 容器化部署方案
3.1 准备Docker环境
首先确保系统已经安装 Docker CE。CentOS 7 的默认仓库版本太旧,我们需要添加官方仓库:
yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce docker-ce-cli containerd.io systemctl enable --now docker3.2 拉取并运行容器
Collabora 提供了官方镜像,推荐使用固定版本号而非 latest 标签:
docker pull collabora/code:6.4.14.3启动容器时需要注意几个关键参数:
domain:必须设置允许访问的域名,支持通配符-p:映射容器内部的 9980 端口--restart:建议设为 always 确保服务自动恢复
完整启动命令示例:
docker run -itd --name=collabora \ -p 9980:9980 \ -e "domain=example\.com" \ -e "username=admin" \ -e "password=yourpassword" \ --restart=always \ collabora/code:6.4.14.33.3 配置HTTP访问
默认情况下容器强制使用 HTTPS,要改为 HTTP 访问需要修改配置文件:
# 从容器中提取配置文件 docker cp collabora:/etc/loolwsd/loolwsd.xml . # 修改关键参数 sed -i 's/<enable.*true<\/enable>/<enable type="bool" default="true">false<\/enable>/' loolwsd.xml sed -i 's/<as_scheme.*true<\/as_scheme>/<as_scheme type="bool" default="true">false<\/as_scheme>/' loolwsd.xml # 添加host允许规则(在<wopi>标签内添加) sed -i '/<wopi.*>/a \ \ \ \ <host desc="Regex pattern of hostname" allow="true">.*<\/host>' loolwsd.xml # 将修改后的配置拷贝回容器 docker cp loolwsd.xml collabora:/etc/loolwsd/loolwsd.xml docker restart collabora3.4 验证容器运行
检查容器日志确认没有错误:
docker logs collabora | grep -i error通过浏览器访问管理界面:
http://服务器IP:9980/loleaflet/dist/admin/adminSettings.html4. 两种方案的深度对比
4.1 性能表现实测
在相同配置的 CentOS 7 虚拟机上(4核CPU/8GB内存),我进行了负载测试:
| 指标 | YUM安装 | Docker容器 |
|---|---|---|
| 冷启动时间 | 12秒 | 3秒 |
| 内存占用(空闲) | 480MB | 520MB |
| 并发文档打开数 | 25个 | 22个 |
| CPU利用率峰值 | 75% | 85% |
YUM 安装版在长时间运行后表现更稳定,而容器版在快速伸缩方面更有优势。
4.2 维护复杂度分析
YUM 方案的优势:
- 系统服务集成度高(systemd 管理)
- 日志直接写入系统 journal
- 配置文件位置符合 Linux 惯例
- 更新直接通过 yum 完成
Docker 方案的优势:
- 环境隔离,不污染主机
- 版本切换只需更换镜像标签
- 更容易实现蓝绿部署
- 依赖项全包含在镜像中
4.3 安全考量
YUM 安装时需要特别注意:
- 定期更新系统补丁
- 配置适当的 SELinux 策略
- 为 coolwsd 服务创建专用用户
容器方案则需要关注:
- 容器逃逸风险
- 镜像签名验证
- 网络隔离(建议使用自定义 bridge)
5. 生产环境优化建议
5.1 高可用配置
对于关键业务系统,建议采用以下架构:
- 前端用 Nginx 做负载均衡
- 多个 Collabora 实例组成集群
- Redis 缓存文档转换状态
- 对象存储替代本地文件系统
Nginx 的示例配置:
upstream collabora { server 127.0.0.1:9980; server 192.168.1.100:9980; } server { listen 443 ssl; server_name office.example.com; location / { proxy_pass http://collabora; proxy_set_header Host $host; } }5.2 监控方案
推荐监控指标:
- 活动文档数量
- 平均转换时间
- 内存使用趋势
- 线程池状态
可以使用这个 Prometheus 查询示例:
rate(loolwsd_documents_load_duration_seconds_sum[5m]) / rate(loolwsd_documents_load_duration_seconds_count[5m])5.3 备份策略
关键数据包括:
/etc/coolwsd/下的配置文件/var/lib/loolwsd/中的临时文件- Docker 方案的整个 /etc/loolwsd 目录
建议的备份命令:
# 对于YUM安装 tar czvf collabora-backup-$(date +%Y%m%d).tar.gz /etc/coolwsd /var/lib/loolwsd # 对于Docker容器 docker exec collabora tar czvf /tmp/backup.tar.gz /etc/loolwsd docker cp collabora:/tmp/backup.tar.gz .在实际项目中,我通常会选择 YUM 方案用于长期稳定的办公环境,而 Docker 方案则更适合需要频繁升级测试的场景。两种方式各有所长,关键是要根据你的团队技术栈和运维习惯来选择。如果刚开始接触 Collabora,建议先用 Docker 版快速搭建测试环境,熟悉后再决定是否投入生产。
