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

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









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

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


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


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



驗證與常見問題
插件不顯示?
檢查權(quán)限:
chown -R 33:tape ./nextcloud/apps/onlyoffice
重啟容器:
docker compose restart app
提示 DocumentServer 不可用?
確保兩個容器在同一個 network:
networks: - nextcloud
443/HTTPS 場景?
推薦用 Nginx/Caddy 做反代,綁定域名并開啟 HTTPS,否則瀏覽器可能限制編輯。
至此,你的 Nextcloud 已具備完整的在線 Office 文檔協(xié)作能力。
使用獨立部署的數(shù)據(jù)庫怎么搞呢?
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
總結(jié)
通過本文的介紹,我們完成了對 Nextcloud 私有云的核心概念、適用場景、部署方式以及架構(gòu)設(shè)計 的整體梳理。從基礎(chǔ)認(rèn)識到實際落地,你已經(jīng)具備了搭建一套自用或團(tuán)隊使用的私有云平臺的完整能力。
文章先介紹了 Nextcloud 的優(yōu)勢:開源免費、數(shù)據(jù)可控、安全合規(guī)、插件豐富、客戶端齊全,非常適合個人、家庭團(tuán)隊以及中小企業(yè)使用。隨后,我們給出了基于 Docker Compose 的最小可用部署方案,并詳細(xì)解釋了各組件的作用,包括應(yīng)用層、數(shù)據(jù)庫層以及存儲層。此外,我們還補(bǔ)充了 Nextcloud 的典型架構(gòu)圖,幫助你從全局視角理解系統(tǒng)組成。
整體來看,Nextcloud 的部署相對簡單,但具備極強(qiáng)的可擴(kuò)展性:
- 可以增加 Redis 提升性能;
- 可以接入反向代理實現(xiàn) HTTPS 和域名訪問;
- 也可接入對象存儲或外接 NAS 實現(xiàn)大規(guī)模文件管理。
無論你是想用它同步多終端文件、打造家庭數(shù)據(jù)中心,還是搭建企業(yè)內(nèi)部文件管理系統(tǒng),Nextcloud 都是一套可控、穩(wěn)定、可擴(kuò)展的開源解決方案。
如果你后續(xù)計劃進(jìn)一步優(yōu)化部署,如搭建 HTTPS、增加高性能緩存、整合文檔協(xié)作工具、提升數(shù)據(jù)庫性能等,也歡迎繼續(xù)擴(kuò)展。我可以根據(jù)你的場景幫助你完善完整的生產(chǎn)級架構(gòu)。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Docker搭建Picsur圖床服務(wù)的實現(xiàn)
本文介紹如何在騰訊云輕量應(yīng)用服務(wù)器通過Docker部署Picsur圖床服務(wù),文中通過圖文示例步驟介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-07-07
關(guān)于docker啟動jenkins環(huán)境的問題
這篇文章主要介紹了docker啟動jenkins環(huán)境的問題,文中提到了jenkins基本工作原理及管理員密碼獲取方法,對docker啟動jenkins環(huán)境相關(guān)知識感興趣的朋友一起看看吧2022-04-04
docker搭建Hadoop?CDH高可用集群實現(xiàn)
本文主要介紹了docker搭建Hadoop?CDH高可用集群實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
docker中容器的網(wǎng)絡(luò)配置常用命令詳解
這篇文章主要介紹了docker中容器的網(wǎng)絡(luò)配置常用命令詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Docket Desktop安裝redis并設(shè)置密碼方式
在DockerDesktop中安裝Redis并設(shè)置密碼的步驟包括啟動Docker、拉取Redis鏡像、創(chuàng)建并運行Redis容器設(shè)置密碼、驗證容器運行、連接并驗證密碼,以及可選的持久化數(shù)據(jù)設(shè)置2025-03-03

