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 是一款開(kāi)源、自部署的私有云平臺(tái),功能類似于企業(yè)級(jí)網(wǎng)盤(例如 Dropbox、OneDrive、阿里云盤企業(yè)版等)。它允許用戶在自己的服務(wù)器上構(gòu)建文件同步、共享和協(xié)作系統(tǒng),數(shù)據(jù)完全掌握在自己手里,而不依賴任何第三方云服務(wù)。
Nextcloud 的核心理念是:
數(shù)據(jù)自主(Data Ownership) + 安全(Security) + 私有化可控(Self-Hosted)
它基于 PHP 和 MySQL/MariaDB 構(gòu)建,可運(yùn)行在 Linux、Docker、Kubernetes 等多種環(huán)境中,部署方式靈活,生態(tài)插件非常豐富。
為什么選擇 Nextcloud?
Nextcloud 在國(guó)內(nèi)外技術(shù)團(tuán)隊(duì)、家庭 NAS 愛(ài)好者、小型企業(yè)中非常流行,主要原因有:
開(kāi)源免費(fèi),可完全掌控?cái)?shù)據(jù)
沒(méi)有訂閱費(fèi)用,沒(méi)有存儲(chǔ)限制,數(shù)據(jù)全部保存在自己的設(shè)備上。
相比公有云網(wǎng)盤,安全性更高,也更符合企業(yè)數(shù)據(jù)合規(guī)要求。
豐富的應(yīng)用生態(tài)
Nextcloud 不僅是網(wǎng)盤,它還是一個(gè) 協(xié)作平臺(tái)。
你可以通過(guò)應(yīng)用市場(chǎng)安裝:
- 日歷、待辦任務(wù)、聯(lián)系人管理
- OnlyOffice、Collabora 在線文檔編輯
- Talk 在線音視頻會(huì)議
- 郵件、聊天、知識(shí)庫(kù)
- 密碼管理器、儀表盤等
全都可以自己部署,形成一個(gè)私有辦公平臺(tái)。
全平臺(tái)同步客戶端
Nextcloud 提供:
- Windows / macOS / Linux 桌面同步客戶端
- iOS / Android 移動(dòng)端
- Web 網(wǎng)頁(yè)端
可實(shí)現(xiàn)自動(dòng)同步文件,打造類似 OneDrive、Dropbox 的使用體驗(yàn)。
強(qiáng)大的權(quán)限與共享機(jī)制
支持:
- 用戶和用戶組管理
- 文件夾權(quán)限控制(讀寫/只讀/禁止共享等)
- 鏈接共享(帶密碼/有效期)
- 內(nèi)部分享與外部分享控制
非常適合企業(yè)協(xié)作、團(tuán)隊(duì)共享資料。
安全能力強(qiáng)
支持:
- HTTPS / 強(qiáng)制安全訪問(wèn)
- 兩步驗(yàn)證(2FA)
- 外部存儲(chǔ)加密
- 服務(wù)器端文件加密
- 審計(jì)日志、安全掃描
對(duì)企業(yè)來(lái)說(shuō)非常重要。
Nextcloud 使用場(chǎng)景
家庭私有云
- 自動(dòng)備份手機(jī)照片
- 家庭成員共享資料
- NAS 擴(kuò)展云功能
很多家用 NAS(如群暉、TrueNAS)都集成 Nextcloud。
個(gè)人開(kāi)發(fā)者或自由職業(yè)者
- 存放項(xiàng)目資料
- 同步多臺(tái)電腦文件
- 作為 Obsidian/筆記同步后端
公司內(nèi)部文件管理系統(tǒng)
- 替代企業(yè)網(wǎng)盤
- 打造私有協(xié)作平臺(tái)
- 記錄會(huì)議、文檔、流程資料
小團(tuán)隊(duì)協(xié)作辦公
搭配 OnlyOffice/Collabora,可做成:
- 內(nèi)網(wǎng)文檔中心
- 項(xiàng)目共享庫(kù)
- 在線協(xié)作文檔編輯平臺(tái)
Nextcloud 架構(gòu)(簡(jiǎn)要說(shuō)明)
Nextcloud 本質(zhì)是一個(gè) PHP 應(yīng)用,需要:
- Web 服務(wù)器(Apache/Nginx/FPM)
- 數(shù)據(jù)庫(kù)(MySQL/MariaDB/PostgreSQL)
- 文件存儲(chǔ)(本地/外置/NFS/對(duì)象存儲(chǔ))
使用 Docker 部署時(shí),這些組件一般通過(guò)容器方式隔離運(yùn)行:
nextcloud容器 → 提供應(yīng)用服務(wù)mysql容器 → 提供數(shù)據(jù)庫(kù)
其他可選容器:
- Redis(提高性能)
- OnlyOffice(文檔協(xié)作)
- Collabora(文檔協(xié)作)
- Caddy/Nginx(反向代理 + HTTPS)
這種結(jié)構(gòu)清晰、易擴(kuò)展,適合生產(chǎn)部署。
部署架構(gòu)圖

