适用环境: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 验证各项指标
- 版本与警告:登录 Nextcloud 后台,确认 MariaDB 版本警告已消失,后台任务显示“上次执行于 1分钟前”。
- Collabora 连通性:在 Nextcloud 后台的 Collabora Online 设置中填入
http://192.168.0.***:9980,保存后应显示绿色对勾。 - 文档与打印:上传 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 网页端自动下载行不通,我们可以采用“曲线救国”的方法:在本地下载好文件后,手动上传到服务器进行离线安装。
第一步:在本地电脑下载应用文件
- 复制日志中那个超长的、以
https://release-assets.githubusercontent.com/开头的完整链接。 - 将链接粘贴到本地电脑的浏览器中,或使用 IDM、迅雷等支持断点续传的下载工具进行下载。
- 下载完成后,你将获得一个名为
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
第五步:在网页端启用应用
- 回到 Nextcloud 网页后台,进入 “应用 (Apps)” 页面。
- 在“未启用的应用”列表中找到 “Nextcloud Office”。
- 点击 “启用” 按钮,即可完成安装。
应用装好后,别忘了去管理设置里配置一下 Collabora 服务器的地址
1129

被折叠的 条评论
为什么被折叠?



