Categories: 网盘

使用Open Media Vault和NextCloud构建家庭私有云

 

说明

最近一直在研究nas系统,试了好多,目前家里是seafile,不过家里用文件被打碎了太麻烦,在centos上弄nextcloud也不是很方便,因为我linux属于小白,然后想到了有Open Media Vault,这个系统是基于debian内核搞的,自带的功能很强大了,还有很多插件,原来2.X的版本里面有集成了owncloud插件,不过现在3.X的版本owncloud插件没集成进去,不过看到能自己安装,所以来测试下这个系统。另外由于他的开发人员原来也是开发freenas的所以他自己直接有web管理界面,里面开samba,做软raid都很方便,

官网https://www.openmediavault.org/

我准备弄个8G的u盘,安装系统,然后另外在插4块硬盘做软raid,保存自己需要的数据。

实验步骤:安装OMV系统,开通samba,安装OMV插件,安装nextcloud

安装OMV系统

我们先创建这样一台虚拟机

这个是测试而已,实际使用请大家自己搞台电脑出来,像我是4块2T做radi5 你预算少可以准备2块硬盘,做个raid1,这样资料安全有保证

进行安装

选择中文安装,放心不像Ubuntu 16.04 安装的时候用中文还会报错,这个中文挺稳定的

大陆就选中国吧

开始加载安装组件

主机名我就用默认了

这里也默认了

输入系统底层的密码,不是web界面的密码

读取时间

系统装到8G的U盘里

开始安装系统,安装到一半会卡住,别急等一会就好

设置镜像

我就选163了,随便你

中间有一步是配置代理,我手快了没截图就按回车了,不过我想家里应该没人吃饱了去用代理上网吧

安装grub引导

放sda中,因为这个就是u盘

安装完成重启

安装完成后,我们可以在机器界面上看到已经有ip地址192.168.2.120 下面一行显示登陆网页用户名admin 密码openmediavault。后面就全部用网页来管理了。

配置OMV系统

我们登陆OMV,输入密码就可以进入主界面

这里就是主界面,很干净方便

更新系统

我们打开更新管理,先更新下系统,打下补丁,以后有更新都在这里可以看到

等更新完成后就可以点击关闭,更新过程中无法关闭

安装插件

插件使用第三方的源,也是他们官方认证的

http://omv-extras.org/joomla/index.php/guides

我们登陆网站在下面有deb包,我们下载后上传到插件页面安装下就能看到其他的插件

上传插件

安装

安装完成后,会自动刷新页面,就会发现插件多了很多

设置系统时间

我们在时间和日期中设置下时区,然后保存下,让时间自动从网络同步

常规设置

在这个设置中,我们可以修改OMV的web端口,网页超时时间,默认5分钟太短了,我设置了长一点

硬盘管理

S.M.A.R.T.

开始SMART,这样硬盘出问题能自动检测

这里可以看到硬盘的型号序列号,如果那块硬盘有问题,找起来也方便

RAID管理

我们进入RAID管理,然后选下4块盘,设置下RADI 5,名字叫MD0

linux下面都是用md这个来命名的,所以我也这么叫了

创建完成后会进行初始化,下面有初始化的百分比,等初始化完成后在创建文件结构。

文件系统

我们进入文件系统,选择创建,选下我们刚才创建的RAID,然后输下名字继续叫MD0,然后文件系统叫EXT4

选是后会提示你,要被格式化了

这时文件系统还是不能用的,我们要选择下挂载

挂载完成

设置SAMBA共享

我家里的NAS我准备建立一个SAMBA的用户,我自己用,然后共享文件3个一个叫NAS,包括NextCloud都装在里面,这样我可以方便的直接上去管理,然后一个叫Download的文件夹,脱机下载插件下载的文件就放里面,然后一个叫Software,我自己的软件都在里面,其他包括我老婆都不用SAMBA,都用NextCloud上面,我尽量让自己的NextCloud上保存的都是轻量级的文件,大容量的就放在SAMBA上。

你自己想如何设置还是每个人不同的,不用照我的来。

建立用户

我们先建立一个用户,用于SAMBA共享

建立共享文件夹

对每个文件夹添加下用户权限

设置SAMBA

我们开启下SAMBA,不知道的选项就不用改了