下面我?guī)湍阌?非常簡(jiǎn)潔明了、適合放進(jìn)博文里的方式 說(shuō)明一下你生成的這一張 Nextcloud 部署架構(gòu)圖。
架構(gòu)說(shuō)明
Nextcloud 應(yīng)用層(Web)
- 負(fù)責(zé)處理用戶的所有 Web 請(qǐng)求
- 執(zhí)行核心業(yè)務(wù)邏輯(文件管理、同步、用戶權(quán)限)
- 對(duì)數(shù)據(jù)庫(kù)、存儲(chǔ)進(jìn)行讀寫操作
- 在 Docker 中通常對(duì)應(yīng)
nextcloud容器
數(shù)據(jù)庫(kù)(MySQL / MariaDB)
- 存儲(chǔ)用戶信息、文件元數(shù)據(jù)、系統(tǒng)配置
- Nextcloud 本身不會(huì)把文件存在數(shù)據(jù)庫(kù)
- 在 Docker 中對(duì)應(yīng)
mysql容器
文件存儲(chǔ)(Storage)
- Nextcloud 的實(shí)際文件(上傳內(nèi)容)都保存在這里
- 可以是:本地磁盤、掛載目錄、NAS、NFS
- Docker Compose 中通常通過(guò)
volumes掛載
反向代理(Reverse Proxy,選用)
- 可使用 Nginx / Caddy / Traefik
- 用于實(shí)現(xiàn) HTTPS、域名訪問(wèn)、多服務(wù)路由
- 生產(chǎn)環(huán)境通常建議加上,但基礎(chǔ)環(huán)境可以不必
用戶訪問(wèn)(LAN / Internet)
- 用戶可通過(guò)瀏覽器、PC 客戶端、手機(jī) App 訪問(wèn)
- 若通過(guò) Internet,需要反向代理 + HTTPS
- 若僅在局域網(wǎng)使用,直接訪問(wèn)服務(wù)器 IP 即可
一句話總結(jié)
Nextcloud 負(fù)責(zé)業(yè)務(wù)邏輯 → MySQL 負(fù)責(zé)數(shù)據(jù) → Storage 負(fù)責(zé)文件 → Reverse Proxy 負(fù)責(zé)入口訪問(wèn) → 用戶通過(guò) Web 或客戶端使用。
整張圖清晰展示了 Nextcloud 的三大核心組件(Web、數(shù)據(jù)庫(kù)、存儲(chǔ))以及用戶訪問(wèn)路徑,是最標(biāo)準(zhǔn)的部署結(jié)構(gòu)。
使用 Docker Compose 部署 Nextcloud + MySQL(完整說(shuō)明)
下面的 docker-compose.yml 是一個(gè)最簡(jiǎn)可用版本的 Nextcloud 搭建方案,包含應(yīng)用容器(Nextcloud)與數(shù)據(jù)庫(kù)容器(MySQL 5.7)。并使用單獨(dú)的自定義橋接網(wǎng)絡(luò),使容器之間通信更穩(wěn)定、隔離性更好。
docker-compose.yml 說(shuō)明
最下邊有集成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
各服務(wù)說(shuō)明
MySQL 服務(wù)(db)
| 參數(shù) | 說(shuō)明 |
|---|---|
| image: mysql:5.7.34 | Nextcloud 最穩(wěn)定兼容的 MySQL 版本 |
| MYSQL_ROOT_PASSWORD | root 用戶密碼 |
| MYSQL_DATABASE | 自動(dòng)創(chuàng)建 nextcloud 數(shù)據(jù)庫(kù) |
| volumes | 將 MySQL 數(shù)據(jù)存儲(chǔ)在宿主機(jī),防止容器刪除后數(shù)據(jù)丟失 |
| ports | 宿主機(jī)通過(guò) 3307 端口訪問(wèn)數(shù)據(jù)庫(kù) |
| TZ | 設(shè)置容器時(shí)區(qū),避免時(shí)間差問(wèn)題 |
如果你打算 使用非 root 用戶訪問(wèn)數(shù)據(jù)庫(kù),可以取消注釋如下兩行:
# MYSQL_USER: nextcloud # MYSQL_PASSWORD: Orcy820User
Nextcloud 服務(wù)(app)
| 參數(shù) | 說(shuō)明 |
|---|---|
| ports: 8081:80 | 通過(guò)宿主機(jī) 8081 訪問(wèn) Nextcloud(http://IP:8081) |
| depends_on: db | 保證 MySQL 優(yōu)先啟動(dòng) |
| volumes | 掛載 Nextcloud 數(shù)據(jù)目錄,可以持久化上傳文件、配置等 |
| 數(shù)據(jù)庫(kù)環(huán)境變量 | 用于連接 MySQL |
注意:這里使用 root 用戶連接數(shù)據(jù)庫(kù):
MYSQL_USER=root MYSQL_PASSWORD=123123
生產(chǎn)環(huán)境建議使用專門的數(shù)據(jù)庫(kù)賬戶,會(huì)更安全。
網(wǎng)絡(luò)(nextcloud 網(wǎng)絡(luò))說(shuō)明
networks:
nextcloud:
driver: bridge
ipam:
config:
- subnet: 192.168.110.0/24
自定義網(wǎng)絡(luò)好處:
- 容器之間通過(guò) 容器名互相訪問(wèn)(例如 Nextcloud 用
MYSQL_HOST=db)。 - 網(wǎng)絡(luò)隔離更安全,不與默認(rèn)的
bridge混在一起。 - 避免容器跨網(wǎng)絡(luò)通信導(dǎo)致不穩(wěn)定。
這是一段常用的 Docker 網(wǎng)絡(luò)配置寫法,滿足大多數(shù)中小型部署需求。
目錄結(jié)構(gòu)建議
建議在宿主機(jī)準(zhǔn)備一個(gè)目錄:
/opt/nextcloud/ ├── docker-compose.yml ├── mysql_data/ # 自動(dòng)生成 └── nextcloud/ # 自動(dòng)生成
在目錄中執(zhí)行:
docker-compose up -d
即可啟動(dòng)。
訪問(wèn)方式
啟動(dòng)后:
- Nextcloud 頁(yè)面地址
http://服務(wù)器IP:8081
需要再docker-compose.yml里邊打開(kāi)prot的注釋
- MySQL 地址(如果需要外部連接)
服務(wù)器IP:3307
瀏覽器打開(kāi)地址









常見(jiàn)問(wèn)題與優(yōu)化建議
MySQL 權(quán)限不足、提示連接失???
確保 Nextcloud 與 MySQL 在同一網(wǎng)絡(luò)下(默認(rèn)已經(jīng)配置)。
檢查 MySQL 日志:
docker logs mysql_test
Nextcloud 性能慢?
建議開(kāi)啟 Redis 緩存(可后續(xù)擴(kuò)展 docker-compose),大幅提升性能。
容器刪除數(shù)據(jù)會(huì)丟失嗎?
不會(huì)。因?yàn)閽燧d了宿主機(jī)目錄:
./mysql_data ./nextcloud
數(shù)據(jù)是持久化的。
集成OnlyOffice功能
Nextcloud 原生支持與 OnlyOffice 整合,允許用戶直接在瀏覽器中在線編輯 Word、Excel、PowerPoint 文檔。要啟用這個(gè)能力,需要分別完成:
- 安裝 OnlyOffice Nextcloud 插件(onlyoffice app)
- 部署 OnlyOffice DocumentServer 服務(wù)
- 在 Nextcloud 后臺(tái)配置 DocumentServer 地址
下面將會(huì)詳細(xì)說(shuō)明
下載并安裝 OnlyOffice 插件
首先,到官方應(yīng)用中心下載與當(dāng)前 Nextcloud 版本對(duì)應(yīng)的 OnlyOffice 插件:
插件下載地址,下邊截圖中的那個(gè)地址
- 從 Nextcloud 官網(wǎng)找到 Stable channel 版本
- 下載插件包(例如:
onlyoffice.tar.gz)

