Nextcloud介绍及docker-compose.yml部署+onlyoffice方式
部署所需物料
| 软件 | 版本 |
|---|---|
| centos | 7.X |
| docker | 24.0.5 |
| docker-compose | 1.27.4 |
| mysql | 5.7.36 |
| Nextcloud | 32.0.2 |
| onlyoffice | 9.11.0 |
什么是 Nextcloud?
Nextcloud 是一款开源、自部署的私有云平台,功能类似于企业级网盘(例如 Dropbox、OneDrive、阿里云盘企业版等)。它允许用户在自己的服务器上构建文件同步、共享和协作系统,数据完全掌握在自己手里,而不依赖任何第三方云服务。
Nextcloud 的核心理念是:
数据自主(Data Ownership) + 安全(Security) + 私有化可控(Self-Hosted)
它基于 PHP 和 MySQL/MariaDB 构建,可运行在 Linux、Docker、Kubernetes 等多种环境中,部署方式灵活,生态插件非常丰富。
为什么选择 Nextcloud?
Nextcloud 在国内外技术团队、家庭 NAS 爱好者、小型企业中非常流行,主要原因有:
开源免费,可完全掌控数据
没有订阅费用,没有存储限制,数据全部保存在自己的设备上。
相比公有云网盘,安全性更高,也更符合企业数据合规要求。
丰富的应用生态
Nextcloud 不仅是网盘,它还是一个 协作平台。
你可以通过应用市场安装:
- 日历、待办任务、联系人管理
- OnlyOffice、Collabora 在线文档编辑
- Talk 在线音视频会议
- 邮件、聊天、知识库
- 密码管理器、仪表盘等
全都可以自己部署,形成一个私有办公平台。
全平台同步客户端
Nextcloud 提供:
- Windows / macOS / Linux 桌面同步客户端
- iOS / Android 移动端
- Web 网页端
可实现自动同步文件,打造类似 OneDrive、Dropbox 的使用体验。
强大的权限与共享机制
支持:
- 用户和用户组管理
- 文件夹权限控制(读写/只读/禁止共享等)
- 链接共享(带密码/有效期)
- 内部分享与外部分享控制
非常适合企业协作、团队共享资料。
安全能力强
支持:
- HTTPS / 强制安全访问
- 两步验证(2FA)
- 外部存储加密
- 服务器端文件加密
- 审计日志、安全扫描
对企业来说非常重要。
Nextcloud 使用场景
家庭私有云
- 自动备份手机照片
- 家庭成员共享资料
- NAS 扩展云功能
很多家用 NAS(如群晖、TrueNAS)都集成 Nextcloud。
个人开发者或自由职业者
- 存放项目资料
- 同步多台电脑文件
- 作为 Obsidian/笔记同步后端
公司内部文件管理系统
- 替代企业网盘
- 打造私有协作平台
- 记录会议、文档、流程资料
小团队协作办公
搭配 OnlyOffice/Collabora,可做成:
- 内网文档中心
- 项目共享库
- 在线协作文档编辑平台
Nextcloud 架构(简要说明)
Nextcloud 本质是一个 PHP 应用,需要:
- Web 服务器(Apache/Nginx/FPM)
- 数据库(MySQL/MariaDB/PostgreSQL)
- 文件存储(本地/外置/NFS/对象存储)
使用 Docker 部署时,这些组件一般通过容器方式隔离运行:
nextcloud容器 → 提供应用服务mysql容器 → 提供数据库
其他可选容器:
- Redis(提高性能)
- OnlyOffice(文档协作)
- Collabora(文档协作)
- Caddy/Nginx(反向代理 + HTTPS)
这种结构清晰、易扩展,适合生产部署。
部署架构图

