seafile私网映射公网解决办法的建议

相信很多朋友选择seafile搭建私有云,而不使用免费的互联网云盘,如百度云、115网盘等,是为了数据安全、防止外泄等原因。
在内网部署好seafile服务器后,为了使用方便,在外可随时随地的享用私有云盘,那么将内网映射到公网的需求是非常必要的。
我在使用过程中发现官方给的映射方法非常有局限性,
1、做NAT的设备必须支持NAT loopback,将服务器SERVICE_URL和FILE_SERVER设置为公网IP,所有功能才能正常使用。
局限:其实不是所有支持NAT的设备都支持NAT LOOPBACK,遇到这种设备,这个方法不可以,我就遇到了。
2、互联网出口设备不支持NAT LOOPBACK的情况,自己注册XXX域名,将公网IP绑定到这个域名,把SERVICE_URL和FILE_SERVER的地址配置为域名,在内网搭建一台DNS服务器,将XXX域名解析到seafile服务器内网IP。内网的终端都使用内网DNS。这样内网和公网都能正常使用。
局限:必须有互联网域名,还要多一台内网DNS服务器。

其实有更好的解决办法,如果官方愿意对客户端做点小修改的话。
服务器SERVICE_URL设置为内网IP,FILE_SERVER设置为/seafile ,互联网出口按常规方法做NAT,就可以了,设备不需要支持NAT loopback。 内网访问使用内网IP,互联网访问使用公网IP。
我已这样测试过,WEB页面没问题。但是客户端上传、下载文件就有问题了。我猜应该是客户端程序里文件传输调用不到服务器地址,识别不了/seafile这个地址,如果调用的是登陆客户端时配置的服务地址+/seafile 就能正常使用了。
我现在测试过WEB能正常使用,安卓客户端和MAC客户端可正常登陆浏览目录,但是不能上传下载文件。
上传中…

客户端下载文件报错截图

NAT loopback解决的是内网也可以使用公网IP或者对应公网IP的域名来访问DNAT的服务吧。楼主如果想把文件服务器设置成为 SERVICE_URL/xxx的模式,可以在seafile前端部署nginx。 但是没有NAT loopback,内网依然无法用公网IP或者对应公网IP的域名。

怎么说呢,我例出的几个方法都亲自测试过。我觉得这就是需要官方修改源代码,能把复杂的问题简单化是最好的。

我看了下,你在内网用内网IP,这个肯定是ok的啦。我是用域名,域名指向的是公网IP,内网不单独设置DNS,所以必须要NAT loopback。

用nginx部署前端的方法你可以试一试,客户端我从公网进来访问是ok的

因为我这的出口设备不支持NAT LOOPBACK所以才想了那么多方法测试。我这环境中其它的业务都是这么做映射全正常,就这个的客户端用着不正常。