最近准备搭建一个私有云服务器,其功能只需要做文件存储,然后能在线播放视频即可,不需要太多花哨的功能,可能有人会说,一个 FTP 不就解决了吗,没必要那么麻烦。其实之前也确实是用的 FTP 在做文件的共享服务,FTP 在 Windows 系统上使用确实挺方便的,而且搭配 SSL ,其安全性也提高了,其实现方法可以参见 centos7搭建使用SSL加密的FTP服务器 ,但是现目前工作中接触的基本上都是 UOS 系统,该系统上的 FTP 使用就不是那么友好了,关键是无法做到视频文件的在线播放,必须下载到本地,这就不那么方便了,所以准备建个私有文件云,通过 web 来访问
之前在 OMV 上有个 filebrowser 的插件插件正好能满足我的需求,该软件支持私有独立部署,而且部署也挺简单的,这里做个简单介绍
1、安装filebrowse
根据其 官网 介绍, filebrowser 是一个二进制的文件,可以用作独立的可执行文件,而且安装也特别方便,一条命令解决问题
curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash
因为需要从 GitHub 上拉取资源,但是由于种种原因,使用以上命令可能会导致安装失败,这时可以直接到 GitHub仓库 下载,下载完成后,将其解压缩并复制到 /bin 路径下,便于执行
root@debian12:/home/user# tar -xvf linux-amd64-filebrowser_v2.27.0.tar.gz
CHANGELOG.md
LICENSE
README.md
filebrowser
root@debian12:/home/user# cp filebrowser /bin/
root@debian12:/home/user# ls /bin/filebrowser
/bin/filebrowser
2、配置filebrowser
安装或者拷贝完毕后,还需要进行一些简单的配置,才能正常运行
2.1、系统初始化
root@debian12:/home/user# filebrowser config init
Congratulations! You've set up your database to use with File Browser.
Now add your first user via 'filebrowser users add' and then you just
need to call the main command to boot up the server.
Sign up: false
Create User Dir: false
Auth method: json
Shell:
Branding:
Name:
Files override:
Disable external links: false
Disable used disk percentage graph: false
Color:
Theme:
Server:
Log: stdout
Port: 8080
Base URL:
Root: .
Socket:
Address: 127.0.0.1
TLS Cert:
TLS Key:
Exec Enabled: false
Defaults:
Scope: .
Locale: en
View mode: list
Single Click: false
Commands:
Sorting:
By: name
Asc: false
Permissions:
Admin: false
Execute: true
Create: true
Rename: true
Modify: true
Delete: true
Share: true
Download: true
Auther configuration (raw):
{
"recaptcha": null
}
2.2、配置监听地址
root@debian12:/home/user# filebrowser config set --address=192.168.10.122
...
Server:
Log: stdout
Port: 8080
Base URL:
Root: .
Socket:
Address: 192.168.10.122
TLS Cert:
TLS Key:
Exec Enabled: false
...
2.3、创建管理员用户
# 创建管理员账户
root@debian12:/home/user# filebrowser users add admin admin --perm.admin
ID Username Scope Locale V. Mode S.Click Admin Execute Create Rename Modify Delete Share Download Pwd Lock
1 admin / en list false true true true true true true true true false
# 创建一个普通用户
root@debian12:/home/user# filebrowser users add user user --perm.admin=false
ID Username Scope Locale V. Mode S.Click Admin Execute Create Rename Modify Delete Share Download Pwd Lock
2 user / en list false false true true true true true true true false
2.4、导出配置文件
可以将配置导出为 json 或 yaml 文件做备份,后期若服务出现故障后,可以用其快速恢复业务
root@debian12:/home/user# filebrowser config export filebrowser.yaml
2.5、启动服务
root@debian12:/home/user# filebrowser -c filebrowser.yaml -r data
2024/01/17 19:02:35 Using config file: filebrowser.yaml
2024/01/17 19:02:35 Listening on 192.168.10.122:8080
2.6、配置systemd服务
通过以上步骤,一个简单的 filebrowser 服务就可以正常行起来了,但是服务是在终端中运行的,终端退出服务也就终止了,因此我们还需要配置相应的服务文件,以便更好的使用、管理 filebrowser 服务
-
创建服务文件
root@debian12:~# vim /etc/systemd/system/filebrowser.service [Unit] Description=filebrowser Documentation=https://filebrowser.org/ After=network.target [Service] ExecStart=/bin/filebrowser -d /filebrowser/filebrowser.db -r /data [Install] WantedBy=multi-user.target
-
管理服务
# 重载服务 root@debian12:~# systemctl daemon-reload # 启动服务 root@debian12:~# systemctl start filebrowser # 设置开机启动 root@debian12:~# systemctl enable filebrowser Created symlink /etc/systemd/system/multi-user.target.wants/filebrowser.service → /etc/systemd/system/filebrowser.service. # 查看服务状态 root@debian12:~# systemctl status filebrowser ● filebrowser.service - filebrowser Loaded: loaded (/etc/systemd/system/filebrowser.service; enabled; preset: enabled) Active: active (running) since Thu 2024-01-18 10:11:57 CST; 48s ago Docs: https://filebrowser.org/ Main PID: 2242 (filebrowser) Tasks: 8 (limit: 2307) Memory: 4.7M CPU: 6ms CGroup: /system.slice/filebrowser.service └─2242 /bin/filebrowser -d /filebrowser/filebrowser.db -r /data 1月 18 10:11:57 debian12 systemd[1]: Started filebrowser.service - filebrowser. 1月 18 10:11:57 debian12 filebrowser[2242]: 2024/01/18 10:11:57 No config file used 1月 18 10:11:57 debian12 filebrowser[2242]: 2024/01/18 10:11:57 Listening on 192.168.10.122:8080
更多配置信息,请参见 官方网站
3、配置HTTPS
filebrowser 默认是通过 http 协议传输的,这会导致信息在网上通过明文传输,尤其是用户的账号和密码,存在极大的安全风险,因此我们需要使用 https 协议来降低这种风险,filebrowser 默认支持 https 协议,只需要简单的配置即可
3.1、签发证书
因为我们的证书主要是用来配置使用 https 协议,因此我们可以采用 Linux 系统自带的 SSL 工具自签一张证书
# 创建证书
root@debian12:~# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /filebrowser/filebrowser.key -out /filebrowser/filebrowser.pem
..................................++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
......................................................................................++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:sichuan
Locality Name (eg, city) []:deyang
Organization Name (eg, company) [Internet Widgits Pty Ltd]:tset
Organizational Unit Name (eg, section) []:it
# 此处的域名必须要和实际使用的域名相同
Common Name (e.g. server FQDN or YOUR name) []:test.com
Email Address []:admin@test.com
# 查看证书文件
root@debian12:~# ls -la /filebrowser
总计 60
-rw------- 1 root root 916 1月18日 10:27 filebrowser.key
-rw-r--r-- 1 root root 1062 1月18日 10:30 filebrowser.pem
3.2、配置filebrowser
filebrowser 配置 HTTPS 后,将只能使用 https 访问,不能使用 http 访问
-
停止服务
root@debian12:~# systemctl stop filebrowser
-
配置证书
root@debian12:~# filebrowser config set --cert /filebrowser/filebrowser.pem --key /filebrowser/filebrowser.key -d /filebrowser/filebrowser.db ... Server: Log: stdout Port: 8080 Base URL: Root: . Socket: Address: 192.168.10.122 TLS Cert: /filebrowser/filebrowser.pem TLS Key: /filebrowser/filebrowser.key Exec Enabled: false ...
-
重载服务
root@debian12:~# systemctl daemon-reload
-
启动服务
root@debian12:~# systemctl start filebrowser
-
查看服务状态
root@debian12:~# systemctl status filebrowser ● filebrowser.service - filebrowser Loaded: loaded (/etc/systemd/system/filebrowser.service; enabled; preset: enabled) Active: active (running) since Thu 2024-01-18 10:40:34 CST; 51s ago Docs: https://filebrowser.org/ Main PID: 2313 (filebrowser) Tasks: 8 (limit: 2307) Memory: 4.7M CPU: 7ms CGroup: /system.slice/filebrowser.service └─2313 /bin/filebrowser -d /filebrowser/filebrowser.db -r /data 1月 18 10:40:34 debian12 systemd[1]: Started filebrowser.service - filebrowser. 1月 18 10:40:34 debian12 filebrowser[2313]: 2024/01/18 10:40:34 No config file used 1月 18 10:40:34 debian12 filebrowser[2313]: 2024/01/18 10:40:34 Listening on 192.168.10.122:8080