用海外云服务器搭建 ONLYOFFICE Docs 在线文档协作服务器(2026最新版)

📅 · ChengziCloud - 一站式云端服务

Meta Description: 手把手教你在海外云服务器上用 Docker 部署 ONLYOFFICE Docs(Document Server)自建在线文档协作系统,实现在浏览器里实时协同编辑 Word/Excel/PPT/PDF;含 JWT 安全加固、Nginx 反向代理 + Let's Encrypt HTTPS、与 Nextcloud 集成、备份升级与安全停机、CentOS 7 与 Ubuntu 选型避坑,附 DigitalOcean / AWS Lightsail / 阿里云国际版 / 腾讯云国际版 服务器配置与价格对照表及 12 条常见问题 FAQ。

> 关键词:ONLYOFFICE Docs 部署、Document Server 搭建、在线文档协作、自建 Office 套件、Docker 部署教程、海外云服务器、Nginx 反向代理、Let's Encrypt SSL、Nextcloud 集成、协同编辑服务器

前言

团队里总有那么一份「最新版」的预算表:A 改完发到群里,B 下载改完又发一版,C 在旧版上继续加两行,最后没人知道哪一份才是真的。共享网盘能解决「文件放哪」,却解决不了「几双手同时改同一份文件」——你需要的是一个在线 Office 内核,让所有人打开的是同一份文档、看到的是同一个光标。

ONLYOFFICE Docs(安装包名 Document Server)就是干这件事的:它是一个开源(GNU AGPL v3.0)的在线办公套件,提供文本文档、电子表格、演示文稿、表单、PDF 与图表的浏览器端编辑器,完全兼容 Office Open XML 格式(.docx / .xlsx / .pptx),并支持两个人、五个人、十个人同时在一个文档里打字、评论、修订、聊天。它最被低估的一点是:它本身不存储你的文件——它只提供「编辑器内核」,文件继续躺在你自己的 Nextcloud、Seafile 或业务系统里,它通过 API 把文件「借」出来渲染。也就是说,你的文档数据从头到尾都在你自己的服务器上,不经过任何第三方云。

很多人的第一反应是「我直接用 Google Docs / Office 365 不就好了」。但对跨境团队、外贸公司、开发团队来说,这三个问题绕不开:数据主权(合同、报价、设计稿不想放在别人家的服务器上)、访问稳定性(Google 服务在部分地区不可达)、成本(按人头/按年的订阅费随人数线性上涨)。一台 2 核 4G 的海外云服务器,就能把整套协作编辑系统永久跑起来。

本文把搭建全过程拆成可以直接复制执行的命令:从选服务器、装 Docker、写 Compose、配 JWT 加固,一路做到 Nginx 反代加 HTTPS、与 Nextcloud 集成、备份升级与「安全停机」,最后附上 12 条常见问题。即使你只会基本 Linux 操作,也能一次跑通。

> 💡 推荐部署方案:本文全部步骤都可在阿里云国际版 / AWS / 腾讯云国际版的海外轻量服务器上完成。通过 5.chengzicloud.cloud 购买海外云服务器,可享专属折扣与中文技术支持,同一台机器还能顺带跑 Nextcloud 网盘、博客等其他自建服务,边际成本几乎为零。

一、先划边界:ONLYOFFICE Docs 和你已经在用的方案差在哪

在掏钱之前先想清楚一件事:ONLYOFFICE Docs 不是「又一个网盘」,也不是「又一个聊天工具」。它的前提条件和站内已经写过的那些自建服务完全不同,这一节先把它和相邻方案切开,避免重复建设。

| 方案 | 回答的核心问题 | 前提条件 | 它不解决的问题 | |---|---|---|---| | ONLYOFFICE Docs | 多人怎么在浏览器里同时编辑同一份 Office 文档 | 你要的是「编辑器内核」,且要有一个宿主来存文件(Nextcloud / Seafile / 业务系统) | 它自己不做文件网盘、不做用户权限体系(这些交给宿主) | | Nextcloud | 文件怎么多端同步、共享、管理权限 | 你要一个私有网盘 | 自身不含 Office 渲染内核,要外挂 OnlyOffice / Collabora | | Paperless-ngx | 扫描件里的文字怎么搜得到 | 你要一条「扫描→归档→检索」的文档流水线 | 不做实时协同编辑 | | Rocket.Chat | 团队怎么实时沟通 | 你要一个同步 IM | 不做文档编辑 | | Discourse | 公开社区怎么沉淀讨论 | 你要一个异步、可被搜索的社区 | 不做文档协作 | | Google Docs / Office 365 | 不想运维怎么协作 | 你接受数据放在别人云上 | 数据主权、跨境访问、长期成本都不在你手里 |

