梦中情盘!基于NextCloud搭建个人私有云!

目录

一.事情是这样的

二.调研与架构设计

1.调研

2.实现目标

3.架构设计

三.硬件

四.软件

五.过程

1.安装docker

2.安装mysql

3.安装nextcloud

4.挂载外部存储

5.内网穿透

六.FAQ


一.事情是这样的

基本上使用过市面上的所有网盘软件:某度网盘、某雷云、某里云、某果云、google云盘等,但是没大部分遇到了如下这些问题:

梦中情盘!基于NextCloud搭建个人私有云!_第1张图片

二.调研与架构设计

1.调研

肝了3晚,终于把这套搞定了!调研了市面上一些开源软件、seafile、owncloud、 nextcloud等;最终让我选定nextcloud 的是因为它官网的这段话:

梦中情盘!基于NextCloud搭建个人私有云!_第2张图片

重新夺回控制权!!!

2.实现目标

梦中情盘!基于NextCloud搭建个人私有云!_第3张图片

  • 无限的存储容量(可低成本扩展)。
  • 外网和内网都可访问(可正常速率上传下载)。
  • 数据的永久储存。(磁盘阵列) 

3.架构设计

梦中情盘!基于NextCloud搭建个人私有云!_第4张图片

拓扑图

梦中情盘!基于NextCloud搭建个人私有云!_第5张图片

软硬件环境

三.硬件

  1. dell R620 服务器 window server 2012;80G内存;8T 硬盘;一个阵列卡。
  2. 破笔记本刷成了centos 7 8G内存;120G硬盘。
  1. 百兆wifi 一个。
  2. 移动硬盘一个,已格式化FAST 32。

四.软件

用到的主要软件也就是下面这几个 :

梦中情盘!基于NextCloud搭建个人私有云!_第6张图片

官网:Homepage - Nextcloud

梦中情盘!基于NextCloud搭建个人私有云!_第7张图片

官网:Home - Docker

官网:  Sunny-Ngrok内网转发内网穿透 - 国内内网映射服务器

五.过程

安装主要分为5部分:安装docker、安装mysql、安装nextcloud、挂载外部存储、内网穿透。

1.安装docker

yum install docker

systemctl status docker

梦中情盘!基于NextCloud搭建个人私有云!_第8张图片

2.安装mysql

yum install docker

非必须: vi /etc/docker/daemon.json

加入国内的源,我这有ti子,就没配。


pull 一个镜像,nextcloud 中默认可使用SQlite 做数据库,操作云盘会有频繁的挂载IO, SQLlite性能很鸡肋,所以这边搞个mysql。

安装:docker pull mysql:8.0.20

启动:docker run -p 3306:3306 --name root -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.20

这步也可以不要用docker装,装在本机也是一样的。

设置允许外部访问,测试链接成功,OK!

3.安装nextcloud

执行:docker pull nextcloud

拉取镜像

梦中情盘!基于NextCloud搭建个人私有云!_第9张图片

2个镜像

创建文件夹:mkdir /etc/nextcloud

创建文件夹:mkdir /mnt/usb/

执行启动:docker run -it -v /etc/nextcloud:/var/www/html -v /mnt/usb:/data -d --net=host --restart=always --name nextcloud nextcloud

这里说明下:

/etc/nextcloud:/var/www/html 这个是nextcloud 的配置文件映射到宿主机。

/mnt/usb:/data 这个是nextcloud 的挂载目录(非主目录) 挂载到宿主机。

启动后正常如图,此处很多坑!如不正常启动,请跳转本文或官网FAQ~

梦中情盘!基于NextCloud搭建个人私有云!_第10张图片

安装完成!

梦中情盘!基于NextCloud搭建个人私有云!_第11张图片

梦中情盘!基于NextCloud搭建个人私有云!_第12张图片

到这里,nextcloud 安装已经结束。

4.挂载外部存储

安装这个很简单,但是现在我们上传的文件,都保存在docker 容器内,也就是nextcloud 的默认数据路径:/var/www/html/data/root/files下。

如果只用这个路径的话我们的容器会越来越大,也不方便文件的迁移。

所以我们需要挂载到移动硬盘中,实现文件目录的共享:

首先安装外部存储应用:

梦中情盘!基于NextCloud搭建个人私有云!_第13张图片

然后点击 "External storage support" 开启外部存储:

梦中情盘!基于NextCloud搭建个人私有云!_第14张图片

梦中情盘!基于NextCloud搭建个人私有云!_第15张图片

到这步为止,我们容器内的数据路径已经指定了,下一步就该将这个数据目录和宿主机的移动硬盘共享了~

首先把移动硬盘格式化成FAST 32 的,其他的格式自行尝试。

查看硬盘信息:fdisk -l

由于启动nextcloud 时我们指定了 /mnt/usb 路径,就需要把硬盘挂载在这个路径:

mount -o dmask=000,fmask=000,iocharset=utf8 /dev/sdd4 /mnt/usb

然后重启nextcloud 服务:

docker restart nextcloud

这是后我们回到页面上上传文件,应该可以上传没问题,并同步到/mnt/usb 路径下。(此处坑极多!)有问题可参考FAQ。

梦中情盘!基于NextCloud搭建个人私有云!_第16张图片

这步上传没问题后 ,就成功80%了!

额外说一下,我这里在另一个R620 服务器起了个ftp服务,使用定时脚本,同步到磁盘阵列中,保证了数据的永久存储。具体实现就不多说了。

5.内网穿透

到了这一步,已经可以实现在内网环境下的文件的上传下载等,但是还是没有灵魂,那就是无法接入外网,这里方案也很多,使用ecs 服务器(太贵)、VPS服务器(很贵)、外网IP(不好申请),额,没有外网还叫什么云盘。

梦中情盘!基于NextCloud搭建个人私有云!_第17张图片

这时候想起了我的老朋友~ngrok 反向代理隧道技术~市面上很多,花生壳、frp 、Sunny等,我选用的就是Sunny-ngrok,盘他。

首先这里注册个域名,XXX.cc 一年30块钱。然后为了跳过繁琐的 XX 办认证,直接搞个Sunny 的香港服务器,带宽实测能达到10M左右。

梦中情盘!基于NextCloud搭建个人私有云!_第18张图片

将sunny 服务器的域名解析到自己买的XXX.cc上,ip 是docker 宿主机 ,也就是移动硬盘的挂载节点,端口是nextcloud 默认的端口.

梦中情盘!基于NextCloud搭建个人私有云!_第19张图片

配置在window server 服务器下载客户端

梦中情盘!基于NextCloud搭建个人私有云!_第20张图片

直接挂起来~~然后输入www.XXX.cc 域名, 外网访问成功!

梦中情盘!基于NextCloud搭建个人私有云!_第21张图片

梦中情盘!基于NextCloud搭建个人私有云!_第22张图片

梦中情盘!基于NextCloud搭建个人私有云!_第23张图片

至此基于NextCloud搭建个人私有云!搭建完成! 手机客户端、电脑客户端、webDAV、web等都可以访问~

六.FAQ

整理了比较有特点的踩坑记录:

  • 无法启动?

答:nextcloud首先检查,默认80端口是否占用、防火墙状态、SELinux 状态。

  • 校验数据库路径时,报红?

答:请检查容器内数据文件夹是否存在,是否有读写权限。

  • 上传英文文件正常,上传中文文件时报:"error while copying file to target location (copied bytes: -1, expected filesize: 3099 )" ?

答:这可能是在挂载U盘是没选择编码,需指定 iocharset=utf8

  • 上传文件后报Forbidden 403,上传失败?

答: 请检查docker内挂载路径,例如:/data 权限是否所属于www-data 用户

  • 上传的文件无法写入宿主机挂载目录?

答:mount 默认挂载U盘除了root是只读权限,需要放开权限:dmask=000,fmask=000

  • 移动硬盘拔插后,上传的数据全都没了?

答: nextcloud的 所有文件的元数据信息维护在oc_filecache表中,当卸下移动硬盘时,会按照删除操作,删除数据库元数据信息,可以先停止nextcloud 服务,在拔插硬盘,如果已删除,可以使用自带OCC命令恢复,搜索指引:"nexctcloud occ 使用"

  • 硬盘拔插后,上传文件后,并没有同步到宿主机目录?

答:移动硬盘在拔插挂载后,需重启 nextcloud 容器,否则只能上传到docker 容器内的data 目录。

你可能感兴趣的:(集群,大数据)