折腾日记:如何在家搭建一个网盘-filebrowser使用

最近,在家备份自己照片、文件时,由于家里没有nas,需要自己接上移动硬盘,先复制到第一个移动硬盘中,然后再备份到另一个硬盘,完成2份存储。觉得比较麻烦。
一开始,为什么没有考虑nas或者百度网盘?一方面,是网上各种个人网盘,要是不开通会员,下载速度你懂的,就会限速,实在是太慢了,其次,无论网盘还是nas提供的服务,都会存在泄密风险。毫无私密性可言,所以就考虑自己搭建一个文件管理服务。
正好家里有一个闲置的旧笔记本,于是,搭建一个带有raid功能的家庭存储,由于家里两个硬盘的大小不一致,先考虑实现一个网盘功能,可以在家,随时访问内网服务器,通过网页上传文件,开始动手

服务器准备

第一步,先准备一个服务器环境,把自己退休下来的惠普zbook工作站,安装上ubuntu环境,然后连上一个硬盘盒子,构建一个简易服务器,先上一个效果图

IMG_3414
一步到位购买了绿联的5盘位的硬盘矩阵盒,觉得麻烦,可以购买自带raid功能的盒子,我是使用了mdadm实现的raid1(后续会更新文章讲述怎么使用mdadm),就没多花这部分费用。

软件选择

既然服务器、存储设备都有了,就要考虑怎么实现文件管理,当时,先考虑使用Java开发一个web来服务管理硬盘文件,找了很多开源项目,发现一个Filebrowser,然后试用了一会,还是很满意
Filebrowser的优点:

  1. 直接运行,操作简单
    不需要安装任何环境依赖,可以直接运行,比如在window下,直接点击exe文件即可,在Linux服务器上,只要指令运行可执行文件即可
./filebrowser -c config.json 
  1. 源码开源
    filebrowsergo语言写的服务器程序,前端使用vue,代码可以在GitHub下载,自己对源码进行修改,添加新的功能,由于是简单的文件管理服务,filebrowser,有些功能还不够完善,比如当文件夹内文件比较多,加载比较缓慢。甚至卡死
  2. 直接操作目录
    这最满意的地方,操作的对象为硬盘的目录,可以实时浏览,修改硬盘上的文件,所见即所得

编译服务

由于,是打算后续对filebrowser进行二次开发,也算对go语言进行学习,所以就下载了源码,自己编译可执行文件
image-1706437542864
frontend是对应的前端的代码
先编译这块代码,看一下前端界面效果

cd frontend
npm install
npm run serve 

image-1706437802920
在运行一下后端服务,登陆admin账号,同时设置为默认中文显示
image-1706438092670
完成以上的步骤,就开始准备在服务器上运行,由于我的电脑是mac,服务器上是ubuntu,默认编译出在mac环境下的执行文件,所以需要设置go的编译配置,

export GOPROXY=https://goproxy.cn   
go mod download  

先将go的依赖库设置为国内的环境,

set CGO_ENABLED=0                                                   
set GOOS=linux
set GOARCH=amd64
go build -o filebrowser main.go    

然后进行编译,等执行结束后,就可以在目录下看到filebrowser的可执行文件,上传到服务器就可以了,我是保存在/usr/local/filebrowser目录下,除此之外,我们要是添加一些个性配置,可以在配置文件config.json 添加,比如我是设置端口9999和默认根目录是为备份盘

{
   "address":"0.0.0.0",
   "database":"/usr/local/filebrowser/db/filebrowser.db",
   "log":"/usr/local/filebrowser/log/filebrowser.log",
   "port":9999,
   "root":"/raid1",
   "username":"admin"
}

等完成这一系列的操作后,就可以直接运用下面的指令,在内网访问自己的云盘

./filebrowser -c config.json 

image-1706438836161
当然,可以使用nohup将服务器运行在后台,或者设置服务器开始就运行

扩展

ubuntu默认,是将硬盘挂载在/media/用户/目录下的,使用不太方便,于是考虑将硬盘永久挂载在根目录下,软链接(mount /dev/md1 /raid1/)会在重启后消失

  1. 查看硬盘挂载
df -hl

image-1706439245779
可以有个4T硬盘挂载在/dev/sdb2
2. 在根目录创建一个文件夹

mkdir raid1
  1. 查看硬盘
blkid /dev/md1

获取到硬盘的uuid,类型等信息
image-1706439475882
4. 添加挂载配置
编辑/etc/fstab文件,添加硬盘信息

vim /etc/fstab
UUID=ae596716-0794-4f54-8ae5-1f1768ae732f /raid1  xfs defaults 0 0

其中
第5⃣️列:能否被dump备份命令作用
0代表不要做dump备份
1代表要每天进行dump的操作
2代表不定日期的进行dump操作
第6⃣️列 是否检验扇区 开机的过程中,系统默认会以fsck检验我们系统是否为完整(clean)
0 不要检验 1 最早检验(一般根目录会选择)2 1级别检验完成之后进行检验
5. 检查挂载

sudo mount -a

如果没有报错信息,就证明硬盘被永久挂载到指定目录