折腾NextCloud踩过的坑,以及尚未解决的问题。
第一坑:安装
我以为是Truenas的所有应用都跟emby一样,随便配置,无脑安装就行,然后…我就完美的掉第一个坑里了。我先扔个Truenas官方的NextCloud安装文档在这里。知道我为什么放着一段吗…对,人家让我创建4个数据集,存放不同的数据,我当初自己弄得时候全部无脑选的同一个文件夹…
还有就是那个命令,要自己手动添加ffmpeg
主机选项暂时保留默认Truenas的ip不动即可,证书选项暂时不要填,留空即可,配置https的坑还在后面…
其他选项按自己需求和官方文档填就彳亍。
第二坑:远程访问
一看NextCloud跑起来了,我傻乐着做了个端口映射,在浏览器里自信地敲入域名+端口号,回车!!~~……???访问不了?WTF?
额…没想啊…到这玩意是白名单模式…
这个要去Truenas的系统设置->命令行,cd到NextCloud的.../appdata/config
文件夹里,编辑config.php
。这个appdata
文件夹就是第一坑里要求创建那个数据集。Truenas创建的池挂载在/mnt
下,自己找一下就找到了,路径大致格式是/mnt/pool-name/nextcloud-dataset/appdata/config
打开config.php
,找到trusted_domains
段,默认配置如下。
'trusted_domains' =>
array (
0 => 'localhost',
1 => '192.168.2.4',
2 => '127.0.0.1',
3 => 'localhost',
4 => 'nextcloud-init-sync.lock',
5 => 'nextcloud',
),
手动添加第六个,把你解析的域名填进去,保存,重启NextCloud,就可以访问了。
enmmm…虽然这一段说的是远程访问,但下面就要讲证书了,我要先在这里提一嘴。这个时候你去内网用内网ip+端口号访问是没有任何问题,简单点讲,内网可以访问。而填上证书后就…(笑不出来QAQ)
第三坑:SSL证书
可以远程访问以后,我登陆上去简单看了一下,发现NextCloud自带一个类似于安全检查的东西。我稍微等它扫描了一会儿,得到了这么一堆玩意。
报了一堆警告和一堆错,我也不知道怎么搞。但不管怎么说,我看到了熟悉的故友——SSL在里面,咱上来就是干,先把这东西解决了再说其他的。
回到Truenas的应用编辑界面,证书勾选给Trunas申请的那张就行,跟emby同理,同域名可以用同一张证书。然后主机把内网ip改成你的域名,其他都不动,保存重启即可。
恭…喜?确实,你SSL有了,但是重新回到之前的安全检查,我…
我不死心,点去我们的安全检查,结果还是…
我焯!!
然后然后捏,恭喜!你内网访问也没了!!
现在去内网访问内网ip+端口号,会自动跳转到域名+端口号,相当于你的内网访问了你自己的公网ip,这是不可行的。
但也不是完全不可行。我又搜了一圈,发现有个东西叫做:NAT Loopback,即NAT环回。开启它就能实现上面的内网客户端通过内网本身的公网ip访问其他内网服务。OpenWrt里是有这个东西的,创建端口转发的时候也是默认开启的,但是我仍然无法成功访问NextCloud。于是我就去搜,以下是我参考的部分文档。
NAT 环回可以端口转发吗
关于Openwrt NAT环回问题的解决方法
NAT回流问题 #2103
我首先按着关于Openwrt NAT环回问题的解决方法尝试解决,结果无效。接着是NAT回流问题 #2103,同样没用,我的OpW使用的固件是eSir GDQ,当我去查看这个文件的时候,它里面的值已经都是0了,不需要我改。我目前这个是2023的R23.7.7 GDQ V2版本,并不是最新的2024版本,而我当时安装的时候PVE选的SeaBIOS,最新固件只有UEFI,而且升级还可能到这各种Bug,我就没升,于是放弃了尝试通过升级解决问题这条路。
当我尝试NAT 环回可以端口转发吗中的命令行解决方案时之前,我记得今年年头,寒假回家折腾这套东西的时候,我在手机上连软路由底下接的AP是可以通过域名访问内网服务的,为啥现在就不行了捏?我想着路由好久没重启,也许是一些奇奇怪怪的bug导致的,我就重启了一下。然后…连不上了…啥都连不上了,我去cf看DDNS也是一直没更新,还是重启路由之前的ip。无奈之下,我只能出门跑去机器所在地现场折腾,结果过去一看…
我公网ip没了!!!!!!!!!!!!!!!!!!!!!!!!!!
虽然这里跑题了,但我还是要说。我赶紧打电话给当时的装机师傅,一问,电信现在全面回收公网ip,他已经没权限操作了。我当时都快原地爆炸了。接着我直接10000问候人工,估计是我家宽带比较贵,人工态度还不错,没废话,直接记了个工程师工单等回电处理,不像某移动公网ip一问三不知,不过截至目前还没收到给我的回电。不给的话,那我必是工信部投诉走起,实在不行再说。
之后我就紧急把我的服务全部迁移至ipv6,区别和ipv4倒还不算太大,具体我后面还是会专门一篇blog来讲就是了。
“你废话怎么这么多,到底有没有解决办法?”
确实到这里写的比较多了,直接上结论,有,但非长久之计。
直接去OpW的网络->DHCP/DNS,滑到最下面自定义挟持域名,把你的域名解析到Truenas的内网ip就可以。
不过为什么说这不是长久之计呢?我一开始去折腾NAT环回,其实就是想所有内网服务都可以直接域名访问。带个好看ssl不说,用久了Chrome那个地址栏的大概都知道,频繁访问的网站打一个字母上去就蹦出来了,省去了输入完整ip的麻烦。而且,随着折腾的东西越来越多,以后再碰到类似NextCloud这种情况的,就要解析一个新的二级域名,同时也要配置多次SSL证书,麻烦的要死。而且解析了新的域名,和内网ip变了一个尾数,有很大区别吗?都是麻烦。本来各种服务占用的端口号不同就已经够麻烦了,现在还要二级域名还不同,长远来看是很不好维护的。至于以后我还有没有机会继续折腾NAT环回把这个问题解决一下,就看电信给什么回复了。
别急,还没说完(
其实还有另一种解决思路,就是修改NextCloud配置文件,取消强制跳转,但是我在Truenas的shell里找了半天没找到具体的配置文件在哪,我也不敢乱改,这个思路我还在慢慢折腾,一边问GPT一边找,等待后续更新吧。
但是还别急,最后一句话)
这里只说了内网访问相关的解决方案,至于NextCloud安全检查报错,我就没有什么办法了,至少目前我是没有什么头猪的(