夜雨聆风学习资料网

ARTICLE · 1117489

还在被 WPS 弹窗广告和会员墙折磨?这套方案让你彻底告别付费墙

还在被 WPS 弹窗广告和会员墙折磨?这套方案让你彻底告别付费墙

还在被 WPS 弹窗广告和会员墙折磨?这套方案让你彻底告别付费墙

副标题:NAS 上 Docker 部署 ONLYOFFICE Docs,浏览器里就能在线编辑 Office 文档,文件全在自己手里

封面

一、先说说你是不是也中招了

打开 WPS,弹窗广告先敬你一杯;想换个模板,提示"开通会员";想把文档同步到云端,还得接受厂商的存储策略。很多人不是不想换,而是找不到一个能同时满足三件事的替代品:格式不能乱、功能不能阉割、数据必须握在自己手里。

Microsoft Office 是好东西,但授权费一年不便宜;LibreOffice 免费,但和 Office 格式的排版兼容性偶尔让人抓狂,折线图跑位、页眉错行是常事。

这时候 ONLYOFFICE 值得认真看一眼。它是一个开源办公套件,桌面版可以直接装在电脑上,文档服务器版(ONLYOFFICE Docs)则可以用 Docker 部署在你自己的 NAS 或小服务器上——浏览器打开就是一套完整的 Word、Excel、PPT、PDF 表单编辑器,没有广告,没有会员墙,docx/xlsx/pptx 原生兼容,最关键的是文件始终躺在你自己的硬盘里。

这篇教程就从零开始,手把手带你在 NAS 上把 ONLYOFFICE Docs 跑起来,并解决"在家能用、出门打不开"这个最后一步。全程不需要租云服务器,也不需要你有公网 IP。

二、ONLYOFFICE 到底是什么

ONLYOFFICE 界面

先纠正一个常见误解:ONLYOFFICE Docs 不是网盘,它是"在线文档编辑器引擎"。它的定位是给网盘提供在线预览和编辑能力——文件存在飞牛 fnOS、Alist、Nextcloud 这类系统里,编辑动作发生在浏览器里。

对比项

WPS

Microsoft Office

ONLYOFFICE

费用

免费版功能分层,高级功能需会员

商业授权,按年付费

开源免费,无功能锁

广告

免费版有弹窗推荐

无

无

数据存放

默认引导至厂商云端

本地或 OneDrive

完全本地,自主可控

docx 兼容性

好

原生

好,转换基于 OOXML

多人协同

支持

支持

支持,光标与评论同步

部署方式

客户端

客户端

客户端 / Docker 服务端

它的两个形态你可以这样理解:桌面版是装在自己电脑上的本地软件,断网也能用;文档服务器版是我们这次要部署的东西,跑在 NAS 上,局域网内任何设备用浏览器都能打开编辑。

⚠️ 官方自带的测试 Demo 页面只用于验证服务是否跑通,没有登录和权限控制,任何拿到链接的人都能上传修改文件。验证完记得关掉它,正式使用要对接自己的网盘系统。后面第四节会讲具体怎么关。

三、开始前的准备

3.1 确认 Docker 已经跑起来

ONLYOFFICE 的部署方式是 Docker,所以第一件事是确认你的 NAS 上 Docker 处于运行状态。登录飞牛 fnOS 的桌面,首页就能看到 Docker 的运行情况。

也可以 SSH 上去查一下:

docker -vsystemctl status docker

docker -v 能正常返回版本号、systemctl 输出里 Active: active (running),就说明环境没问题。

3.2 开启 SSH 远程登录

后面的命令都要在终端里执行,图形界面点不到这些操作。以飞牛为例:进入【设置】→【SSH】,打开服务开关,记下端口号(默认 22)。

SSH 设置入口

开启 SSH 服务

然后在电脑上用终端登录。Windows 用 PowerShell,Mac 用"终端"应用:

ssh 用户名@NAS的IP地址

SSH 登录

四、一键部署 ONLYOFFICE Docs

登录 SSH 之后,把下面这行命令完整复制进去执行:

docker run -d \-p 8063:80 \-e JWT_ENABLED=true \-e JWT_SECRET=onlyoffice@2026 \-v /app/onlyoffice/logs:/var/log/onlyoffice \-v /app/onlyoffice/data:/var/www/onlyoffice/Data \-v /app/onlyoffice/lib:/var/lib/onlyoffice \--restart always \--name onlyoffice \onlyoffice/documentserver

Docker 部署命令

初次运行会拉取镜像,几个 GB,等它跑完看到一串字母数字就说明容器创建成功了。几个参数有必要说清楚:

参数

作用

注意事项

-p 8063:80