看懂这张表,你就明白本文的定位:ONLYOFFICE Docs 是「编辑层」,它天生要和「存储层」搭配工作。 你可以只装它、用自带的示例页测编辑,也可以把它挂到 Nextcloud 后面变成完整方案。本文两条路都会讲清楚。

二、ONLYOFFICE Docs 是什么,三个版本怎么选

ONLYOFFICE 官方把 Docs(Document Server)拆成三个版本,很多人一上来就踩坑——装了社区版才发现没有管理后台,或者稀里糊涂买了企业版。先把版本边界摆清楚:

| 对比项 | Community 社区版 🆓 | Enterprise 企业版 🏢 | Developer 开发者版 ⚙️ | |---|---|---|---| | 费用 | 免费 | 按采购计划付费 | 按采购计划付费(有免费试用) | | 许可证 | GNU AGPL v3.0 | 专有 | 专有 | | 建议用户数 | 最多 20 人(官方建议) | 按购买的计划 | 按购买的计划 | | 集群化 | ❌ 不支持 | ✅ 支持 | ✅ 支持 | | 管理后台 Admin Panel | ❌ 无 | ✅ 有 | ✅ 有 | | 移动端 Web 编辑器 | ❌ 无 | ✅ 有 | ✅ 有 | | 白标(换 logo) | ❌ 无 | ❌ 无 | ✅ 有 | | 文档转换 / 实时查看 / 双协同模式 | ✅ | ✅ | ✅ | | 评论、内置聊天、修订、版本历史、插件、宏 | ✅ | ✅ | ✅ | | Document Builder / Automation API | ❌ | ❌ | ✅ |

选型结论:个人、小团队(≤20 人)、自用或内部部署,Community 社区版完全够用,功能上和收费版的核心编辑能力几乎一致;只有当你需要集群扩容、管理后台、移动端 Web 编辑或白标时才需要付费版。本文以社区版为主线,因为它才是「用海外云服务器零成本搭一套」的主角。

> ⚠️ 一个常见误解:社区版「建议最多 20 人」不是硬性 License 限制,而是官方给出的性能/支持建议。真正的软肋是不支持集群化——单机跑得动,但别指望它像企业版那样横向扩展到几百人。

三、服务器选型:推荐配置与价格对照

ONLYOFFICE 官方给出的推荐系统要求是(来源:官方 Docker 镜像 README 的 Recommended System Requirements):

- 内存 RAM:4 GB 或更多 - CPU:双核 2 GHz 或更高 - Swap:至少 2 GB - 硬盘:至少 2 GB 可用空间(实际建议 40 GB 起,文档缓存很吃盘) - 系统:64 位 RHEL / CentOS 或其他兼容发行版(内核 ≥ 3.8),或 64 位 Debian / Ubuntu(内核 ≥ 3.8) - Docker:建议更新到最新版(官方撰写文档时点为 20.10.21)——因为镜像的基座是 ubuntu:24.04,过旧的 Docker 会有兼容问题

为什么内存是硬门槛? Document Server 内部同时跑着文档渲染服务、转换服务、PostgreSQL、RabbitMQ、Redis 一整套组件。2 GB 内存能勉强启动,但一到「多人同时打开表格 + 文档转换」就会 OOM。4 GB 是舒服的底线,8 GB 是团队协作的推荐值。 磁盘方面,每次打开文档都会产生缓存,转换服务也会占空间,40 GB 起步、80 GB 更稳妥。

下面是主流海外云厂商的常青配置与月付价格对照(采集于 2026 年 10 月,仅供选型参考):

