filebrowser私有文件云搭建

admin 2024年01月19日 12次浏览

最近准备搭建一个私有云服务器,其功能只需要做文件存储,然后能在线播放视频即可,不需要太多花哨的功能,可能有人会说,一个 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