路由远程访问配置详解及可道云,nextcloud利用redis加速访问并挂载本地文件

作者:zka41101959

上一篇中,我已经充分介绍了硬解存在的必要性,本篇让我们一起来配置docker中的各种必须套件,大多数以图形界面安装,小部分以命令行实现,本篇受众定位是有一定计网基础的普通用户。

PART1 Docker与群晖套件联动配置

首先继续昨日未完的话题,docker是什么这里不再解释,可以看做是任意操作系统下可实现相同功能的一组套件(跨平台,且拓展性极高,安全性好)

而后开始选择需要安装的套件与对应的docker注册表,可道云和nextcloud需要redis进行缓存加速,默认群晖不支持redis,因此只有选择注册表安装,默认群晖内的php套件并不支持php-redis和memorycache,因此需要用ssh命令添加至php拓展列表,onlyoffice的安装在此不再赘述,网上一抓一大把。

1.1 docker下的redis安装

至此开始redis的docker版本安装,教程参考了另一位老兄的图形化安装教程

安装完毕后,映射端口为6379,如本地有数据库管理软件,可测试相应nas ip的6379端口可否连接(一般无需密码)

1.2 php-redis

麻烦之处在在于需要为php添加拓展,网上教程林林总总,个人测试过之后只有一种办法可行,遂写于此:

首先确定需要的php版本,可道云支持php7.0以上版本,nextcloud最新版支持php7.3以上版本,于是选择为php7.3添加拓展

首先打开nas的ssh选项,建议更换端口号为大于1024小于6w的任意数字(防止被黑客肉鸡攻击)

路由远程访问配置详解及可道云,nextcloud利用redis加速访问并挂载本地文件插图

然后登入ssh并取得root权限(需要输入密码)

路由远程访问配置详解及可道云,nextcloud利用redis加速访问并挂载本地文件插图1

在之后观察相应目录下是否有编译好的redis.so文件[注:以下的vol均为安装php的卷,需要自行替换]

命令:/volume1/@appstore/PHP7.3/usr/local/lib/php73/modules/

ls

存在reids.so文件

然后为php-fpm.ini文件末尾添加拓展加载索引

命令:vi /volume1/@appstore/PHP7.3/misc/php-fpm.ini

添加的字段:

  • [Redis]

  • extension_dir = "/volume1/@appstore/PHP7.3/usr/local/lib/php73/modules/"

  • extension = memcached.so

路由远程访问配置详解及可道云,nextcloud利用redis加速访问并挂载本地文件插图3

最后重启php7.3即可正常使用php-redis拓展

1.3 可道云与nextcloud加载redis

可道云需要使用webstation进行映射安装,nextcloud也一样,方便对文件进行合理的权限控制

1.3.1 可道云的redis配置

如果在初次安装可道云时选择redis作为缓存,则后续不用配置,无脑用就可以了

如果没有,又不想清空配置文件重新安装,则可修改安装目录下config/setting.php中的缓存相关配置,如下图所示 (如果无权限,需要先设置好读写权,否则无法修改)

可道云的redis配置

1.3.2 nextcloud的redis配置

初次安装无法选择缓存,只能从配置文件中修改

根据官方文档对Memory caching的解释,我们需要先验证redis是否在运行,如果在运行,才可添加相关配置

命令如下:

ps ax | grep redis
22203 ? Ssl    0:00 /usr/bin/redis-server 127.0.0.1:6379

查询运行进程

将下列命令添加至 安装目录/config/config.php 文件(别忘了最后的 ]; 如果不小心删了程式会报错)

'memcache.distributed' => 'OCMemcacheRedis','redis' => [
'host' => 'redis-host.example.com',
'port' => 6379,],

路由远程访问配置详解及可道云,nextcloud利用redis加速访问并挂载本地文件插图6

修改配置文件利用缓存

1.3.3 测试缓存

如果缓存已被应用,则读取文件时内存占用会增加,数据库也会有缓存占用表。