添加共享文件夹

设置好后我发现访问共享不行,然后重启了下服务器ok了,都能看到了,可能是因为我是虚拟机的关系,我朋友直接设置好就可以使用了。我们可以进去然后新建下文件,看看权限是否正确

安装NextCloud

由于NextCloud没加入OMV 3的官方插件列表中,我们只能手动来了,哎好疼苦

建立SSL证书

OMV自带了证书功能,所以我们直接使用自带的创建一个证书即可,我直接创建了25年的,这样就不会过期了

创建完成

安装Nginx插件

我们在插件中搜索nginx,然后安装下

安装完成我们就能在服务中看到Nginx

添加池

我们加个池,然后用户名和组选择下,我就用我一开始创建的那个samba的wang这个用户了

在扩展选项中添加下面的内容

env[PATH] = /usr/local/bin:/usr/bin:/bin 

添加服务器

这里目录就选我前面创建的那个nas目录,端口可以看到我已经变成灰色了,因为我后面一部选择了only ssl,只用ssl了不用普通的端口了,如果你不选只用ssl的话记得把这个端口改掉,80端口和omv的端口冲突了

开启SSL,然后端口可以自己修改下,我们上海电信好像都封掉正常的80和443端口的,证书就是前面创建的证书

开始php,然后池就选择NextCloud,添加个index.php

扩展选项把下面的东西都黏贴进去

 

client_max_body_size 10G; # set max upload size

fastcgi_buffers 64 4K;

 

rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;

rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;

rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;

 

index index.php;

error_page 403 /core/templates/403.php;

error_page 404 /core/templates/404.php;

 

location = /robots.txt {

allow all;

log_not_found off;

access_log off;

}

 

location ~ ^/(data|config|\.ht|db_structure\.xml|README) {

deny all;

}

 

location / {

# The following 2 rules are only needed with webfinger

rewrite ^/.well-known/host-meta /public.php?service=host-meta last;

rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

 

rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;

rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;

 

rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;

 

try_files $uri $uri/ index.php;

}

 

location ~ ^(.+?\.php)(/.*)?$ {

try_files $1 = 404;

 

include fastcgi_params;

fastcgi_param SCRIPT_FILENAME $document_root$1;

fastcgi_param PATH_INFO $2;

fastcgi_param HTTPS on;

fastcgi_pass $socket;

}

 

# Optional: set long EXPIRES header on static assets

location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {

expires 30d;

# Optional: Don’t log access to assets

access_log off;

}

 

add_header Strict-Transport-Security “max-age=15768000; includeSubDomains; preload;”;

设置权限

到共享文件夹acl里用递归先项把nextcloud及子目录的权限修改成,读/写/执行

(不进行这一步操作,很可能在下一步操作后,网页无法找到)


安装MySQL插件

NextCloud需要用到MySQL数据库,所以我们安装下MySQL的插件

安装完成后,启用下,然后下面的SQL management也启用下,那个是网页管理数据库的功能,好了之后我们就可以点击重设边上的SHOW来网页管理数据库

重设MySQL密码

默认的MySQL用户名是root,密码为空,我们设置一个安全一点,点击reset password重设密码

然后我们点击show,然后输入用户名密码登陆数据库

创建nextcloud数据库

我们新建一个数据库专门用于nextcloud

创建完成

安装PHP插件

我们安装NextCloud时还需要几个php的插件,我们安装下

我们使用ssh工具,登陆下服务器,然后执行下面的命令

安装php5-gd模块:apt-get install php5-gd

安装php5-curl模块:apt-get install php5-curl

安装php-pclzip模块:apt-get install php-pclzip

下载并安装NextCloud

https://download.nextcloud.com/server/releases/nextcloud-12.0.0.zip

我们直接下载nextcloud,然后解压,之后敲到我们前面SAMBA创建的那个nas的目录下

等待复制

输入https://nas的ip加上前面我设置的86端口,来进行安装

我是这个,你可以根据自己的来https://192.168.2.120:86/index.php

输入你的信息包括数据库,和默认的管理员密码

安装完成

然后我们通过samba,可以看到下面的data路径里admin账户,files文件里面都是我们上传到nas上的文件,

不过需要说明的是,我们直接把文件放到这个目录下是不行的,在nextcloud界面看不到,只能通过nextcloud的网页上传上来才能看到,不过看到的文件就是原文件

下面看到我通过nextcloud网页上传了2个视频,在底层的文件里还是看到这2个原文件,这样如何我们以后要更换新的nas系统都可以直接敲出来放进去,这就是为什么我不选seafile的原因,家里用要打碎文件干嘛

安装apc插件

root@server:~# apt-get install php-apc

在NextCloud的config.php配置文件中加入

‘memcache.local’ => ‘\OC\Memcache\APCu’,


重启 php-fpm:
root@server:~# /etc/init.d/php5-fpm restart

修复opcache错误

编辑/etc/php5/fpm/php.ini

添加

opcache.enable=1

opcache.enable_cli=1

opcache.interned_strings_buffer=8

opcache.max_accelerated_files=10000

opcache.memory_consumption=128

opcache.save_comments=1

opcache.revalidate_freq=1
     

 

重启 php-fpm:
root@server:~# /etc/init.d/php5-fpm restart

经过以上设置我们的服务器后台就没有任何报错了,尼玛我研究了好久我靠

设置外网访问

我们需要在我们的路由器上设置下外网访问,这样才能让外部访问我们,就开放下86端口即可,这部我就不截图了,很简单的,而且每个路由器不同,懂的自然知道怎么加端口,不懂的我路由器和你不同我加了你也不知道怎么弄。

另外我们要修改下网站的代码,否则打开会有问题

我们打开nextcloud的config目录中的config.php文件

我们要在哪个array中加入我们的域名,另外下面的https后面原来也是内网的ip地址,改成域名,这样外网访问过来就不会有问题了

当然请在自己的路由器上设置好ddns,这样外网都用域名访问就ok了

安装客户端

下面的页面中有app的下载地址,ios是收费的6块钱好像,其他不收费,我这里就测试下windows pc的客户端,手机我就不测试了

https://nextcloud.com/install/#install-clients

安装完成后我们输入域名

跳出来证书不安全,因为是我们自己创建的,不管继续点ok,记得勾下总是信任该证书

输入用户名密码

这里可以选要同步的内容,我因为会把视频也放上面,太大了,所以就手动选择同步内容

选择同步个小的文件夹测试

下面有个本地存放这个文件夹的位置,可以自行修改到需要的位置,然后点连接

完成了

手机客户端官方的是收费的6块,下面这个是免费的第三方的

其他

我发现NextCloud有一点不好,他的同步PC客户端会把所有的文件都下载下来,这样会占用我本地的磁盘,所以只能选择自己需要的下载,这一点没seafile好。

另外上面还有下载的插件,还有virtualbox的插件,可以在上面运行虚拟机这点还是不错的,其他的功能大家自己研究吧。

写文章很辛苦希望大家帮忙点赞

王哥哥

View Comments

  • 你好,按照这个方式运行nginx后,提示如下:
    ● nginx.service - A high performance web server and a reverse proxy server
    Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Fri 2020-02-28 13:31:17 CST; 30s ago
    Docs: man:nginx(8)
    Process: 1767 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=1/FAILURE)

    Feb 28 13:31:17 NAS systemd[1]: Starting A high performance web server and a reverse proxy server...
    Feb 28 13:31:17 NAS nginx[1767]: nginx: [emerg] unknown directive "includeSubDomains" in /etc/nginx/sites-enabled/zzz-omv-nginx:119
    Feb 28 13:31:17 NAS nginx[1767]: nginx: configuration file /etc/nginx/nginx.conf test failed
    Feb 28 13:31:17 NAS systemd[1]: nginx.service: Control process exited, code=exited status=1
    Feb 28 13:31:17 NAS systemd[1]: Failed to start A high performance web server and a reverse proxy server.
    Feb 28 13:31:17 NAS systemd[1]: nginx.service: Unit entered failed state.
    Feb 28 13:31:17 NAS systemd[1]: nginx.service: Failed with result 'exit-code'.

    然后就没办法登录omv网页了

    请问是什么问题,怎么解决?

    • Feb 28 13:31:17 NAS nginx[1767]: nginx: configuration file /etc/nginx/nginx.conf test failed
      nginx.conf 配置有问题 你在检查下

Share
Published by
王哥哥