| 云厂商 | 内存 | vCPU | 系统盘 | 月流量 | 月付价格(USD) | 适用场景 | |---|---|---|---|---|---|---| | DigitalOcean Droplet | 2 GiB | 1 vCPU | 50 GiB SSD | 2 TB | $12 | 2~3 人试水(低于官方推荐) | | DigitalOcean Droplet | 4 GiB | 2 vCPU | 80 GiB SSD | 4 TB | $24 | ⭐ 官方推荐配置,5~20 人 | | DigitalOcean Droplet | 8 GiB | 4 vCPU | 160 GiB SSD | 5 TB | $48 | 团队协作 + 同机跑其他服务 | | AWS Lightsail | 2 GB | 2 vCPU | 60 GB SSD | 3 TB | $12 | 试水档(低于官方推荐) | | AWS Lightsail | 4 GB | 2 vCPU | 80 GB SSD | 4 TB | $24 | ⭐ 官方推荐配置 | | AWS Lightsail | 8 GB | 2 vCPU | 160 GB SSD | 5 TB | $44 | 团队协作 | | 阿里云国际版 ECS | 2~4 GB | 1~2 vCPU | 40~80 GB ESSD | 按带宽/流量计费 | 区间约 $10~$30 | 需实价以官网为准 | | 腾讯云国际版 CVM / 轻量 | 2~4 GB | 1~2 vCPU | 40~80 GB SSD | 按带宽/流量计费 | 区间约 $10~$28 | 需实价以官网为准 |

> 声明:本文价格数据采集于 2026 年 10 月,仅为公开官网参考区间;DigitalOcean 与 AWS Lightsail 的价格为当日直读官方定价页的档位-规格对应值,阿里云国际版 / 腾讯云国际版因区域、计费模式(带宽 vs 流量)与促销差异较大,仅给出区间,下单请以官网结算页为准。金额单位均为美元(USD),不含税费。

选型一句话总结:数字记死「2 核 4G、80G SSD、放海外」即可。 对多数小团队,DigitalOcean $24 或 Lightsail $24 的那档就是官方推荐配置的甜点位——比买一两年的 Office 订阅还便宜,而且一次投入、长期可用。若你要在同一台机器上再跑 Nextcloud、博客、监控面板,直接上 8 GB/4 vCPU 的档($44~$48)。

> 💡 在 5.chengzicloud.cloud 购买阿里云国际版 / 腾讯云国际版海外服务器,可享专属折扣,同价位常常能拿到更高的带宽或流量包;一台机器同时承载在线文档协作、网盘与博客,性价比更高。

四、环境准备:装 Docker 与 Docker Compose

本文以 Ubuntu 22.04 / 24.04 LTS 为主(也是最推荐的系统),末尾会给 CentOS 用户的替代方案。以下命令全部可直接复制执行。

第 1 步:更新系统并安装依赖

`bash sudo apt update && sudo apt upgrade -y sudo apt install -y curl ca-certificates gnupg lsb-release `

第 2 步:安装 Docker(官方脚本,确保版本够新)

`bash curl -fsSL https://get.docker.com | sudo sh sudo systemctl enable --now docker `

第 3 步:验证版本(官方要求尽量新,务必 ≥ 20.10.21)

`bash docker --version

输出示例:Docker version 27.x.x, build ...

`

第 4 步:添加 2 GB Swap(官方要求,防止内存高峰 OOM)

`bash sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab free -h # 确认 Swap 一行不为 0 `

第 5 步:确认 Docker Compose v2 可用(Docker 官方脚本已自带插件)

`bash docker compose version

若报错,Ubuntu 可执行:sudo apt install -y docker-compose-plugin

`

> ⚠️ CentOS 7 用户注意:CentOS 7 已 EOL,且自带 Docker 版本偏旧、SELinux 常导致容器内进程无法启动。官方 README 明确指出:rpm 系发行版上偶尔会出现进程启动失败,可先试 sudo setenforce 0;若这样能解决,则要么长期关闭 SELinux(官方不推荐),要么干脆换 Ubuntu。 本文建议直接换 Ubuntu 22.04 / 24.04,比跟老内核较劲便宜得多。

五、部署 ONLYOFFICE Docs(完整步骤)

第 1 步:准备数据目录

把数据挂载到宿主机上,升级镜像时才不会丢数据:

