折腾日记:如何在家搭建一个网盘-filebrowser使用
最近,在家备份自己照片、文件时,由于家里没有nas,需要自己接上移动硬盘,先复制到第一个移动硬盘中,然后再备份到另一个硬盘,完成2份存储。觉得比较麻烦。
一开始,为什么没有考虑nas或者百度网盘?一方面,是网上各种个人网盘,要是不开通会员,下载速度你懂的,就会限速,实在是太慢了,其次,无论网盘还是nas提供的服务,都会存在泄密风险。毫无私密性可言,所以就考虑自己搭建一个文件管理服务。
正好家里有一个闲置的旧笔记本,于是,搭建一个带有raid
功能的家庭存储,由于家里两个硬盘的大小不一致,先考虑实现一个网盘功能,可以在家,随时访问内网服务器,通过网页上传文件,开始动手
服务器准备
第一步,先准备一个服务器环境,把自己退休下来的惠普zbook
工作站,安装上ubuntu
环境,然后连上一个硬盘盒子,构建一个简易服务器
,先上一个效果图
一步到位购买了绿联的5盘位的硬盘矩阵盒,觉得麻烦,可以购买自带raid
功能的盒子,我是使用了mdadm
实现的raid1
(后续会更新文章讲述怎么使用mdadm
),就没多花这部分费用。
软件选择
既然服务器、存储设备都有了,就要考虑怎么实现文件管理,当时,先考虑使用Java开发一个web来服务管理硬盘文件,找了很多开源项目,发现一个Filebrowser
,然后试用了一会,还是很满意
Filebrowser
的优点:
- 直接运行,操作简单
不需要安装任何环境依赖,可以直接运行,比如在window
下,直接点击exe
文件即可,在Linux服务器上,只要指令运行可执行文件即可
./filebrowser -c config.json
- 源码开源
filebrowser
是go
语言写的服务器程序,前端使用vue
,代码可以在GitHub
下载,自己对源码进行修改,添加新的功能,由于是简单的文件管理服务,filebrowser
,有些功能还不够完善,比如当文件夹内文件比较多,加载比较缓慢。甚至卡死 - 直接操作目录
这最满意的地方,操作的对象为硬盘的目录,可以实时浏览,修改硬盘上的文件,所见即所得
编译服务
由于,是打算后续对filebrowser
进行二次开发,也算对go
语言进行学习,所以就下载了源码,自己编译可执行文件
frontend
是对应的前端的代码
先编译这块代码,看一下前端界面效果
cd frontend
npm install
npm run serve
在运行一下后端服务,登陆admin账号,同时设置为默认中文显示
完成以上的步骤,就开始准备在服务器上运行,由于我的电脑是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
当然,可以使用nohup将服务器运行在后台,或者设置服务器开始就运行
扩展
ubuntu
默认,是将硬盘挂载在/media/用户/
目录下的,使用不太方便,于是考虑将硬盘永久挂载在根目录下,软链接(mount /dev/md1 /raid1/
)会在重启后消失
- 查看硬盘挂载
df -hl
可以有个4T硬盘挂载在/dev/sdb2
2. 在根目录创建一个文件夹
mkdir raid1
- 查看硬盘
blkid /dev/md1
获取到硬盘的uuid,类型等信息
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
如果没有报错信息,就证明硬盘被永久挂载到指定目录