- 將軟件包上傳到服務(wù)器后執(zhí)行:
tar -zxvf onlyoffice.tar.gz
解壓后將得到一個(gè) onlyoffice 目錄,需要將其放到 Nextcloud 的 apps 目錄中。
如果你的 Docker Compose 中 Nextcloud 的掛載路徑如下:
volumes: - ./nextcloud:/var/www/html
那么只需將插件移動(dòng)到:
./nextcloud/apps/
最終路徑應(yīng)為:
./nextcloud/apps/onlyoffice
設(shè)置權(quán)限
為了讓 Nextcloud 正常識(shí)別插件,需要為插件目錄設(shè)置正確權(quán)限:
chown -R 33:tape onlyoffice
(33 是 www-data 用戶,Nextcloud 容器內(nèi)常用的運(yùn)行用戶)
Nextcloud 啟動(dòng)它


部署 OnlyOffice DocumentServer(Docker)
OnlyOffice 要實(shí)現(xiàn)在線編輯文檔功能,需要額外運(yùn)行一個(gè)獨(dú)立的 DocumentServer 服務(wù)??梢酝ㄟ^(guò) 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" # 主機(jī)端 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
部署完成后通過(guò)瀏覽器訪問(wèn):
http://服務(wù)器IP:8082
若頁(yè)面能打開(kāi),DocumentServer 已正常工作。
打開(kāi)后復(fù)制下邊這個(gè)在服務(wù)器上執(zhí)行,獲取key