`bash sudo mkdir -p /app/onlyoffice/DocumentServer/{logs,data,lib} `

第 2 步:生成一个 JWT 密钥

从社区版起,JWT 默认是开启的(JWT_ENABLED 默认 true),所以你必须准备一个密钥。生成一个随机串:

`bash cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 32; echo

复制输出的这一串,下面用 my_jwt_secret 代指

`

第 3 步:启动容器(docker run 一行版)

`bash sudo docker run -i -t -d -p 80:80 --restart=always \ --name onlyoffice-documentserver \ -e JWT_ENABLED=true \ -e JWT_SECRET=my_jwt_secret \ -v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \ -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \ -v /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice \ onlyoffice/documentserver `

参数说明:-p 80:80 把容器内的 80 映射到宿主机的 80(若 80 已被占用,改成 -p 8080:80,只改冒号左边);--restart=always 保证服务器重启后自动拉起;三个 -v 分别挂载日志、证书/数据、文件缓存。

第 4 步:验证启动

首次启动会初始化数据库,需要等 1~2 分钟。用内置健康检查确认:

`bash curl -f http://localhost:8000/info/info.json

返回 JSON 即表示服务就绪

docker ps | grep onlyoffice # 状态应为 Up `

浏览器打开 http://你的服务器IP/,看到 ONLYOFFICE Docs 欢迎页即成功。若容器反复重启,用日志定位:

`bash sudo docker logs onlyoffice-documentserver | tail -50 `

三种常见启动失败:① 80 端口被占用(改成 -p 8080:80);② 内存不足导致数据库连接失败(加到 4 GB 以上);③ 浏览器报「Connection refused」——多半是还没初始化完,再等 1~2 分钟。

第 5 步(推荐):改用 Docker Compose 管理

一行版命令太长、易错,生产环境建议用 Compose 文件。新建 /app/onlyoffice/docker-compose.yml:

`yaml services: onlyoffice-documentserver: image: onlyoffice/documentserver container_name: onlyoffice-documentserver environment: - JWT_ENABLED=true - JWT_SECRET=my_jwt_secret - JWT_HEADER=Authorization - JWT_IN_BODY=true ports: - '80:80' healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/info/info.json"] interval: 30s retries: 5 start_period: 60s timeout: 10s restart: always volumes: - /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice - /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data - /app/onlyoffice/DocumentServer/lib:/var/lib/onlyoffice `

启动、查看、停止三连:

`bash sudo docker compose up -d sudo docker compose ps sudo docker compose logs -f --tail=50 `

> 为什么 Compose 里建议把 JWT_IN_BODY 也设为 true? 因为它让 Token 除了走 HTTP 头,还能走请求体,兼容更多主机端集成方式。不过要记住——宿主端与 Document Server 的 JWT 密钥必须完全一致,否则每一个文档都会「打不开」并报 The document security token is not correctly formed。

六、Nginx 反向代理 + Let's Encrypt HTTPS

裸奔的 80 端口不能用于生产:JWT 令牌明文传输、浏览器提示不安全、集成到 Nextcloud 时被拒。正确做法是让 Nginx 在前面终止 TLS,反向代理到 Document Server。

方案 A:让容器自己签证书(最快,适合单机)

ONLYOFFICE 镜像内置了 certbot 自动签发能力,只要暴露 80 和 443 并传入两个环境变量即可:

`bash sudo docker run -i -t -d -p 80:80 -p 443:443 --restart=always \ --name onlyoffice-documentserver \ -e JWT_ENABLED=true -e JWT_SECRET=my_jwt_secret \ -e LETS_ENCRYPT_DOMAIN=docs.example.com \ -e [email protected] \ -v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \ onlyoffice/documentserver `

前提:域名 docs.example.com 的 A 记录要指向本机公网 IP,且 80 端口可被 Let's Encrypt 验证访问。成功后即可用 https://docs.example.com 访问。证书文件默认落在容器的 /var/www/onlyoffice/Data/certs/,通过挂载持久化。

方案 B:外部 Nginx 反代(推荐,能和其他站点共存)

如果你想在同一台机器上既跑 Nextcloud 又跑 ONLYOFFICE,就要用宿主机的 Nginx 统一入口。先让容器只监听本机端口:

