Nextcloud + Collabora Online 企业级生产环境部署指南

适用环境:CentOS 7 / Docker + Docker Compose
核心特性:MariaDB 11.4 稳定版 + Redis 内存缓存 + Collabora 中文字体/打印支持 + 360浏览器兼容 + 系统级 Cron 后台任务


一、 系统基础与 Docker 环境准备

1.1 配置阿里云 Yum 源

rm -f /etc/yum.repos.d/CentOS-Base.repo
curl -L -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all && yum makecache

1.2 安装 Docker 与 Docker Compose

# 安装依赖与 Docker
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker && systemctl enable docker

# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

1.3 配置 Docker 镜像加速器(国内服务器必做)

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://noohub.ru",
    "https://huecker.io"
  ]
}
EOF
sudo systemctl daemon-reload && sudo systemctl restart docker

二、 目录结构与字体准备

2.1 创建项目与数据目录

mkdir -p /home/root/nextcloud-collabora/config
mkdir -p /data/{file,db,fonts}
cd /home/root/nextcloud-collabora

2.2 准备中文字体(解决文档乱码与打印问题)

将企业常用的中文字体(如宋体、黑体、微软雅黑等 .ttf.ttc 文件)上传至 /data/fonts/ 目录,并赋予读取权限:

chmod 644 /data/fonts/*

三、 核心组件编排 (docker-compose.yml)

/home/root/nextcloud-collabora/ 目录下创建 docker-compose.yml,写入以下经过生产验证的配置:

services:
  # ================= 1. MariaDB 11.4 数据库 (Nextcloud官方推荐稳定版) =================
  db:
    image: mariadb:11.4
    container_name: nextcloud_db
    restart: always
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    volumes:
      - /data/db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=你的数据库Root密码
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=你的Nextcloud数据库密码

  # ================= 2. Redis 内存缓存 (大幅提升性能与后台任务效率) =================
  redis:
    image: redis:alpine
    container_name: nextcloud_redis
    restart: always
    command: redis-server --requirepass 你的Redis密码
    volumes:
      - /data/redis:/data

  # ================= 3. Nextcloud 网盘主服务 =================
  nextcloud:
    image: nextcloud:34.0.2
    container_name: nextcloud
    restart: always
    ports:
      - "8080:80"
    depends_on:
      - db
      - redis
    volumes:
      - /data/file:/var/www/html
    environment:
      - MYSQL_HOST=db
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=你的Nextcloud数据库密码
      - REDIS_HOST=redis
      - REDIS_HOST_PASSWORD=你的Redis密码
      - NEXTCLOUD_ADMIN_USER=admin
      - NEXTCLOUD_ADMIN_PASSWORD=你的管理员密码
      - NEXTCLOUD_TRUSTED_DOMAINS=192.168.0.***:8080

  # ================= 4. Collabora Online 文档服务 =================
  collabora:
    image: collabora/code:latest
    container_name: collabora
    restart: always
    ports:
      - "9980:9980"
    depends_on:
      - nextcloud
    volumes:
      # 挂载字体到运行时与系统模板目录,解决中文显示与打印
      - /data/fonts:/usr/share/fonts/truetype/more/
      - /data/fonts:/opt/cool/systemplate/usr/share/fonts/truetype/more/
      # 挂载自定义配置文件(解决浏览器CSP拦截问题),先注释做完第四步Collabora 浏览器兼容配置 (CSP)这里在放开
      - ./config/coolwsd-full.xml:/etc/coolwsd/coolwsd.xml:ro
    environment:
      - domain=192\\.168\\.0\\..*
      - username=admin
      - password=你的Collabora管理密码
      - extra_params=--o:ssl.enable=false
    # 必须赋予 SYS_ADMIN 权限,否则新版 Collabora 无法创建沙盒环境
    cap_add:
      - SYS_ADMIN

四、 Collabora 浏览器兼容配置 (CSP)

4.1 导出并修改配置

首次启动后,从容器导出默认配置并进行 CSP 策略修改(允许内联脚本、Blob 打印及 360 浏览器域名):

# 启动容器并导出配置
docker compose up -d && sleep 20
docker cp collabora:/etc/coolwsd/coolwsd.xml ./config/coolwsd-full.xml
docker compose down

# 注入 CSP 策略
sed -i '/<content_security_policy desc="Customize the CSP header/,/<\/content_security_policy>/c\      <content_security_policy desc="Customize the CSP header by specifying one or more policy-directive, separated by semicolons. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy">default-src '"'"'self'"'"'; script-src '"'"'self'"'"' '"'"'unsafe-inline'"'"' '"'"'unsafe-eval'"'"'; style-src '"'"'self'"'"' '"'"'unsafe-inline'"'"'; img-src '"'"'self'"'"' data: blob: https://browser.360.cn; object-src '"'"'self'"'"' blob:; frame-src '"'"'self'"'"' blob:;</content_security_policy>' ./config/coolwsd-full.xml

五、 系统级后台任务配置 (Cron)

5.1 切换 Nextcloud 后台模式

登录 Nextcloud 网页端,进入 管理设置 -> 基本设置 -> 后台任务,选择 Cron (推荐)

5.2 配置宿主机 Crontab

在 Linux 宿主机终端执行 crontab -e,添加以下定时任务(每5分钟以 www-data 身份执行):

*/5 * * * * docker exec -u www-data nextcloud php /var/www/html/cron.php > /dev/null 2>&1

