「File Browser」- 基于网页的文件管理器

问题描述

1)我们需要和朋友共享文件、文档,并且希望长期保存、随时查找。使用 Samba 软件,配置复杂,并且公网需要考虑安全问题;使用 QQ、WeChat 软件,对于 Linux 用户不友好,而且存在共享、空间、长期保存的问题;使用 FTP/SFTP 协议,需要安装客户端。

=> 解决方案的查找范围锁定在 第三方文件托管服务(百度云盘)、或者自建文件托管服务(NextCloud)等等。我们选择自建文件托管服务,主要还是费用问题(穷)。

2)我们希望使用电脑的方式来管理这些文件,比如直接播放视频,直接打开图片,直接编辑文件等等,就像直接操作电脑一样。

3)我们希望平台更加透明,易于管理与迁移。所谓“透明”即平台直接管理操作系统的文件,而不是以特定方式封装之后以组织在文件系统中。这样我们既可以在平台中管理,也可以在操作系统的文件系统中直接管理。如果某天我们想要更换平台,或者平台不再维护,我们会更容易进行迁移。

解决方案

所以想找网页版的文件管理器部署到服务器上,通过浏览器上传到服务器,通过浏览器从服务器下载,并且能够支持文件编辑。

目前(10/23/2020)GitHub/filebrowser/filebrowser 可以满足我们的需求。由于它直接管理文件系统中的文件,因此即便不是最好的方案,我们也

功能特性

基于网页版的文件管理器,使用 Go 语言开发。具有以下特性:
1) you can install it on a server, direct it to a path and then access your files through a nice web interface.
2) Easy login system
3) Manage your files through a sleek interface
4) Manage users, add permissions, set scopes
5) Edit your files, of course!
6) Execute custom commands
7) Customize your installation

暂时不具备的功能:在线预览图片缩略图,图片只有打开才能看见。更多其他的特性可以参考官方的文档。界面UI可以查看官网

安装方法

方法一、命令行直接运行

curl -fsSL https://filebrowser.github.io/get.sh | bash

该命令会在 /usr/local/bin 下安装 filebrower 命令。终端执行该命令会启动 HTTP 服务,然后监听一个端口(终端的输出日志中会显示端口号)。更多细节可以参考官方手册

卸载方法:
如果使用上面方法一的命令安装的,那直接删除 /usr/local/bin/filebrower 命令就可以了。
因为 get.sh 脚本本质上就是从 GitHub 上下载已经编译好的压缩包然后到本地解压。

方法二、通过 systemd 部署

1)在 Release 中,下载二进制文件;

2)使用 filebrowser.service 管理服务:

[Unit]
Description=File Browser
After=network.target remote-fs.target nss-lookup.target

[Service]
ExecStart=/path/to/filebrowser -a 127.0.0.1 -p 8080 -d /path/to/filebrowser.db -r /path/to/root

[Install]
WantedBy=multi-user.target

3)使用 Nginx 反向代理:

server {
        server_name filebrowser.example.com;
        listen 80;

        access_log /var/log/nginx/filebrowser.example.com.access.log;
        error_log /var/log/nginx/filebrowser.example.com.error.log;

        location / {
                proxy_pass http://127.0.0.1:8080;
        }

}

通过 Docker Compose 部署

version: '3'

services:
  filebrowser:
    image: "filebrowser/filebrowser"
    container_name: "filebrowser"
    hostname: "filebrowser"
    ports:
      - 8080:80
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime
      - /srv/media:/srv
      - ./filebrowser.db:/database.db
      # - ./.filebrowser.json:/.filebrowser.json

服务配置

通过 filebrowser config 等等命令进行配置,参考 Command Line Interface 文档。

但是,在配置前,需要先停止服务,才能执行配置命令。否则会返回如下错误:

# ./filebrowser config cat
2020/12/26 19:02:40 timeout

关闭登录界面(即关闭认证)

Authentication Method – File Browser

filebrowser config set --auth.method=noauth

参考文献

GitHub/filebrowser/filebrowser
File Brower/Welcome
Command Line Interface – File Browser