`bash

修改 compose 的端口映射为仅本机

ports:

- '127.0.0.1:8080:80'

sudo docker compose up -d `

再写 Nginx 站点配置 /etc/nginx/conf.d/onlyoffice.conf:

`nginx server { listen 80; server_name docs.example.com; return 301 https://$host$request_uri; }

server { listen 443 ssl http2; server_name docs.example.com;

ssl_certificate /etc/letsencrypt/live/docs.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/docs.example.com/privkey.pem;

# 文档上传/转换需要大请求体 client_max_body_size 100M;

location / { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1;

# 以下三个头是 WebSocket 协同编辑的命脉,漏一个就会「一直转圈」 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host;

proxy_read_timeout 3600s; proxy_send_timeout 3600s; } } `

签发证书并重载:

`bash sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d docs.example.com sudo nginx -t && sudo systemctl reload nginx `

> 🔴 WebSocket 三个头是头号大坑:Upgrade、Connection "upgrade"、Host 缺任何一个,文档能打开但协作者的光标不同步、页面反复刷新。这是自建在线协作里最常见、也最难查的问题,务必照抄。 > > 🔴 client_max_body_size 也别忘:Nginx 默认只有 1 MB,用户上传一个带图的 PPT 就会被 413 拒掉。设成 100 MB 以上。

七、安全加固:三个必须知道的默认值

自建服务最容易「装完能跑就完事」,但 ONLYOFFICE 有几个默认值如果不懂,要么留了安全隐患,要么集成死活调不通。逐个说清:

1. JWT 默认就是开的——必须配密钥

社区版镜像里 JWT_ENABLED 的默认值是 true。这就是说:你不传 JWT_SECRET,容器会自动生成一个随机密钥,结果是——本身能跑,但任何外部系统(Nextcloud、你的业务后端)都拿不到这个随机密钥,导致「文档请求全部被拒」。所以生产部署的正确姿势是显式设置 JWT_SECRET 并把同一份密钥配到宿主端。

相关参数:

| 参数 | 默认值 | 说明 | |---|---|---| | JWT_ENABLED | true | 是否校验 JWT,默认开 | | JWT_SECRET | 随机值 | 校验用的密钥,必须两端一致 | | JWT_HEADER | Authorization | Token 走哪个 HTTP 头 | | JWT_IN_BODY | false | 是否允许 Token 走请求体(建议设 true 提高兼容性) |

2. 默认拒绝连接私网 IP——集成内网存储的头号坑

这是最容易踩、又最难查的一条:

| 参数 | 默认值 | 含义 | |---|---|---| | ALLOW_PRIVATE_IP_ADDRESS | false | 默认不允许 Document Server 去连接私有网段(10./172.16./192.168.)的存储服务 | | ALLOW_META_IP_ADDRESS | false | 默认不允许连接链路本地/元数据地址 |

