资讯动态

团队文档还在用网盘传来传去?用 OnlyOffice 搭一套自托管协作办公,再用 cpolar 把编辑入口开给异地同事

发布时间:2026/10/15 1:40:28 来源:尧图企业网站定制
团队文档还在用网盘传来传去用 OnlyOffice 搭一套自托管协作办公再用 cpolar 把编辑入口开给异地同事上周帮一个朋友的公司收拾烂摊子他们的季度方案居然在微信群里传到了第 7 版最后谁签的字都对不上。文件名从方案.docx改成方案-最终.docx又改成方案-最终-真的最终.docx。这种事只要团队超过三个人就一定会发生。所以我干脆给他们搭了一套自托管的在线协作文档核心就是 OnlyOffice几个人同时打开同一份文档光标在哪儿都看得见。这篇文章把整套流程写清楚本地用 Docker 起 OnlyOffice 加 Nextcloud异地同事打不开怎么办以及怎么用 cpolar 把编辑入口稳定地开出去。1 什么是 OnlyOffice这篇里它负责什么OnlyOffice 里我们真正要用的是Document Server也就是文档服务器。它本身不带文件管理只负责一件事把 Word、Excel、PPT 这类文档在浏览器里渲染出来并让多个人同时编辑。它和网盘的根本区别在于——网盘传的是文件副本每个人改自己那一份Document Server 是让所有人编辑同一份实体文件你在第 3 段打字我在第 5 段画表格互不打架。所以这套组合里两个组件分工很明确Nextcloud管文件、管用户、管权限相当于网盘 账号系统OnlyOffice Document Server只管打开和协同编辑两者通过 Nextcloud 应用市场里的 ONLYOFFICE 连接器对接配好之后在 Nextcloud 里点一个文档直接就在网页里打开了不用下载。2 环境准备装 Docker确认端口不打架先说硬件别拿一台 1G 内存的小机器硬扛。OnlyOffice Document Server 官方给的建议是双核 2GHz 以上、4GB 以上内存硬盘留出 40GB 左右。这还不算 Nextcloud 的开销所以我建议直接给 4GB 起步。系统用常见的 amd64 Linux 发行版就行Ubuntu 22.04 最省事。2.1 安装 Docker 和 Compose如果机器上还没 Docker用官方脚本装curl -fsSL https://get.docker.com | sudo sh sudo systemctl enable --now docker docker compose version最后那条命令如果输出了版本号说明 Compose V2 已经装好了。如果报docker: compose is not a docker command再单独装一次 compose-plugin。2.2 确认 80 端口空着Document Server 容器默认监听的是容器内的 80 端口。我们映射到宿主机时先避开常见的 80改用 8080免得和你机器上已有的 Nginx 撞车。sudo ss -tlnp | grep -E :80|:8080敲完没有任何输出说明这两个端口都空着可以放心往下走。如果 8080 被占了把后面配置里的 8080 换成 8181 就行记住要改两处compose 文件的端口映射还有 cpolar 的隧道目标。3 用 docker-compose 起 OnlyOffice 和 Nextcloud我在/opt/office下建目录把所有东西放在一起以后备份也方便。sudo mkdir -p /opt/office cd /opt/office sudo mkdir -p documentserver/logs documentserver/data documentserver/lib nextcloud接着写docker-compose.ymlservices: onlyoffice: image: onlyoffice/documentserver:latest container_name: onlyoffice-ds restart: always ports: - 8080:80 environment: - JWT_ENABLEDtrue - JWT_SECRETChangeThisToYourOwnSecret2026 volumes: - ./documentserver/logs:/var/log/onlyoffice - ./documentserver/data:/var/www/onlyoffice/Data - ./documentserver/lib:/var/lib/onlyoffice nextcloud: image: nextcloud:latest container_name: nextcloud restart: always ports: - 8081:80 environment: - NEXTCLOUD_TRUSTED_DOMAINS192.168.50.20 volumes: - ./nextcloud:/var/www/html敲黑板JWT_SECRET这一项别偷懒用默认值。OnlyOffice 从 7.2 版本开始会随机生成 JWT 密钥如果你不写死每次重启容器密钥都会变Nextcloud 那边就会报连接失败排查起来非常费劲。写一个自己记得住的字符串后面配连接器时要原样填进去。NEXTCLOUD_TRUSTED_DOMAINS先填你服务器的局域网 IP后面用 cpolar 的域名访问时还要再补一个这个后面说。配置文件写好后启动sudo docker compose up -d sudo docker compose ps第一次启动会慢一点Document Server 要初始化数据库。等一两分钟然后验证curl -I http://127.0.0.1:8080/welcome/返回200 OK说明 Document Server 起来了。浏览器打开http://服务器IP:8080/welcome/能看到 OnlyOffice 的欢迎页这一步就算通了。如果卡在Connection refused先别急着重装按这个顺序查容器是不是在Restarting状态docker logs onlyoffice-ds看日志、内存是不是不够、8080 是不是真被别的进程占了。Nextcloud 那边打开http://服务器IP:8081第一次会让你创建管理员账号填完进后台。4 在 Nextcloud 里装连接器把 OnlyOffice 接进来现在是两边都在跑但互相还不认识。这一步就是让 Nextcloud 知道自己可以调用 OnlyOffice。4.1 装 ONLYOFFICE 连接器用管理员账号登录 Nextcloud右上角头像 →应用在左侧分类里选Office text找到ONLYOFFICE这个应用点下载并启用。从后台应用面板装的好处是版本匹配不用自己手动传 zip 包。4.2 填写 Document Server 地址装完之后进入 头像 →管理设置→ 左侧找到ONLYOFFICE页面里有两块要填的内容。第一块是 Document Server 地址填http://服务器IP:8080/这里建议先用局域网 IP 验证别一上来就填 cpolar 的域名。先用局域网把链路打通公网那段单独调出问题的时候你能立刻分清是配置错了还是隧道错了。第二块是 JWT 密钥填的必须和第 3 步docker-compose.yml里JWT_SECRET的值一模一样。填完点保存页面下方会有一个连接状态提示。显示成功就说明 Nextcloud 能正常握手 Document Server 了。4.3 实测一份文档回到 Nextcloud 首页点 新建→文档随便建一个.docx。点开它如果直接在网页里加载出了 OnlyOffice 的编辑界面恭喜协同链路已经打通了。用另一个浏览器或者另一台电脑用另一个账号打开同一个文档你会看到对方的用户名在右上角显示两个人同时打字互不干扰。这个体验和在线文档差不多了区别只是文件在你自己机器上。如果打开文档时转圈然后报错优先检查三件事JWT 密钥两边是否一致、Document Server 地址末尾的斜杠有没有漏、服务器防火墙有没有挡住 8080。5 异地同事打不开怎么办用 cpolar 开一条 HTTPS 隧道到这一步局域网内的同事可以正常协作了。但异地同事呢他们的浏览器根本访问不到你内网里的192.168.x.x。这就是这套方案唯一剩下的缺口Document Server 只在内网可见外面进不来。解决思路是给 Document Server 的 8080 端口做一条公网映射让外网通过 HTTPS 地址访问到它然后把这个地址填回 Nextcloud 的连接器里。这一步用 cpolar 来做。5.1 安装 cpolarLinux 环境下一条命令搞定curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash装完检查服务状态cpolar version curl -s http://127.0.0.1:9200 /dev/null echo Web UI 正常5.2 绑定账号打开http://127.0.0.1:9200用 cpolar 账号登录。多数情况下登录完成后 authtoken 会自动写进配置文件。如果是纯命令行机器不方便开图形界面去后台手动拿 token登录https://dashboard.cpolar.com/login点顶部验证进入https://dashboard.cpolar.com/auth页面上你的隧道 Authtoken下面的那串就是。拿到后执行cpolar authtoken 你复制的那串token5.3 创建 HTTP 隧道指向 8080cpolar http 8080命令跑起来后终端会打出一个https://xxxx.cpolar.cn的公网地址。把本地服务换成你自己的实际端口就行别照着抄。这个地址就是异地同事打开文档的入口也是要填回 Nextcloud 的那个地址。5.4 把公网地址回填给 Nextcloud回到 Nextcloud 的 管理设置 → ONLYOFFICE把 Document Server 地址从局域网 IP 改成 cpolar 给的 HTTPS 地址注意末尾保留斜杠https://xxxx.cpolar.cn/同时如果你在 Nextcloud 的 config 里加过overwrite.cli.url或 trusted domains记得把 cpolar 的域名也加进NEXTCLOUD_TRUSTED_DOMAINS否则从公网访问 Nextcloud 本身会被拒。改完重启一次容器sudo docker compose restart nextcloud现在异地同事就能通过公网地址访问到 Document Server协同编辑链路外网也通了。这里提醒一句只把 Document Server 开出去、用 Nextcloud 做账号和权限控制比把整个 Nextcloud 也裸奔到公网要稳妥。暴露之前给 Nextcloud 账号都设上强密码和两步验证。6 固定二级子域名别让链接三天两头变上一步用的是 cpolar 免费套餐的随机地址有个很实际的麻烦——这种随机公网地址 24 小时内会变化。地址一变Nextcloud 里填的 Document Server 地址就失效了同事点开的链接也会变成打不开。对于要长期用的团队协作入口这显然不能接受。解决办法是用固定二级子域名需要基础套餐或以上。配置好之后你的入口地址就固定成类似https://office.cpolar.cn这样写进 Nextcloud 之后不用再改发给同事的链接也一直有效。这一步的价值不在于省事而在于稳定地址固定了Nextcloud 的连接器配置就不用反复动团队里也不用每次重新发一遍地址。如果你还想用自己的域名当入口那就需要专业套餐或以上要用到端到端 TLS 隧道也是这个级别。按需选就行先用基础套餐把二级子域名跑稳是最划算的起步方式。7 总结到这里一套能自己掌控的团队协作办公环境就搭完了。文件不出你的服务器账号和权限在自己手里异地同事通过一个固定的公网地址就能进来一起改文档不用再靠微信群传来传去。回顾一下几个关键动作用docker-compose同时起了 OnlyOffice Document Server 和 Nextcloud把文档服务器和文件管理分开在 Nextcloud 里装 ONLYOFFICE 连接器用 JWT 密钥把两边对接起来先局域网验证再上公网用 cpolar 给 Document Server 的 8080 端口开 HTTPS 隧道异地同事通过公网地址直接协同编辑上固定二级子域名让入口地址稳定下来避免链接失效这套方案最大的好处是可扩展以后要加人就在 Nextcloud 里新建账号要加机器就把 compose 文件复制一份改端口。入口地址始终是那个固定的域名团队规模怎么变都不用重新配一遍。下次再有人往群里甩最终版-真的最终版.docx你就可以把这条链接发给他了。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