测试过程不表,可以正常写入数据库中缓存表和建立文件列表索引,此功能亦改善了访问文件列表的速度,操作延迟有一定的下降(无图抱歉)

1.3.4 参考链接

参考链接1

参考链接2

参考链接3

PART2 webstation搭建网站并映射本地端口

此步骤较为简单,直接上图

端口对应网站列表

nextcloud详细配置

可道云详细配置(7.2已添加相关拓展)

其中有一些杂七杂八的权限问题,此处不表,百度下都是解决方法,目录没权限给他就是了,文件没权限也直接给(这里有一点注意的,webstation读写文件的权限与目前登录用户的一致,因此只需更改登录用户对文件操作/读写权限即可,不要选everyone,有很大的安全隐患)

最后尝试以nas ip:端口号形式是否可正常访问网站,如果可以且通过权限测试,又可正常访问,则阶段到此结束。

nextcloud挂载nas共享文件夹教程在文末(站里好像都说不能挂,结果查了下文档找到个拓展转眼就挂上了 )

nextcloud坑还是比较多的,我直接把我改好的配置文件贴在下面。适度避坑,安全你我

  • <?php

  • $CONFIG = array (

  •   'instanceid' => 'oc750mp53d93',

  •   'passwordsalt' => 'zZevG/jrQuNqrqd6srp2xe1PpTRs89',

  •   'secret' => 'JFKTtYSIFj6NaAOugH12NSluKANXQu2k1q6t1N7txzu4vqUL',

  •   'trusted_domains' => 

  •   array (

  •     0 => '192.168.50.10:8088',

  •     1 => 'xxx.xxx.xxx:8088', #此处为允许外网访问配置,下章介绍

  •   ),

  •   'datadirectory' => '/volume1/web/nextcloud/data',

  •   'dbtype' => 'mysql',

  •   'version' => '21.0.0.18',

  •   'overwrite.cli.url' => 'http://192.168.50.10:8088',

  •   'dbname' => 'nextcloud',

  •   'dbhost' => 'localhost',

  •   'dbport' => '',

  •   'dbtableprefix' => 'oc_', #数据库表前缀

  •   'dbuser' => 'oc_xxx',

  •   'dbpassword' => 'r2gsqq2q8gYY0q8uqagqSX0VXHkfI3',

  •   'installed' => true,

  •   'allow_local_remote_servers' => true,

  •   'memcache.distributed' => 'OCMemcacheRedis', #缓存配置

  •   'redis' => [

  •      'host' => 'localhost',

  •      'port' => 6379,

  •   ],

  • );


PART3 浅谈网络解析

在讲解外网访问之前,我们必须要了解域名,公网ip,域名解析,csrf,ddns等名词的含义(本章不涉及到ssl/rsa/数字签名等现代密码学算法[也就是常见的https路由远程访问配置详解及可道云,nextcloud利用redis加速访问并挂载本地文件插图12 ])

首先域名:

在域名出现之前,人们只有通过ip地址直接访问相应的server,而ip标识性很差(个别除外),直至www的出现改变了现状,server可以直接传输超文本内容,加强了,于是就大众开始关注域名的易记忆性与访问高效性,因此,域名最基本的作用是代替ip地址让访问服务器变得更加容易,服务器开放的不同端口提供不同的服务,例如负责ssh的22端口就无法在浏览器中ip:22的形式打开web服务,有界面服务和无界面服务也要区分开来,不提供界面的服务通常偏向于控制和服务性(例如ftp/ssh/telnet),有界面服务通常注重于交互式服务(例如web)

再者公网IP:全称广域网IP,是为除了保留地址之外的任意ip地址

保留地址如下:

  • A类:10.0.0.0 到 10.255.255.255

  • B类:172.16.0.0 到172.31.255.255

  • C类:192.168.0.0 到192.168.255.255

  • 其中127.0.0.0 到127.255.255.255 为系统环回地址

如果你的路由器拨号(PPP)之后获得的ip不在此列,那么恭喜你,你已经有了一个的广域网ip

怎么测试其可用性呢?

