硬件环境
服务器在家里,有公网IP,通过DDNS和端口映射,通过域名实现访问Nextcloud。 内网:路由器做host映射服务器内网IP,内外网必须同端口。
坑
ONLYOFFICE Docs地址,这里如果设置内网,则在外面无法正常打开office;设置外网,则内网无法正常访问;
Nextcloud加了SSL证书,所以onlyoffice也必须https;
最开始内外网配置的不同端口,也各种问题绕了很久。
简而言之
Docker安装onlyoffice,docker-compose文件参考如下:
version:'3.3'
services:
documentserver:
ports:
- '10086:443'
restart: always
environment:
- JWT_SECRET=12345678
volumes:
- '/home/ubuntu/program/Onlyoffice/DocumentServer/logs:/var/log/onlyoffice'
- '/home/ubuntu/program/Onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data'
- '/home/ubuntu/program/Onlyoffice/DocumentServer/lib:/var/lib/onlyoffice'
- '/home/ubuntu/program/Onlyoffice/DocumentServer/db:/var/lib/postgresql'
image: onlyoffice/documentserver:7.1.1
附:onlyoffice官方文档,有特殊需求可参考自定义:Installing ONLYOFFICE Docs for Docker on a local server - ONLYOFFICE
2. 域名证书改名为onlyoffice.key和onlyoffice.crt(PEM格式证书直接改后缀即可),放在/home/ubuntu/program/Onlyoffice/DocumentServer/data/certs目录(证书过期会导致无法访问);
3. 路由器配置hosts映射到服务器内网IP,10086端口映射到外网;
4. 在Nextcloud的onlyoffice配置中,ONLYOFFICE Docs地址配置域名即可,比如我这里是:https://only.xxx.com:10086,关闭证书校验;
5. onlyoffice从7.2版本开始默认开启了JWT(即密钥),所以docker-compose.yml中记得加上环境变量JWT_SECRET=12345678,然后在nextcloud中配置该密钥,否则每次启动会随机生成密钥。 如果内外网通过https://only.xxx.com:10086都可用访问到onlyoffice页面,那就说明配置成功了,接下来在nextcloud中找到office文件试试,不管内网外网,就都可用在线打开office文件了。
遗憾
本来我是认为无论内网还是外网,nextcloud都是通过内网直接传输office文件给onlyoffice,然后解析之后回传nextcloud再打开呈现到前端,但是按照这种思路,一直没有配置成功(ONLYOFFICE的更多配置中关于“用于服务器内部的ONLYOFFICE Docs的地址”和“用于ONLYOFFICE Docs内部请求的服务器的地址”让我以为应该是达到这种目的而设计的)。不过目前总算是可用,我的效率最大化“强迫症”暂时就缓一缓,以后再来研究。
评论区