ONLYOFFICE是由 Ascensio System SIA 推出的一款功能强大的在线协作办公套件,包括文档(Word)、电子表格(Excel),演示文稿(PowerPoint)和表单(Forms)编辑器,并且在最新的7.5版本中,还添加了PDF编辑器,都在同一个软件。在7.1版本以上,ONLYOFFICE还可以免费把PDF转Word。
不仅提供了 桌面、移动端应用,还支持 集成/内嵌 到 第三方系统 内部(内嵌示例)。

官网:https://www.onlyoffice.com/
开源地址:https://github.com/ONLYOFFICE
正如上篇文字所说,社区版有一个很大的限制就是,只能20人同时在线使用。
如果你要解除这个限制,要么多节点搞集群,要么付费,或者国内正常操作,破解。
但是这套软件的破解,绝对不是说它是开源的,你就能直接破解的。
但是,有人去做这件事,Docker仓库中就有人分享了这么一个镜像,而且它还是跟着主版本实时更新的,地址:
https://hub.docker.com/r/thomisus/onlyoffice-documentserver-unlimited
截止发稿时2026年1月31日,版本为: Version: 9.2.1.1。
那我直接拉取安装是不是就可以了,当然不可以,不然你直接去搜去得了我还废什么话。
首先是拉取这个镜像
# 拉取最新版 docker pull thomisus/onlyoffice-documentserver-unlimited # 拉取指定版本 docker pull thomisus/onlyoffice-documentserver-unlimited:9.2.1
然后跑起来一个容器,这里把容器内的80端口映射为了主机的22331端口
sudo docker run -i -t -d -p 22331:80 \ -e ONLYOFFICE_HTTPS_HSTS_ENABLED=false \ --name my_onlyoffice \ thomisus/onlyoffice-documentserver-unlimited:latest
跑起来后,默认会挂载这些数据卷
数据卷 容器目录
/var/lib/docker/volumes/docker_id/_data /usr/share/fonts/truetype/custom
/var/lib/docker/volumes/docker_id/_data /var/lib/onlyoffice
/var/lib/docker/volumes/docker_id/_data /var/lib/postgresql
/var/lib/docker/volumes/docker_id/_data /var/lib/rabbitmq
/var/lib/docker/volumes/docker_id/_data /var/lib/redis
/var/lib/docker/volumes/docker_id/_data /var/log/onlyoffice
/var/lib/docker/volumes/docker_id/_data/var/www/onlyoffice/Data
默认安装后,其容器内部只启动了主服务,我们要进去,把所有服务都启动起来
# 进入容器 docker exec -it 9c8b27b40c8c /bin/bash # 启动核心服务 sudo service supervisor start # 启动软件各个模块 supervisorctl restart all # 查看启动状态 supervisorctl status
然后你会看到如下模块已经启动
ds:adminpanel RUNNING pid 112129, uptime 1:47:55 ds:converter RUNNING pid 112126, uptime 1:47:55 ds:docservice RUNNING pid 112125, uptime 1:47:55 ds:example RUNNING pid 112128, uptime 1:47:55 ds:metrics RUNNING pid 112127, uptime 1:47:55
这个时候,你仍然无法访问,因为Nginx没有启动,原因是这个镜像做的时候,Nginx里面使用了一个cache_tag模块,但是实际Nginx没有安装
下面我们来解决这个问题,首先是在容器内安装编辑工具
sudo apt update sudo apt install vim -y
查看是那个文件使用了这个模块
cd /etc/nginx # 查询文件中有cache_tag的 grep -R "cache_tag" . -n
然后会看到,/etc/nginx/includes/ds-docservice.conf 第6行,使用了$cache_tag变量
然后把那段配置改为
location ~ ^(?<cache>\/web-apps\/apps\/(?!api\/documents\/api\.js$).*)$ {
set $cache_tag ""; # 定义一个空值,保留下面配置结构不变
return 302 $the_scheme://$the_host$the_prefix/9.2.1-$cache_tag$cache$is_args$args;
}然后再启动nginx
sudo service nginx start # 启动 sudo service nginx stop # 停止 sudo service nginx status # 查看状态
如果你不知道这个容器的JWT秘钥是什么,直接在宿主机执行
sudo docker exec 9c8b27b40c8c /var/www/onlyoffice/documentserver/npm/json -f /etc/onlyoffice/documentserver/local.json 'services.CoAuthoring.secret.session.string'
剩下的操作,参考:OnlyOffice安装-官方镜像
延伸一点,我们直接写一个HTML来验证服务是否可用,当然其实你可以直接使用那个example,我这不是闲的吗,不想看到这就结束了。
写一个HTML页面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>OnlyOffice 编辑测试</title>
<!-- 引入 OnlyOffice 提供的 API JS -->
<script type="text/javascript" src="http://IP:22331/web-apps/apps/api/documents/api.js"></script>
<style>
html, body { height: 100%; margin: 0; }
#placeholder { height: 100%; width: 100%; }
</style>
</head>
<body>
<div id="placeholder"></div>
<script type="text/javascript">
// 注意:在正式生产环境,JWT Token 必须由后端生成
// 这里仅用于快速验证连接性
window.docEditor = new DocsAPI.DocEditor("placeholder", {
"document": {
"fileType": "docx",
"key": "test_file_",
"title": "测试文档.docx",
"url": "http://fileServerIp/需求规格说明书.docx"
},
"documentType": "word",
"editorConfig": {
"lang": "zh-CN",
"mode": "edit"
},
// 填写您的 JWT 密钥(需确保服务器开启了 JWT 校验)
"token": "" // 如果服务器开启了强制 JWT,需由后端根据密钥生成 Token 填入此处
});
</script>
</body>
</html>注意了,这里需要配置的token,不是JWT秘钥,不是上篇说的启动日志中的token,是需要拿着JWT秘钥去生成的。JWT秘钥刚才说了怎么获取。
然后访问:https://www.jwt.io/

重点是payload内容,Payload:填入你 HTML 代码中 new DocsAPI.DocEditor 的整个配置对象(包含 document 等)。
然后把生成的token写入到刚才html的token中处,打开这个html

说明服务是可用的。
Java小强
未曾清贫难成人,不经打击老天真。
自古英雄出炼狱,从来富贵入凡尘。
发表评论: