文章目录
NextCloud 是开源的私有云存储 / 协作平台,OnlyOffice 是开源的在线文档编辑工具,二者集成可实现类似腾讯文档 / 石墨文档的在线编辑能力。以下是 CentOS 7 系统中基于 Docker + Docker Compose 的一键部署方案,兼顾易用性和生产级配置。
1、前置条件
1.1. 系统环境要求
CentOS 7.x(最小化安装 / 服务器版均可),建议 2 核 4G 以上内存(OnlyOffice 对内存要求较高,至少 2G 内存,推荐 4G+)
磁盘空间 ≥ 20G(存储文档 / 数据)
外网访问权限(拉取 Docker 镜像)
关闭 SELinux 和防火墙(或配置放行端口)
1.2. 依赖安装(Docker + Docker Compose)
确保系统都安装Docker + Docker Compose

2、环境准备
bash
# 关闭 SELinux(临时+永久)
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
# 关闭防火墙(或放行端口:80/443/8080)
systemctl stop firewalld
systemctl disable firewalld
# 创建数据目录(持久化存储,避免容器删除数据丢失)
mkdir -p /data/nextcloud/{html,data,config}
mkdir -p /data/onlyoffice/{data,logs,fonts}
chmod -R 777 /data # 简化权限(生产环境可精细化配置)

3、编写 Docker Compose 配置文件
创建统一的 docker-compose.yml 文件,整合 NextCloud 和 OnlyOffice 服务,自动配置网络互通:
可以提前把所用的三个镜像下载下来:

yaml
version: '3'
services:
# NextCloud 主服务
nextcloud:
image: nextcloud:latest
container_name: nextcloud
restart: always
ports:
- "80:80" # 对外暴露80端口(可改为443+SSL)
volumes:
- /data/nextcloud/html:/var/www/html # NextCloud 程序目录
- /data/nextcloud/data:/var/www/html/data # 用户数据目录
- /data/nextcloud/config:/var/www/html/config # 配置文件目录
environment:
- MYSQL_PASSWORD=nextcloud123 # 数据库密码(自定义)
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db # 关联数据库容器
- NEXTCLOUD_ADMIN_USER=admin # NextCloud 管理员账号
- NEXTCLOUD_ADMIN_PASSWORD=admin123 # 管理员密码(生产需修改)
networks:
- nextcloud-network
depends_on:
- db
- onlyoffice
# MySQL 数据库(NextCloud 依赖)
db:
image: mysql:8.4.2
container_name: nextcloud-db-mysql
restart: always
volumes:
- /data/nextcloud/mysql:/var/lib/mysql # 数据库持久化
environment:
- MYSQL_ROOT_PASSWORD=root123 # root密码(自定义)
- MYSQL_PASSWORD=nextcloud123
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_INITDB_SKIP_TZINFO=1
command: --default-authentication-plugin=mysql_native_password # 兼容NextCloud
networks:
- nextcloud-network
# OnlyOffice 文档服务
onlyoffice:
image: onlyoffice/documentserver:latest
container_name: onlyoffice
restart: always
ports:
- "8080:80" # OnlyOffice 内部端口(不对外暴露,仅容器互通)
volumes:
- /data/onlyoffice/data:/var/www/onlyoffice/Data
- /data/onlyoffice/logs:/var/log/onlyoffice
- /data/onlyoffice/fonts:/usr/share/fonts
environment:
- JWT_SECRET=onlyoffice123 # 安全密钥(需和NextCloud配置一致)
- TZ=Asia/Shanghai
networks:
- nextcloud-network
# OnlyOffice 依赖较多,需限制内存(可选)
deploy:
resources:
limits:
memory: 2G
# 自定义网络(保证容器间互通)
networks:
nextcloud-network:
driver: bridge
4、启动服务
bash
# 1. 创建配置文件目录并写入配置
mkdir -p /opt/nextcloud && cd /opt/nextcloud
vim docker-compose.yml # 将上面的配置粘贴进去并保存
# 2. 启动所有服务(后台运行)
docker-compose up -d
# 3. 查看启动日志(确认无报错)
docker-compose logs -f
# 关键验证点:
# - nextcloud 容器日志无数据库连接错误
# - onlyoffice 容器日志显示 "Document Server is ready"

5、初始化配置 & 集成 OnlyOffice
- 访问 NextCloud 并完成初始化
访问地址:http://服务器IP
输入配置的管理员账号 admin / 密码 admin123,登录 NextCloud 后台 - 安装 OnlyOffice 插件
登录 NextCloud 后,点击左侧「应用」→ 搜索「OnlyOffice」→ 安装「OnlyOffice Integration」插件
安装完成后,点击右上角「设置」→ 左侧「管理」→「OnlyOffice」 - 配置 OnlyOffice 连接
在 OnlyOffice 配置页面填写以下信息:
| 配置项 | 填写值 |
|---|---|
| Document Server 地址 | http://onlyoffice:80(容器内网络地址,无需填服务器 IP,利用 docker 网络互通) |
| 高级设置 → JWT 密钥 | onlyoffice123(需和 docker-compose.yml 中 OnlyOffice 的 JWT_SECRET 一致) |
| 保存后点击「测试连接」 | 提示「连接成功」即表示集成完成 |

"人的一生会经历很多痛苦,但回头想想,都是传奇"。