内网truenas中搭建nextcloud全过程

2021年8月12日 4572点热度 0人点赞 0条评论

我的truenas设置在内网环境,由于国内家宽条件下是不会给443以及80端口的,我自己选择了一个高位端口,以下以12345这个端口为例。

Part 1 安装

首先, truenas-core版本自带了官方插件(plugins),直接可以自动部署,只需设置一个内网ip。

当然,装过nextcloud的人都知道,这玩意安装从来都不是最坑人的地方,而是各种后续毛病。。。

装完之后,访问他第一个会跳非信任的域名。
在jail的shell窗口进入命令行,在

/usr/local/www/nextcloud/config/config.php
中的trusted domain中加入给定的内网IP,即可访问。

在系统给的默认账号下登录,然后添加自定义的账号,删掉默认账号。

Part 2 域名,ssl以及nginx反代

之后,我自己是使用了一个home assistant插件库里面的nginx proxy manager。 然后 路由器转发端口 12345(以此为例)到nginx proxy manager所在ip的12345端口。再使用nginx 反代到nextcloud。添加trusted_proxies
'trusted_proxies' =>
array (
0 => '10.0.0.0/24',
),

当然怎样设置动态域名这些这边就不讲了,建议使用软路由的插件。至于ssl证书方面,现在免费的只能用几个月续签一次的lets encrypt,这是nginx proxy manager可以自动续签的,前提是使用dns challenge,而非传统验证(你没有443 80端口是怎么也验证不了的)。

这样以nextcloud.mydomain.com的动态域名和证书就都有了,现在如果你指向nextcloud,外网访问他第一个会跳不信任的域名,如刚开始那样把"域名:12345"加入信任域名即可。
同时新版本应该还是不行,这篇文章在写的时候是22.0.0_1版本,还需要使用occ命令设定跳转地址,即
sudo -u www php occ config:system:set overwritehost --value="nextcloud.mydomain.com:12345"

提示没有sudo就 apt install 或者yum或者pkg install 安装sudo,这几个总有一款适合你
更改config.php文件前最好装个nano,自带的vi太难用了。。。

此时应该还有登陆回车之后不会自动跳转的问题,即必须重新刷新一下才能进主页,此时在/usr/local/www/nextcloud/config/config.php文件中最后添加一行

'overwriteprotocol' => 'https',

Part 3 文件夹挂载

当然,你还需要设置外部一个data文件夹挂载到jail内(将旧的data文件夹命名为dataold,然后复制内部文件到新的挂载的data文件夹,注意data文件夹内有俩隐藏文件.ocdata 和 .htaccess),即便你外部的文件夹权限设置成了任何用户都能读写,jail内的智障nextcloud依旧不能读写。。。
此时你需要在jail内
chmod -R 777 你的新data文件夹
此时才可正常使用
你以为完了吗,还需要在config.php里加上
'check_data_directory_permissions' => false,
这一行。。不然他会报错说其他用户能读取你文件,然后不让你登录。。。

现在应该是能正常进系统了,但据我两年前玩nextcloud的印象,这玩意问题应该会特别多。。。希望后面不再碰到吧。


Part 4 后台任务不能执行

进系统发现后台任务不能执行,果断切换成cron,
在jail中输入以下命令

crontab -u www -e

在打开的文件中输入:

*/5 * * * * php -f /usr/local/www/nextcloud/cron.php

可以用手动命令执行看看有没有问题:

sudo -u www php -f /usr/local/www/nextcloud/cron.php

Part 5 让视频显示缩略图

源自https://www.cnblogs.com/blackelk/p/nextcloud.html

首先在jail中安装ffmpeg

pkg install ffmpeg

然后
nano /usr/local/www/nextcloud/config/config.php

中最后加入

'enable_previews' => true,
'enabledPreviewProviders' =>
array (
0 => 'OC\\Preview\\Image',
1 => 'OC\\Preview\\Movie',
2 => 'OC\\Preview\\TXT',
),

这部分就完成了。

Qiui

这个人很懒,什么都没留下

订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x