宿主机 8063 端口映射到容器 80

端口被占用就换一个,比如 -p 8092:80

JWT_ENABLED / JWT_SECRET

开启接口鉴权并设置密钥

对接网盘时必须用同一个密钥,务必改成自己的复杂字符串

-v(三行)

挂载日志、数据、数据库目录

删容器重装时数据靠它保住,别删

--restart always

开机或服务重启后自动拉起

别省,不然 NAS 重启后服务就躺了

JWT_SECRET 这一项务必改掉。默认示例里的 onlyoffice@2026 只是占位符,公网暴露时用简单密钥等于没设密码。

部署完依次做三个验证。

① 看容器是否在跑

docker ps

列表里能看到 onlyoffice 这一行、状态是 Up,就对了。

docker ps 输出

② 看启动日志有没有报错

docker logs onlyoffice

正常情况下你会看到一串 [OK] 开头的初始化信息,末尾提示文档服务器已就绪。第一次启动需要几分钟做内部优化,耐心等完。

容器日志

③ 浏览器打开首页

在局域网内任意一台设备的浏览器里输入 http://NAS的IP:8063,能看到 ONLYOFFICE 的欢迎页面就说明部署成功了。

访问成功

五、验证功能:把测试 Demo 打开又关上

5.1 开启测试 Demo

新装的 ONLYOFFICE 默认把测试示例关着,需要手动启动。先查自己的容器 ID:

docker ps --format "{{.ID}} {{.Names}}"

拿到那串 ID 后执行:

sudo docker exec 容器ID sudo supervisord start ds:example

开启测试示例

执行完回到首页,橙色的【前往测试示例】按钮就能点了。点进去是一个极简的文档管理页,可以上传文件、在线编辑、新建文档。

5.2 为什么验证完必须关掉

官方反复强调"生产环境禁用示例页面",原因很实在:这个 Demo 没有用户登录、没有权限控制、代码没做安全加固,任何知道地址的人都能上传、查看、修改文件。如果你用 cpolar 把地址暴露到公网而不关它,等于开了一个公共文件读写入口。

验证完成后执行这条命令永久禁用:

sudo docker exec 容器ID sudo sed 's,autostart=false,autostart=true,' -i /etc/supervisor/conf.d/ds-example.conf

什么时候用:部署完想快速确认服务正常、看看 docx 能不能正常打开。

什么时候别用:当正式网盘、对外提供服务的入口。

5.3 完整体验一遍编辑功能

顺手测几个功能,确认引擎没问题:

上传文件——左侧【上传文件】按钮,选一个 docx 或 md 文件,页面会显示"加载文件 → 转化为 OOXML"两个步骤,转换完成后可以选编辑、阅读、嵌入三种视图。

上传文件

在线编辑——点【编辑】直接进入编辑器,工具栏和 Word 几乎一致,格式、样式、批注、修订都在。

编辑器界面

新建文档——【Create new】区域支持四种类型:Document 文档、Spreadsheet 电子表格、Presentation 演示文稿、PDF form PDF 表单,还能勾选是否附带示例内容。

新建文档区域

多人协作——在右上角切换模拟用户,就能看到多个光标同时出现在同一文档里,这就是后面异地协同的基础。

六、常见问题排查

端口被占用启动失败:报错里出现 port is already allocated,把命令里 8063 改成 8092 之类的空闲端口,访问地址也要跟着改成 http://IP:8092。

页面一直转圈加载不出来:多半是首次启动还在做内部优化,docker logs onlyoffice 看一下,等 [OK] 收尾即可,一般 3–5 分钟。

上传的文档排版错乱:先确认是 docx 而不是从 WPS 导出的其他私有格式;如果是 WPS 另存的 .et/.wps 文件,先在 WPS 里另存为 docx/xlsx 再上传。

重启后服务没了:确认容器启动参数里带了 --restart always,没有的话执行 docker update --restart always onlyoffice。

想重来一遍:docker rm -f onlyoffice 删除容器后重新执行部署命令,但不要删 `/app/onlyoffice` 目录,那里的数据还在。

七、写在最后

整套方案的逻辑其实很清晰:ONLYOFFICE 负责给你一套自己掌控的文档编辑引擎,

在动手之前有两点务必注意:一是测试 Demo 验证完就关掉;二是把 JWT_SECRET 换成你自己的复杂密钥。另外,如果你的公网地址要长期暴露给多人使用,建议先在前面套一层反向代理并加上访问认证。

关于内网穿透这件事本身,公网暴露的都是你自己的服务,选择正规、可信赖的服务商即可,优先看是否支持 HTTPS 加密、是否自带访问控制与流量统计。

相关学习资料