FileRun 是一个极轻量,内存占用极小的网盘程序,用于替代 NextCloud 等网盘应用。
可能很多人都没听过 FileRun,它最初开发是用在树莓派上运行的,作者已经维护了很多年,在近期的版本更新又带来了很多强大的功能。

filerun thumbnail

FileRun 是一个由 PHP 编写的网盘程序,核心功能是文件管理及文件共享,在这个基础上提供了丰富的插件,例如:文本编辑、OFFICE 文档、音视频播放、PDF 查看等。

安装简单,使用 Docker 就能轻松将它运行在服务器上,需要进行站点迁移也很方便。

优点:

  1. 支持在线查看图片、3D 模型、音视频播放、在线文档编辑、多任务分工等,支持 zip / tar / gz 等压缩文件在线解压。
  2. 多平台支持:支持 PC / Android / iOS 三端,借助 NextCloud 客户端以及第三方 WebDAV 客户端,即可做到 Win / Mac / Linux 等多端支持。
  3. 界面简洁、极轻量 & 内存占用低,并且兼容性好,运行在树莓派上也不吃力。
  4. 不会改变图片的文件名,文件的目录结构。不用担心精心分类好的相片被打乱。

缺点:

  1. 网盘程序不支持匿名访问,不能当作下载网盘给他人使用,只能通过链接分享
  2. 免费版功能有阉割,并且限制用户数量最大 5 个

官方创建了一个 DEMO,通过这个链接访问:https://demo.filerun.com/

环境搭建

推荐使用 Docker Compose 搭建并运行 FileRun 程序,并且使用 Caddy2 进行反向代理给外部使用。

Caddy2 是一个用于替代 Nginx 的程序,配置很简单,并且可以直接开启 HTTPS 功能,不需要自己去申请证书,非常适合个人项目使用。

关于安装 Caddy2,可以参考这片文章:Caddy2 安装

使用 Docker Compose 配置

使用 Docker Compose 可以通过 yml 文件来配置 Docker 程序所需要的服务及配置,通过使用 docker-compose 命令就可以创建并启动 Docker 服务。

首先,我们创建一个用来放置 FileRun 配置的文件夹

1
mkdir ~/filerun && cd ~/filerun

使用上方命令,在当前用户目录创建一个 filerun 文件夹,并进入此文件夹,键入下方命令创建 docker-compose 的配置文件,并录入文件内容。

1
vim docker-compose.yml

将下方的代码复制到 docker-compose.yml 文件里:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
version: "3.8"

services:
db:
image: mariadb:10.5
container_name: filerun_mariadb
environment:
MYSQL_ROOT_PASSWORD: your_mysql_root_password
MYSQL_USER: your_filerun_username
MYSQL_PASSWORD: your_filerun_password
MYSQL_DATABASE: your_filerun_database
volumes:
- ./db:/var/lib/mysql

web:
image: filerun/filerun
container_name: filerun_web
environment:
FR_DB_HOST: db
FR_DB_PORT: 3306
FR_DB_NAME: your_filerun_database
FR_DB_USER: your_filerun_username
FR_DB_PASS: your_filerun_password
APACHE_RUN_USER: www-data
APACHE_RUN_USER_ID: 33
APACHE_RUN_GROUP: www-data
APACHE_RUN_GROUP_ID: 33
depends_on:
- db
links:
- db
- tika
- elasticsearch
ports:
- "8080:80"
volumes:
- ./html:/var/www/html
- ./user-files:/user-files

让我们浏览一下这份配置文件:

  1. 首先,它会拉取用于存储数据的 MariaDB 数据库。 在 MariaDB 镜像的 environment 处配置  root  密码、MySQL 用户名、MySQL 密码和运行 FileRun 的数据库名称。 数据库将会安装在  ~/filerun/db  目录下。
  2. 在 web 中修改 environment 内容,配置 FileRun 程序连接到 MariaDB 数据库。运行后 FileRun 的镜像在内部会运行一个 Apache 服务器并通过 80 端口开放 Web 服务。我们将 html 文件目录~/filerun/html  以及用户上传的文件目录  ~/filerun/user-files  开放出来。

确认配置无误,保存文件后运行下方指令即可运行 FileRun 程序。

1
docker-compose up -d

配置反向代理

这里使用 Caddy2 进行反向代理,在添加反向代理之前,先确保已经完成了域名解析,并且已经安装了 Caddy2 程序。如果还没有安装,可以参考这片文章:Caddy2 安装

在上面的 docker-compose 配置文件里,将 FileRun 镜像开放出来的 80 端口,转发到本机的 8080 端口上,所以我们只需要将本机的 8080 代理到域名即可,这里使用下述 Caddyfile 配置文件。

1
2
3
4
5
6
7
8
9
example.com {
gzip
proxy / 127.0.0.1:8080 {
header_upstream Host {host}
header_upstream X-Real-IP {remote}
header_upstream X-Forwarded-For {remote}
header_upstream X-Forwarded-Proto {scheme}
}
}

这份配置会自动给站点签发 SSL 证书,并且自动将此站点的所有请求转发给本机的 8080 端口程序(也就是 FileRun 程序)

最后,祝大家用的开心,并且强烈推荐再搭建一个 bitwarden 进行密码管理,同样是使用 Docker + Caddy2:创建私有密码管理程序BitWarden

参考链接

编写本文的配置文件,参考了官网的资料以及一些其他前辈的分享,有兴趣的可以去看看原文: