kodbox/kodexplorer 自建 nas 网盘

之前部署了 nextcloud。可以使用。就是不太好用。nextcloud 太重了。访问视频后台无法中止。所以决定再部署一个 kodbox。

安装 kodbox

首先说明一下,我的主要程序是装在软路由上的。nas 只提供存储服务。

打开软路由里的 docker(portainer)。直接安装 kodbox。

然后浏览器访问安装好的 kodbox 进行初始化。直接默认 sqlite 和文件缓存就行。

接着,nas 开启 webdav 服务。

直接使用“共享文件夹权限”就可以了。

kodbox 的存储管理(系统设置从桌面进入)里面新增,选择 webdav。填入相关信息。

很幸运,保存失败了。(我有顺利过吗?)

根据网上和威联通官方的教程,webdav 权限改成“WebDav权限”,然后共享文件夹管理的权限管理设置一些 webdav 的权限。

再次连接,还是失败了。

试了很多次,都失败了,不管是 win10 自带的连接还是 kodbox 的连接,都不行。

快气炸了,睡觉。

第二天(今天),接着调试。

首先,nas webdav 改回“共享文件夹权限”,然后 kodbox 尝试连接其他共享目录,比如 /Web(nas 开启 web 服务自动生成的文件夹),一下子就连接上了。???

再试一下 sg-share。依然失败。

ssh 登录 nas,查看一下 apache 的配置。发现 sg-share 有点不一样。

/etc/config/apache/extra/apache-dav.web
<Location "/sg-share">
        DirectorySlash Off
        IndexOptions Charset=UTF-8
        Dav On
        AuthType Basic
        AuthName "DAV-sg-share"
        AuthBasicProvider external
        AuthExternal pwauth
        <LimitExcept GET OPTIONS>
                require user "admin" "tony" "nas"
        </LimitExcept>
</Location>

其他共享目录的配置没有 <LimitExcept GET OPTIONS> 这个标签。好,去掉这个标签,直接 require user “admin” “tony” “nas” 就行。保存,准备重启 apache。嗯……apache 怎么重启?/etc/init.d 里并没有 apache 和 httpd 相关,service 也找不到 httpd。威联通这个 linux 魔改得让人无所适从啊。

没办法,直接威联通管理界面重启 web 服务吧——先取消,保存,再勾上,保存。

再次尝试 kodbox 连接 webdav。还是失败。

再次尝试其他目录的连接。成功、成功、还是成功。

哈哈哈哈……sg-share 这个目录是被诅咒了吗?????

没办法,同磁盘下新建另一个共享文件夹——sg-share-2。

尝试连接,成功。🤔

算了,能连接就行。sg-share 不管了。

看一下上传文件,没问题,保存的也是物理路径——kodbox 用了数据库管理,默认上传是放到按月建立的文件夹下的,所以我使用了 webdav 挂载。

但有点奇怪,kodbox 的 webdav 挂载不能挂载根目录。比如,nas 共享文件夹是 video。我们可以通过 smb 访问 video。但 kod 会在 video 下面新建一个文件夹进行挂载。新增 webdav 存储时填的“存储目录”使用了对应 nas 的共享文件夹的,但 kodbox 会在这个文件夹下新建同名文件夹。这导致我无法通过 kodbox 直接访问原共享文件夹下的文件(除非把这些文件挪到新建的同名文件夹下)。

太累了。web 应用的易用性和桌面应用完全不在一个层级,太烂了。

安装 kodexplorer

既然 kodbox 这么难用,还是使用 kodexplorer——唯一的问题是官方不怎么更新了。

kodexplorer 没有网络挂载方式。所以,我是 ubuntu 里把几个 nas 共享文件夹通过 nfs 挂载到 mnt 目录下面,然后创建 docker 的时候把 /mnt 映射到容器的 /mnt。这样一来 kodexplorer 可以直接访问 mnt 路径查看文件。

为什么 sg-share 颜色不一样?进去看不到文件,也无法写入。因为这个文件夹给 nextcloud 用了,属于另一个用户(tony),权限是 770。可以通过 chmod 改成 777,但 nextcloud 不允许权限是 777。所以,我又改回了 770。

其实 sg-share-2 一开始也无法访问,后来改成 777 才能访问。至于 store,这个一点问题也没有(目前为止)。linux 权限管理也不好搞,特别是和 docker 搞在一起的时候,难懂。所以,统一 777 吧。安全?不需要了。什么也不需要了,我只想要一个小白也可以使用的产品。

容器权限

对于宿主机挂载的文件夹在 docker 中无法使用的问题。还可以通过 privileged (特权模式)解决。即创建容器的时候打开 privileged。这样容器里的 root 就和宿主机的 root 一致了,否则容器里的 root 只是一个普通用户。