首先更换路由器访问端口为x。(1024<x<65535),然后用手机通过数据网络,啥设备都行,只要不是通过目前局域网接入的互联网即可,直接访问路由拨号获得的 ip:设置好的端口号 如果可以显示路由控制界面,则说明此ip可用,可以进行下一步。(光猫需改桥接模式,路由端负责拨号)

既然前面已经介绍了域名相关知识,那么我们这里就要用上,域名的本质是解析ip地址,而ip对应的server为访问者提供各式各样的服务,群晖用的最多的是web服务(tcp),所以此章只介绍web相关内容。

如果你在本地hosts添加了一条解析记录并刷新了dns缓存,则可以可以通过自定义的域名访问局域网内的nas服务。同理:如果你在互联网上(域名解析方)添加了一条指向广域网某ip地址的解析记录,你就可以通过域名访问广域网上某ip提供的服务。再进一步,如果你用自己注册的域名,解析到你自己路由的广域网ip地址,你就可以通过该域名直接访问你路由上开放的任意端口,此为域名解析原理。(不涉及到五层体系结构的通俗讲解 )

别忘了csrf:

啥是csrf,是一种防跨域请求伪造攻击的手段,可通过多种方式实现,而防护的手段大都为:不允许不合法的域名跳转,不允许HTML标签发送合法的跨域请求,这种防御我只在docker的qbtorrent注册表中见到过,一旦跨域则无法访问,错误码505,个别情况需要注意,普通用户不必深入了解。

原理

为什么需要ddns?

因为一般家庭或企业用户所获得的的广域网ip并非固定,而是会时常变化,一旦变化,我们的域名针对ip的A类解析记录就会失效,因此我们需要DDNS(动态域名解析服务),在本例中选择ax88u的aliddns应用插件实现ddns。

网络解析实践

实践前提一台内网运行web服务的nas,一个路由器(刷了华硕ML改固件的都可以,其实软路由也可以以定时任务的形式进行解析,此处不表,只阐述逻辑实现)

最终目标:以数据网络访问广域网某域名获得目前局域网内web服务为最终目标,开始搭建整个网络环境(局域网内服务优化先前已介绍,不再赘述)

以外网访问nextcloud为例子(需要事先修改配置文件更改trust域名)

内网访问

域名信任

以下为端口转发配置和aliddns设置:详见

先在阿里云申请域名(我相信这个大家都会),然后通过实名认证开放解析权限,如果要用ddns必须先创建一条子域名解析记录,如果不创建则路由内置插件无法更新ip

注册域名

添加解析记录

添加accesskey(插件用)

端口转发

aliddns

这样一顿操作过后,等三分钟,你尝试ping下设定的域名地址,如果返回ip和路由拨号获得的ip一致(记得刷新下DNS缓存[ipconfig/flushdns]和清空hosts文件),那么你就可以通过ip:开放端口来实现在广域网上对本地web服务的访问

外网访问域名

PS: 推荐群晖内部做静态IP配置,防止端口转发失效

静态IP配置

参考链接

参考链接


番外 nextcloud挂载localhost文件夹/nas共享文件夹(smb/sftp)

许久前见站内各位大佬评比nextcloud优劣,其中一条便是其无法访问群晖的共享文件夹。

无意中发现nextcloud可以通过External storage support插件实现对本机sftp及smb内容的访问及分享,速度依托于redis提前建立好的文建索引,文件夹下载速度亦有所提升

拓展应用

挂载细节

实现视图

数据库cache(文件列表索引缓存)大小

本篇到此结束,下篇可能会介绍chevereto图床的APIv1用法详解,讲究更实用的图床。相册,who?

感觉好像没什么人看的样子欸。是我图不够多?

阅读更多精彩内容,可前往什么值得买查看

什么值得买APP 全网实时购物好价优惠

路由远程访问配置详解及可道云,nextcloud利用redis加速访问并挂载本地文件插图27

原文链接:http://open.smzdm.com/yidian/article/ad2voxnx

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享