Collabora Online Development Edition(简称 CODE)已经是人尽皆知的免费在线文档编辑套件了,搭 Nextcloud 和 Cloudreve 的伙伴都会用上它,这样就能实现在线编辑文档了。
Docker 润 过程就不必赘述了,主要是记录反向代理和域名授权问题。
表演一个已经配置好的 CODE 实例。(Nextcloud 实例:https://team.luoxiaohei.org/)
反向代理
CODE 挺有趣,在 Docker 下会监听 9980 端口(TCP),所以别忘了映射出来。
在 WOPI 节点启用了 HTTPS 的情况下,本地反向代理也需要用 HTTPS!即使 SSL 证书不受信任。
例如,在 Nginx 绑定的虚拟主机启用了 HTTPS,用户也的确通过 HTTPS 访问进来的,这个适合如果反向代理到 http://127.0.0.1:9980,WOPI 会兴奋地对你的请求置之不理,然后 upstream prematurely closed connection while reading response header from upstream
,恭喜喜提 502。
能不能不用 HTTPS 呢?可以,但是在其他网站引用 HTTP 下的 CODE,又会喜提 Mixed contents。
所以,如果要用 HTTPS,需要反向代理本地时也用 HTTPS。就这么写:
proxy_pass https://127.0.0.1:9980;
CODE 会忽略证书错误。
AliasGroup 域名授权问题
不知道什么时候起,CODE 的 Docker 环境下改了一下域名授权。之前是通过在环境变量指定 domain=yang1120.com
就能让域名下的业务访问 CODE 的 WOPI 协议节点,然而现在更新成了 aliasgroup=<domian>
这样的形式。
官方文档提到的写法是这样的:
aliasgroup1=https://<domain>:443,https://<alias1>|<alias2>:443
研究了一会确实是没有研究透彻的。具体知道的就是,现在授权访问节点用了一个叫 aliasgroup 的参数,同时要加上访问协议和端口(即使是标准端口)。
看起来大概是,逗号分隔一条里面的不同域名,然而实际安装过程中,如果这么写:
aliasgroup1=https://drive.paimon.cloud:443,https://team.luoxiaohei.org:443
你会发现,只有 drive.paimon.cloud 可以访问 WOPI 节点,team.luoxiaohei.org 就不行了。日志中则说 No Match Hosts,说明 luoxiaohei.org 没被授权。
最后发现,如果这样写:
aliasgroup1=https://drive.paimon.cloud:443
aliasgroup2=https://team.luoxiaohei.org:443
欸,两个站就都可以访问 WOPI 节点了。看起来是把两个域名分开授权了。秉承着能跑就行的原则,已经懒于研究到底是怎么具体配置域名的了。