硬件环境
服务器在家里,有公网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: alwaysenvironment:- JWT_SECRET=12345678volumes:- '/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
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内部请求的服务器的地址”让我以为应该是达到这种目的而设计的)。不过目前总算是可用,我的效率最大化“强迫症”暂时就缓一缓,以后再来研究。
文章评论