在 Nextcloud 中綁定 OnlyOffice
進(jìn)入 Nextcloud 后臺(tái)管理:
設(shè)置 → 管理設(shè)置 → ONLYOFFICE
找到:
Document Editing Service 地址
填寫:
http://onlyoffice:80
或你主機(jī)實(shí)際訪問(wèn)的端口:
http://服務(wù)器IP:8082
保存后,進(jìn)入 Nextcloud 文件頁(yè)面,創(chuàng)建一個(gè) .docx 或 .xlsx 文件,即可在瀏覽器中在線編輯。



驗(yàn)證與常見(jiàn)問(wèn)題
插件不顯示?
檢查權(quán)限:
chown -R 33:tape ./nextcloud/apps/onlyoffice
重啟容器:
docker compose restart app
提示 DocumentServer 不可用?
確保兩個(gè)容器在同一個(gè) network:
networks: - nextcloud
443/HTTPS 場(chǎng)景?
推薦用 Nginx/Caddy 做反代,綁定域名并開(kāi)啟 HTTPS,否則瀏覽器可能限制編輯。
至此,你的 Nextcloud 已具備完整的在線 Office 文檔協(xié)作能力。
使用獨(dú)立部署的數(shù)據(jù)庫(kù)怎么搞呢?
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 # 只需要把這個(gè)修改就行
networks:
- nextcloud
networks:
nextcloud:
driver: bridge
ipam:
driver: default
config:
- subnet: 192.168.110.0/24
總結(jié)
通過(guò)本文的介紹,我們完成了對(duì) Nextcloud 私有云的核心概念、適用場(chǎng)景、部署方式以及架構(gòu)設(shè)計(jì) 的整體梳理。從基礎(chǔ)認(rèn)識(shí)到實(shí)際落地,你已經(jīng)具備了搭建一套自用或團(tuán)隊(duì)使用的私有云平臺(tái)的完整能力。
文章先介紹了 Nextcloud 的優(yōu)勢(shì):開(kāi)源免費(fèi)、數(shù)據(jù)可控、安全合規(guī)、插件豐富、客戶端齊全,非常適合個(gè)人、家庭團(tuán)隊(duì)以及中小企業(yè)使用。隨后,我們給出了基于 Docker Compose 的最小可用部署方案,并詳細(xì)解釋了各組件的作用,包括應(yīng)用層、數(shù)據(jù)庫(kù)層以及存儲(chǔ)層。此外,我們還補(bǔ)充了 Nextcloud 的典型架構(gòu)圖,幫助你從全局視角理解系統(tǒng)組成。
整體來(lái)看,Nextcloud 的部署相對(duì)簡(jiǎn)單,但具備極強(qiáng)的可擴(kuò)展性:
- 可以增加 Redis 提升性能;
- 可以接入反向代理實(shí)現(xiàn) HTTPS 和域名訪問(wèn);
- 也可接入對(duì)象存儲(chǔ)或外接 NAS 實(shí)現(xiàn)大規(guī)模文件管理。
無(wú)論你是想用它同步多終端文件、打造家庭數(shù)據(jù)中心,還是搭建企業(yè)內(nèi)部文件管理系統(tǒng),Nextcloud 都是一套可控、穩(wěn)定、可擴(kuò)展的開(kāi)源解決方案。
如果你后續(xù)計(jì)劃進(jìn)一步優(yōu)化部署,如搭建 HTTPS、增加高性能緩存、整合文檔協(xié)作工具、提升數(shù)據(jù)庫(kù)性能等,也歡迎繼續(xù)擴(kuò)展。我可以根據(jù)你的場(chǎng)景幫助你完善完整的生產(chǎn)級(jí)架構(gòu)。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker使用過(guò)程中的一些注意事項(xiàng)
這篇文章主要為大家介紹了在使用Docker過(guò)程中的一些注意事項(xiàng),就個(gè)人的一些經(jīng)驗(yàn)分享給大家,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-10-10
CentOS7 Docker防火墻的簡(jiǎn)單配置教程
這篇文章主要給大家介紹了關(guān)于CentOS7 Docker防火墻的簡(jiǎn)單配置方法,以及總結(jié)了docker在centos7下的一些坑,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12
centos7搭建docker私人倉(cāng)庫(kù)的方法(kubernetes)
這篇文章主要介紹了centos7搭建docker私人倉(cāng)庫(kù)的方法(kubernetes),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
Docker中鏡像構(gòu)建與緩存優(yōu)化實(shí)戰(zhàn)指南
在實(shí)際項(xiàng)目中,我們需要一套完善的鏡像構(gòu)建與緩存優(yōu)化方案,以提升構(gòu)建速度,降低帶寬與存儲(chǔ)成本,保證構(gòu)建穩(wěn)定性,下面我們就來(lái)看看具體實(shí)現(xiàn)方法吧2025-07-07
Docker中運(yùn)行nginx并掛載本地目錄到鏡像中的方法
這篇文章主要介紹了Docker中運(yùn)行nginx并掛載本地目錄到鏡像中的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
創(chuàng)建支持SSH服務(wù)的Docker鏡像的方法
這篇文章主要介紹了創(chuàng)建支持SSH服務(wù)的Docker鏡像的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
將spring boot應(yīng)用打入docker中運(yùn)行的實(shí)現(xiàn)方法
這篇文章主要介紹了將spring boot應(yīng)用打入docker中運(yùn)行的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07