症状:你把 Nextcloud 和 ONLYOFFICE 放在同一台机器的 Docker 网络里,Nextcloud 用内网地址(如 http://nextcloud:8080)作为文档存储,结果文档永远打不开、报连接错误。

修复:在 compose 环境变量里显式打开:

`yaml environment: - JWT_ENABLED=true - JWT_SECRET=my_jwt_secret - ALLOW_PRIVATE_IP_ADDRESS=true `

> 注意:这是刻意设计的安全默认值——防止被恶意利用去探测你服务器所在的内网。只有当你确实需要连内网存储时才打开,并且要确保那个内网服务本身有认证。

3. 其他值得知道的开关

| 参数 | 默认值 | 建议 | |---|---|---| | USE_UNAUTHORIZED_STORAGE | false | 若存储端用自签证书(如内网 Nextcloud),需设 true | | ADMINPANEL_ENABLED | false | 社区版无管理后台,保持关闭 | | EXAMPLE_ENABLED | false | 示例页会暴露信息,生产环境保持关闭 | | METRICS_ENABLED | false | 需要对接 Prometheus/StatsD 监控时才开(默认端口 8125) | | ONLYOFFICE_HTTPS_HSTS_ENABLED | true | HSTS 默认开,ONLYOFFICE_HTTPS_HSTS_MAXAGE 默认 31536000 秒 | | SSL_CERTIFICATE_PATH / SSL_KEY_PATH | /var/www/onlyoffice/Data/certs/tls.crt / .key | 用自带 HTTPS 时才需要 |

宿主机层面再补三刀:① 用 ufw / 安全组只放行 22、80、443,Document Server 容器不直接暴露 8000 等内部端口;② 把 JWT 密钥写进 .env 文件并 chmod 600,别写进会提交到 Git 的 compose;③ 开启自动安全更新 sudo apt install -y unattended-upgrades。

八、与 Nextcloud 集成:把「编辑内核」接上「存储层」

单独的 ONLYOFFICE Docs 只有一个示例页,真正好用要把它挂到宿主后面。最常见、最成熟的组合是 Nextcloud + ONLYOFFICE:Nextcloud 管文件与权限,ONLYOFFICE 管「打开即编辑」。

第 1 步:在 Nextcloud 应用商店安装连接器

以管理员登录 Nextcloud → 应用(Apps)→ 搜索并安装 ONLYOFFICE(应用名 onlyoffice)。

第 2 步:配置 Document Server 地址

进入 Nextcloud 设置 → ONLYOFFICE → 填入你的文档服务器地址:

- 文档编辑服务地址(Document Editing Service Address):https://docs.example.com - 若开启 JWT:在「高级设置」里填入与 Document Server 完全一致的 JWT_SECRET,并把「JWT 头」填成 Authorization - 若 Document Server 用自签证书,勾选「禁用证书校验」(对应宿主端的不信任自签证书选项)

第 3 步:验证连通

Nextcloud 的 ONLYOFFICE 设置页有一个「连接 Document Server」按钮。点它:显示绿色的 「ONLYOFFICE 已连接」 即成功。

> 🔴 集成失败排查顺序(90% 的问题出在前三条): > 1. JWT 密钥不一致 → 报 The document security token is not correctly formed; > 2. ALLOW_PRIVATE_IP_ADDRESS 未打开 → 内网地址的 Nextcloud 连不上,文档永远转圈; > 3. Nginx 少了 WebSocket 头 → 能打开但协同失效; > 4. HTTPS 证书链不完整 → 报 self-signed certificate 一类错误。 > > 同一个 ONLYOFFICE 也可以服务多个宿主:Nextcloud、ownCloud、Seafile、Odoo、Moodle 都在官方连接器列表里,一台 Document Server 可以同时接多个前端系统,非常省成本。

九、备份、升级与「安全停机」(最容易被忽略的一节)

ONLYOFFICE 有一个和别的自建服务完全不同的机制,官方在 README 里专门用一段警告说明,值得单独列出来:

> Document Server 只在「所有编辑该文档的用户都关闭文档」之后,才会保存文档。 也就是说,如果张三还在编辑一份合同,此时你重启服务器,那份未保存的改动会丢失。

正确做法:每次升级、重启、停机维护前,先执行官方提供的脚本,强制断开所有编辑者,让文档强制保存:

`bash sudo docker exec onlyoffice-documentserver documentserver-prepare4shutdown.sh `

> ⚠️ 官方明确提示:执行该脚本 + 断开用户最长可能耗时约 5 分钟,请耐心等待其返回,不要中途 kill 容器。

备份清单(挂载到宿主机的部分是备份对象):

`bash

需要备份的目录

/app/onlyoffice/DocumentServer/logs # 日志 /app/onlyoffice/DocumentServer/data # 证书与数据 /app/onlyoffice/DocumentServer/lib # 文件缓存 `

一条 tar 命令搞定(建议做成每日 cron):

`bash sudo tar czf /backup/onlyoffice-$(date +%F).tar.gz \ /app/onlyoffice/DocumentServer/data \ /app/onlyoffice/DocumentServer/lib `

升级步骤(数据在宿主机上,所以升级很安全):

`bash

1) 先安全断开编辑者

sudo docker exec onlyoffice-documentserver documentserver-prepare4shutdown.sh

2) 拉取新镜像并重建

sudo docker compose pull sudo docker compose up -d

3) 验证

curl -f http://localhost:8000/info/info.json `

> ⚠️ 重建容器后必须核对 JWT_SECRET 没变。如果你用 docker compose down 销毁过容器又手滑删了 .env,Document Server 会生成新的随机密钥,然后所有集成瞬间失效——这是「升级后文档全打不开」的最常见根因。

十、性能调优与监控

1. 内存与并发:社区版不支持集群,单机性能的关键是内存。4 GB 支撑 5~20 人日常协作,峰值(比如 10 人同时打开大表格)建议上到 8 GB。用 docker stats 实时看占用:

`bash docker stats --no-stream onlyoffice-documentserver `

2. 磁盘 I/O:文档缓存与转换很吃磁盘,务必选 SSD / NVMe(前面价格表里的档位都是 SSD),别用机械盘。

3. 内置插件:编辑器自带拼写检查、AI 助手、深色模式、插件市场,PLUGINS_ENABLED 默认开(true),不需要可以关掉省资源。

4. 监控指标:需要接 Prometheus/StatsD 时打开:

`yaml environment: - METRICS_ENABLED=true - METRICS_HOST=localhost - METRICS_PORT=8125 - METRICS_PREFIX=ds. `

站内已有 Uptime Kuma 可用性监控 与 Grafana Loki 日志聚合 的完整教程,可以直接把本机的 :8000/info/info.json 挂进 Uptime Kuma 做存活探测,日志则从宿主机 /app/onlyoffice/DocumentServer/logs 采集。

5. 请求体积与超时:Nginx 侧调大 client_max_body_size(上文已设 100M)与 proxy_read_timeout(协同长连接要设到 3600s 级别),否则大文件上传和长时间编辑会被中断。

常见问题 FAQ

Q1:ONLYOFFICE Docs 是免费的吗?能商用吗?

Community 社区版免费,许可证是 GNU AGPL v3.0,可以自用、也可以商用;官方对社区版的建议是「最多约 20 人」。如果你需要集群化、管理后台 Admin Panel、移动端 Web 编辑器或白标,则要用 Enterprise / Developer 付费版——这几个能力社区版一律没有。

Q2:社区版和企业版的核心区别是什么?我该怎么选?

看第二节的对比表。一句话:编辑能力几乎一样,差别在「规模化」和「管理」。个人、小团队(≤20 人)用社区版;要横向扩容、要集中管理后台、要白标集成到自己产品里,才升企业版/开发者版。

Q3:CentOS 7 能装吗?会不会有 glibc 问题?

不会有 glibc 问题。 Document Server 官方镜像是全容器化的(基座 ubuntu:24.04),宿主机只要内核 ≥ 3.8、Docker 版本够新即可,宿主机的 glibc 2.17 完全不参与。但 CentOS 7 已经 EOL,且官方 README 明确提到 rpm 系发行版上容器内进程偶尔启动失败,可先试 sudo setenforce 0 判断是否为 SELinux 所致。本文强烈建议直接用 Ubuntu 22.04 / 24.04。

Q4:容器一直重启(restarting),怎么排查?

按顺序查:① sudo docker logs onlyoffice-documentserver | tail -50 看报错;② 是不是内存不足(2 GB 会 OOM,加到 4 GB);③ 80 端口是否被占用(改 -p 8080:80);④ 首次启动要初始化数据库,耐心等 1~2 分钟再判断。

Q5:浏览器打开一片空白 / 一直转圈,文档加载不出来?

两个方向:① 若是反代后出现,检查 Nginx 是否漏了 Upgrade / Connection "upgrade" / Host 三个头——这是协同编辑的命脉;② 若是集成 Nextcloud 时出现,八成是 ALLOW_PRIVATE_IP_ADDRESS 没打开(见 Q7)。

Q6:报 The document security token is not correctly formed 怎么办?

这是 JWT 密钥不一致的典型报错。请确认:宿主端(Nextcloud/业务系统)填的 JWT_SECRET 与 Document Server 容器里的 JWT_SECRET 一字不差;JWT_HEADER 与宿主端配置的 Header 名一致(默认 Authorization)。改动后两端都要重启生效。

Q7:Nextcloud 和 ONLYOFFICE 装在同一台机器上,文档却打不开?

这是最经典的坑:Document Server 默认拒绝连接私有网段 IP(ALLOW_PRIVATE_IP_ADDRESS 默认 false)。在 compose 里加上 - ALLOW_PRIVATE_IP_ADDRESS=true 后重建容器即可。这是有意为之的安全默认值,用完记得评估风险。

Q8:支持中文文档吗?中文会不会乱码或字体缺失?

支持。ONLYOFFICE 对中文(简体/繁体)的编辑与显示没问题。若发现个别字体缺失,把中文字体(如思源黑体 .ttf)拷进容器的 /usr/share/fonts 并执行 documentserver-generate-allfonts.sh 重新生成字体缓存即可;GENERATE_FONTS 默认 true,重启时也会自动重建。

Q9:手机上能用吗?

社区版的移动端 Web 编辑器不可用(这是 Enterprise / Developer 版的能力)。但你可以用官方移动 App(iOS/Android 的 ONLYOFFICE Documents)通过宿主系统(如 Nextcloud App)打开文档,体验同样完整。

Q10:怎么改访问端口?比如 80 被占用了。

改端口映射时只改冒号左边:-p 8080:80,容器内部永远是 80。改完 docker compose up -d 重建即可。注意反代配置里的 proxy_pass 要跟着改成新端口。

Q11:升级/重启前需要做什么?会不会丢数据?

会丢。 官方机制是「所有编辑者关闭文档后才保存」。停机维护前务必先跑:

`bash sudo docker exec onlyoffice-documentserver documentserver-prepare4shutdown.sh `

脚本 + 断开用户最长可能耗时约 5 分钟,等它返回再操作。

Q12:ONLYOFFICE 和 Collabora Online 该选哪个?

两者都是开源的在线 Office 内核,都能挂到 Nextcloud 后面。经验判据:想要与 .docx/.xlsx 的 Office 兼容性最高、界面最接近桌面版 Office,优先 ONLYOFFICE(它原生以 OOXML 为核心格式);若你的团队更强调「纯粹基于 LibreOffice 内核、整套更轻量」,则 Collabora 也是合理选择。本站已有 Nextcloud 私有云盘教程,两条路都可以接。

Q13:一台服务器能同时服务多个前端系统吗?

可以。同一个 Document Server 可以同时挂 Nextcloud、ownCloud、Seafile、Odoo、Moodle 等多个宿主,官方连接器列表里都支持。这也是自建最省钱的一点——一个内核,多个前台。

Q14:文档数据存在哪里?会被上传到 ONLYOFFICE 官方吗?

不会。 Document Server 只做「编辑器渲染」,文档本体始终由你的宿主系统(Nextcloud/业务系统/对象存储)保存,数据流全程在你的服务器内。官方只提供软件,不托管你的文件。

结语

ONLYOFFICE Docs 的价值不在于「又多了个在线编辑器」,而在于它让「数据主权」和「Office 级协作」第一次能在同一台机器上同时成立:文件不离开你的服务器,团队却能在浏览器里像用 Google Docs 一样实时改同一份文档。整套搭建的难点其实只有四个:给够内存(4 GB 起)、把 JWT 密钥两端配对、反代别漏 WebSocket 三个头、停机前先跑 prepare4shutdown 脚本。剩下的,交给官方镜像就行。

如果你还在纠结服务器选哪家,记住本文的核心判据:2 核 4G、80 GB SSD、放海外(访问稳定、无需备案)。按这个标准选出的一台机器,就能把上述整套协作系统稳稳跑起来,还能顺带承载网盘、博客与监控服务。

> 💡 通过 5.chengzicloud.cloud 购买阿里云国际版 / AWS / 腾讯云国际版海外服务器,可享专属折扣,一台机器同时承载在线文档协作、Nextcloud 网盘与监控服务,性价比更高。

延伸阅读:

- Nextcloud 私有云盘部署教程:文件同步与共享 - Paperless-ngx 自建文档管理系统(OCR 全文检索) - Docker + Portainer 容器可视化管理平台部署 - Nginx 反向代理 + Let's Encrypt SSL 完整配置教程 - Rocket.Chat 自建团队即时通讯部署教程 - 服务器备份与灾难恢复实战指南

> 本文由 5.chengzicloud.cloud 提供,点击访问首页了解更多海外云服务器部署方案和专属优惠。