OMV是我个人比较喜爱的一款NAS系统,但是它不像群晖那样易于使用;黑群固然好用 但我始终不太喜欢群晖对于硬盘的管理方式,而且黑群无法像白群那样稳定;考虑到不可抗力(系统挂掉)后硬盘内数据的取出,基于Debian的OMV我觉得是非常切实可行的解决方案。

但是,OMV并没有提供基于web界面的文件管理,当我们需要从nas创建共享链接时就非常有必要自行搭建了。大部分运营商封禁了SMB共享所用的445端口,而Windows又傻逼的不能连接非445端口的共享,这时候只能基于网页端操作了(FTP是个垃圾)。

群晖的SHR比较坑爹,而且群晖的系统存在于每块硬盘 我个人非常唾弃;OMV使用SnapRaid不但可以保护磁盘数据而且可以最大化利用存储空间。

使用SnapRaid再进行Fuse融合的存储空间虽然在网络共享拉取文件时的速度取决于单块硬碟的速率,但是大部分nas仅配备了千兆以太网 且 2.5寸机械碟都可轻松达到100MB/s以上的速率

进入到openmediavault自带nginx的站点目录 cd /etc/nginx/sites-available/

新建一个KodExplorer的站点配置文件 touch kodexplorer

由于openmediavault自带了php7.3 这极大的方便了KodExplorer的搭建 可以使用php -version 来看到具体信息

可以使用 cat openmediavault-webgui 来查看到omv后台的信息。我们需要其中php的配置内容

但是很显然此处使用了一个特殊的php-fpm文件,可以前往 /run/php 可以查看到原始php7.3的路径 cd /run/php

php7.3-fpm.sock 便是我们所需要的 所以fastcgi_pass 字段的路径应为unix:/run/php/php7.3-fpm.sock;

所以最后再简单添加一些站点相关的内容后,最终的nginx站点配置文件 如下 

server
     {
          listen 8000;
          index index.html index.php;
          root  /srv/ecb84996-61b9-4cd9-817a-a1dfde5e8026/kodexplorer/;

          location ~ \.php$ {
          try_files $uri =404;
          fastcgi_split_path_info ^(.+\.php)(/.+)$;
          fastcgi_pass unix:/run/php/php7.3-fpm.sock;
          fastcgi_index index.php;
          fastcgi_read_timeout 600s;
          include fastcgi.conf;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          }

         location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
         {
             expires      30d;
         }
         location ~ .*\.(js|css)?$
         {
             expires      12h;
         }
         location ~ /.well-known {
             allow all;
         }
         location ~ /\.
         {
             deny all;
         }
     }

我是将kodexplorer直接存储于Fuse卷宗 所以站点路径为 /srv/ecb84996-61b9-4cd9-817a-a1dfde5e8026/kodexplorer/

由于新出的kodbox会将文件存储于同一文件夹,访问时通过比对数据库列出目录内容 所以我选择使用仍旧是直接路径存储的kodexplorer(v4.40)可别下错了

还需要将sites-available下的kodexplorer配置文件创建软连接到 sites-enable 以启用站点配置文件 ln -s ../sites-available/kodexplorer ../sites-enabled/

重启Nginx以使用新添加的站点systemctl restart nginx.service

查看nginx运行状态systemctl status nginx.service

由于omv系统高度精简 所以在安装最新版本 kodbox时会提示缺少依赖 通过以下指令安装 apt install php7.3-gd php7.3-curl

在此我仅作为网页文件管理使用 所以安装的是kodexplorer,新版的Kodbox需要数据库支持 可以选择安装Sqlite3或者Mariadb apt install php7.3-sqlite3

php7.3-curl为KodExplorer在离线下载时候所需 但是我还希望kod可以查看到文件信息 所以去开启fileinfo功能 nano /etc/php/7.3/fpm/php.ini

找到 extension=fileinfo 删除前方注释(如下图)

重启 php-fpm 以启用fileinfo  systemctl restart php7.3-fpm.service

此时KodExplorer已经正常运行,但我希望可以通过SMB/AFP共享访问到Kod的 公共目录 所以需要修改一下kod的所属组和权限 chown -R www-data:users kodexplorer

本文章主要解决网页端上传存储 所以不包含设置Samba的内容,简而言之就是通过kodexplorer直接访问Samba的共享目录(/srv/ecb84996-61b9-4cd9-817a-a1dfde5e8026/Fuse)

此时我们直接进入 Fuse会发现目录空白 这是因为www-data用户暂时没有目录访问权限。

将一个已有用户 www-data 增加到一个已有用户组 users 中,使此用户组成为该用户的附加用户组,可以使用带 -a 参数的 usermod  指令usermod -a -G users www-data

可以通过id 用户名来查看用户的所属组

将www-data添加到users用户组后php程序就将具有共享目录的权限,就此kodexplorer获得权限。

为保护系统安全所以我门将文件权限修改为 770 拥有者和所属组拥有读、写、执行权限 而其他用户 在此我未考虑来宾 所以不给任何权限,千万不要777显得十分弱智。

chmod -R 770 /srv/ecb84996-61b9-4cd9-817a-a1dfde5e8026/Fuse //共享目录
chmod -R 770 /srv/ecb84996-61b9-4cd9-817a-a1dfde5e8026/kodexplorer //kod安装目录

我们现在具有了访问权限 但发现有些文件没有显示出来 我们再次更改文件所属组 chown -R czboys:users Fuse/

但是我们在执行权限设置后 KodExplorer下依旧没有权限,可以尝试重启php-fpm/nginx来解决 其实直接重启系统最为简单粗暴.

经测试 网页和SMB共享都完美访问。