下面我帮你用 非常简洁明了、适合放进博文里的方式 说明一下你生成的这一张 Nextcloud 部署架构图。
架构说明
Nextcloud 应用层(Web)
- 负责处理用户的所有 Web 请求
- 执行核心业务逻辑(文件管理、同步、用户权限)
- 对数据库、存储进行读写操作
- 在 Docker 中通常对应
nextcloud容器
数据库(MySQL / MariaDB)
- 存储用户信息、文件元数据、系统配置
- Nextcloud 本身不会把文件存在数据库
- 在 Docker 中对应
mysql容器
文件存储(Storage)
- Nextcloud 的实际文件(上传内容)都保存在这里
- 可以是:本地磁盘、挂载目录、NAS、NFS
- Docker Compose 中通常通过
volumes挂载
反向代理(Reverse Proxy,选用)
- 可使用 Nginx / Caddy / Traefik
- 用于实现 HTTPS、域名访问、多服务路由
- 生产环境通常建议加上,但基础环境可以不必
用户访问(LAN / Internet)
- 用户可通过浏览器、PC 客户端、手机 App 访问
- 若通过 Internet,需要反向代理 + HTTPS
- 若仅在局域网使用,直接访问服务器 IP 即可
一句话总结
Nextcloud 负责业务逻辑 → MySQL 负责数据 → Storage 负责文件 → Reverse Proxy 负责入口访问 → 用户通过 Web 或客户端使用。
整张图清晰展示了 Nextcloud 的三大核心组件(Web、数据库、存储)以及用户访问路径,是最标准的部署结构。
使用 Docker Compose 部署 Nextcloud + MySQL(完整说明)
下面的 docker-compose.yml 是一个最简可用版本的 Nextcloud 搭建方案,包含应用容器(Nextcloud)与数据库容器(MySQL 5.7)。并使用单独的自定义桥接网络,使容器之间通信更稳定、隔离性更好。
docker-compose.yml 说明
最下边有集成onlyoffice的完整版的yml
version: '2'
services:
db:
image: mysql:5.7.34
container_name: mysql_test
environment:
MYSQL_ROOT_PASSWORD: 123123
TZ: Asia/Shanghai
MYSQL_DATABASE: nextcloud
# MYSQL_USER: nextcloud
# MYSQL_PASSWORD: Orcy820User
volumes:
- ./mysql_data:/var/lib/mysql
# ports:
# - "3307:3306"
networks:
- nextcloud
app:
image: nextcloud:latest
restart: always
ports:
- 8081:80
depends_on:
- db
volumes:
- ./nextcloud:/var/www/html
environment:
- MYSQL_PASSWORD=123123
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=root
- MYSQL_HOST=db
networks:
- nextcloud
networks:
nextcloud:
driver: bridge
ipam:
driver: default
config:
- subnet: 192.168.110.0/24
各服务说明
MySQL 服务(db)
| 参数 | 说明 |
|---|---|
| image: mysql:5.7.34 | Nextcloud 最稳定兼容的 MySQL 版本 |
| MYSQL_ROOT_PASSWORD | root 用户密码 |
| MYSQL_DATABASE | 自动创建 nextcloud 数据库 |
| volumes | 将 MySQL 数据存储在宿主机,防止容器删除后数据丢失 |
| ports | 宿主机通过 3307 端口访问数据库 |
| TZ | 设置容器时区,避免时间差问题 |
如果你打算 使用非 root 用户访问数据库,可以取消注释如下两行:
# MYSQL_USER: nextcloud # MYSQL_PASSWORD: Orcy820User
Nextcloud 服务(app)
| 参数 | 说明 |
|---|---|
| ports: 8081:80 | 通过宿主机 8081 访问 Nextcloud(http://IP:8081) |
| depends_on: db | 保证 MySQL 优先启动 |
| volumes | 挂载 Nextcloud 数据目录,可以持久化上传文件、配置等 |
| 数据库环境变量 | 用于连接 MySQL |
注意:这里使用 root 用户连接数据库:
MYSQL_USER=root MYSQL_PASSWORD=123123
生产环境建议使用专门的数据库账户,会更安全。
网络(nextcloud 网络)说明
networks:
nextcloud:
driver: bridge
ipam:
config:
- subnet: 192.168.110.0/24
自定义网络好处:
- 容器之间通过 容器名互相访问(例如 Nextcloud 用
MYSQL_HOST=db)。 - 网络隔离更安全,不与默认的
bridge混在一起。 - 避免容器跨网络通信导致不稳定。
这是一段常用的 Docker 网络配置写法,满足大多数中小型部署需求。
目录结构建议
建议在宿主机准备一个目录:
/opt/nextcloud/ ├── docker-compose.yml ├── mysql_data/ # 自动生成 └── nextcloud/ # 自动生成
在目录中执行:
docker-compose up -d
即可启动。
访问方式
启动后:
- Nextcloud 页面地址
http://服务器IP:8081
需要再docker-compose.yml里边打开prot的注释
- MySQL 地址(如果需要外部连接)
服务器IP:3307
浏览器打开地址









常见问题与优化建议
MySQL 权限不足、提示连接失败?
确保 Nextcloud 与 MySQL 在同一网络下(默认已经配置)。
检查 MySQL 日志:
docker logs mysql_test
Nextcloud 性能慢?
建议开启 Redis 缓存(可后续扩展 docker-compose),大幅提升性能。
容器删除数据会丢失吗?
不会。因为挂载了宿主机目录:
./mysql_data ./nextcloud
数据是持久化的。
集成OnlyOffice功能
Nextcloud 原生支持与 OnlyOffice 整合,允许用户直接在浏览器中在线编辑 Word、Excel、PowerPoint 文档。要启用这个能力,需要分别完成:
- 安装 OnlyOffice Nextcloud 插件(onlyoffice app)
- 部署 OnlyOffice DocumentServer 服务
- 在 Nextcloud 后台配置 DocumentServer 地址
下面将会详细说明
下载并安装 OnlyOffice 插件
首先,到官方应用中心下载与当前 Nextcloud 版本对应的 OnlyOffice 插件:
插件下载地址,下边截图中的那个地址
- 从 Nextcloud 官网找到 Stable channel 版本
- 下载插件包(例如:
onlyoffice.tar.gz)

- 将软件包上传到服务器后执行:
tar -zxvf onlyoffice.tar.gz
解压后将得到一个 onlyoffice 目录,需要将其放到 Nextcloud 的 apps 目录中。
如果你的 Docker Compose 中 Nextcloud 的挂载路径如下:
volumes: - ./nextcloud:/var/www/html
那么只需将插件移动到:
./nextcloud/apps/
最终路径应为:
./nextcloud/apps/onlyoffice
设置权限
为了让 Nextcloud 正常识别插件,需要为插件目录设置正确权限:
chown -R 33:tape onlyoffice
(33 是 www-data 用户,Nextcloud 容器内常用的运行用户)
Nextcloud 启动它


部署 OnlyOffice DocumentServer(Docker)
OnlyOffice 要实现在线编辑文档功能,需要额外运行一个独立的 DocumentServer 服务。可以通过 Docker 快速部署:
version: '2'
services:
db:
image: mysql:5.7.34
container_name: mysql_test
environment:
MYSQL_ROOT_PASSWORD: 123123
TZ: Asia/Shanghai
MYSQL_DATABASE: nextcloud
# MYSQL_USER: nextcloud
# MYSQL_PASSWORD: Orcy820User
volumes:
- ./mysql_data:/var/lib/mysql
# ports:
# - "3307:3306"
networks:
- nextcloud
app:
image: nextcloud:latest
restart: always
ports:
- 8081:80
depends_on:
- db
volumes:
- ./nextcloud:/var/www/html
environment:
- MYSQL_PASSWORD=123123
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=root
- MYSQL_HOST=db
networks:
- nextcloud
onlyoffice:
image: onlyoffice/documentserver:latest
container_name: onlyoffice
restart: always
ports:
- "8082:80" # 主机端 8082 → 容器 80
volumes:
- ./onlyoffice_data:/var/www/onlyoffice/Data
networks:
- nextcloud
networks:
nextcloud:
driver: bridge
ipam:
driver: default
config:
- subnet: 192.168.110.0/24
部署完成后通过浏览器访问:
http://服务器IP:8082
若页面能打开,DocumentServer 已正常工作。
打开后复制下边这个在服务器上执行,获取key


在 Nextcloud 中绑定 OnlyOffice
进入 Nextcloud 后台管理:
设置 → 管理设置 → ONLYOFFICE
找到:
Document Editing Service 地址
填写:
http://onlyoffice:80
或你主机实际访问的端口:
http://服务器IP:8082
保存后,进入 Nextcloud 文件页面,创建一个 .docx 或 .xlsx 文件,即可在浏览器中在线编辑。



验证与常见问题
插件不显示?
检查权限:
chown -R 33:tape ./nextcloud/apps/onlyoffice
重启容器:
docker compose restart app
提示 DocumentServer 不可用?
确保两个容器在同一个 network:
networks: - nextcloud
443/HTTPS 场景?
推荐用 Nginx/Caddy 做反代,绑定域名并开启 HTTPS,否则浏览器可能限制编辑。
至此,你的 Nextcloud 已具备完整的在线 Office 文档协作能力。
使用独立部署的数据库怎么搞呢?
version: '2'
services:
app:
image: nextcloud:latest
restart: always
ports:
- 8081:80
# depends_on:
# - db
volumes:
- ./nextcloud:/var/www/html
environment:
- MYSQL_PASSWORD=123123 # 这里看要不要修改
- MYSQL_DATABASE=nextcloud # 这里看要不要修改
- MYSQL_USER=root # 注意用户哦
- MYSQL_HOST=192.168.1.100 # 只需要把这个修改就行
networks:
- nextcloud
networks:
nextcloud:
driver: bridge
ipam:
driver: default
config:
- subnet: 192.168.110.0/24
总结
通过本文的介绍,我们完成了对 Nextcloud 私有云的核心概念、适用场景、部署方式以及架构设计 的整体梳理。从基础认识到实际落地,你已经具备了搭建一套自用或团队使用的私有云平台的完整能力。
文章先介绍了 Nextcloud 的优势:开源免费、数据可控、安全合规、插件丰富、客户端齐全,非常适合个人、家庭团队以及中小企业使用。随后,我们给出了基于 Docker Compose 的最小可用部署方案,并详细解释了各组件的作用,包括应用层、数据库层以及存储层。此外,我们还补充了 Nextcloud 的典型架构图,帮助你从全局视角理解系统组成。
整体来看,Nextcloud 的部署相对简单,但具备极强的可扩展性:
- 可以增加 Redis 提升性能;
- 可以接入反向代理实现 HTTPS 和域名访问;
- 也可接入对象存储或外接 NAS 实现大规模文件管理。
无论你是想用它同步多终端文件、打造家庭数据中心,还是搭建企业内部文件管理系统,Nextcloud 都是一套可控、稳定、可扩展的开源解决方案。
如果你后续计划进一步优化部署,如搭建 HTTPS、增加高性能缓存、整合文档协作工具、提升数据库性能等,也欢迎继续扩展。我可以根据你的场景帮助你完善完整的生产级架构。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。


最新评论