六、 启动与生产验证

6.1 启动所有服务

cd /home/root/nextcloud-collabora
docker compose up -d

6.2 验证各项指标

  1. 版本与警告:登录 Nextcloud 后台,确认 MariaDB 版本警告已消失,后台任务显示“上次执行于 1分钟前”。
  2. Collabora 连通性:在 Nextcloud 后台的 Collabora Online 设置中填入 http://192.168.0.***:9980,保存后应显示绿色对勾。
  3. 文档与打印:上传 Word 文档,确认中文显示正常,点击“打印”能正常弹出预览(CSP 生效)。

七、 生产环境备份策略

# 数据库逻辑备份
docker exec nextcloud_db mysqldump -u root -p你的数据库Root密码 nextcloud > /backup/nextcloud_db_$(date +%Y%m%d).sql

# 文件与配置备份
tar -czf /backup/nextcloud_files_$(date +%Y%m%d).tar.gz /data/file
cp -r /home/root/nextcloud-collabora /backup/nextcloud-config_$(date +%Y%m%d)/

故障排查:应用商店安装超时 (cURL error 28)

在 Nextcloud 网页后台(管理 -> 日志)中,你可能会遇到如下报错信息:

ConnectException cURL error 28: Operation timed out after 120000 milliseconds with 2977090 out of 14552752 bytes received (see https://curl.se/libcurl/c/libcurl-errors.html) for https://release-assets.githubusercontent.com/...

故障原因分析

该报错的核心是 cURL error 28: Operation timed out,表示 Nextcloud 在尝试从 GitHub 官方服务器下载应用文件时,连接超时中断了。

从报错日志中可以看出,Nextcloud 已经成功下载了约 2.9 MB 的数据(2977090 out of 14552752 bytes),但未能下载完整个 14.5 MB 的文件。这通常不是 Nextcloud 本身的配置问题,而是由于国内网络环境访问 GitHub 资源(release-assets.githubusercontent.com)不稳定或速度过慢,导致大文件下载超时。

️ 解决方案:手动下载并离线安装

既然通过 Nextcloud 网页端自动下载行不通,我们可以采用“曲线救国”的方法:在本地下载好文件后,手动上传到服务器进行离线安装。

第一步:在本地电脑下载应用文件

  1. 复制日志中那个超长的、以 https://release-assets.githubusercontent.com/ 开头的完整链接。
  2. 将链接粘贴到本地电脑的浏览器中,或使用 IDM、迅雷等支持断点续传的下载工具进行下载。
  3. 下载完成后,你将获得一个名为 richdocuments-v11.1.0.tar.gz 的压缩包。

第二步:上传文件至服务器
使用 SFTP 工具(如 WinSCP、FileZilla)或 scp 命令,将刚刚下载的 richdocuments-v11.1.0.tar.gz 文件上传到 Nextcloud 服务器的自定义应用目录。

  • 目标路径/*******/file/custom_apps/
    (注:该 file 目录即我们在 docker-compose.yml 中映射到容器内 /var/www/html 的数据卷)

第三步:在服务器上解压文件
通过 SSH 登录服务器,进入应用目录并执行解压操作:

# 1. 进入 Nextcloud 的自定义应用目录
cd /********/file/custom_apps/

# 2. 解压应用压缩包
tar -xzf richdocuments-v11.1.0.tar.gz

# 3. 删除压缩包以节省空间
rm richdocuments-v11.1.0.tar.gz

第四步:修正文件权限(关键)
为了让 Nextcloud 容器能够正常读取并运行该应用,必须确保文件所有者为 www-data

chown -R www-data:www-data /*******/file/custom_apps/richdocuments

第五步:在网页端启用应用

  1. 回到 Nextcloud 网页后台,进入 “应用 (Apps)” 页面。
  2. 在“未启用的应用”列表中找到 “Nextcloud Office”
  3. 点击 “启用” 按钮,即可完成安装。

应用装好后,别忘了去管理设置里配置一下 Collabora 服务器的地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦里藍天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值