filerun是国外的一款网盘程序或者说是一款基于网页的文件管理器(web file manager),看官网开发者应该是一家瑞典公司,国内使用的人目前似乎还不是很多。之前在树莓派上配置网盘,先后尝试过nextcloud、kodbox、seafile、cloudreve等等,最终选择了filerun,目前已使用近一年。filerun的主要优点在于它更像一款简单、快速、纯粹的网盘程序。免费版支持3个用户,个人使用来说也足够。filerun没有自己的客户端,但可以使用nextcloud的客户端。

准备工作

树莓派4B一个,文件存储推荐使用2.5寸移动硬盘,其他USB存储如3.5寸移动硬盘、大容量USB 3.0 U盘等也可以。连两个移动硬盘配置成软raid1理论上应该也没问题。

操作系统推荐64位的Debian-Pi-Aarch64(https://github.com/openfans-community-offical/Debian-Pi-Aarch64)或Ubuntu Server 20.04,本文以Debian-Pi-Aarch64为例,推荐使用无桌面的基础版,目前(2021-1-28)最新版本是2021-01-02-OPENFANS-Debian-Buster-Aarch64-ext4-v2021-2.0-U6-Release.img。Ubuntu Server 20.04的配置过程基本相同,只需要注意PHP的版本不同、关闭防火墙等

系统可以安装在SD卡上,也可以直接安装在移动硬盘上。需要注意的是如果没有更新过树莓派的固件,需要先在SD卡上安装官方系统执行sudo apt fullupgrade升级固件以支持USB启动。另外,树莓派的Ubuntu Server 20.04默认不支持USB启动,需要一番配置才可以,本文不赘述。

系统安装完成后配置固定IP地址、开启SSH、更新系统

安装配置数据库

安装MariaDB,它是MySQL的社区开源分支

sudo apt install mariadb-server

安装完成后,建议运行MariaDB随附的安全脚本。该脚本将删除一些不安全的默认设置,并锁定对数据库系统的访问。通过运行以下命令来启动交互式脚本:

sudo mysql_secure_installation

刚安装的数据库,还没有数据库root密码,直接回车设置root密码

剩下的步骤分别是移除默认的匿名账户、禁止root账户的远程登录、删除test数据库、重新加载特权表让更改生效等,一路按Y确认即可

接下来创建filerun所需的数据库和数据库账户

首先,使用root帐户登录MariaDB:

sudo mysql 

创建filerun数据库,数据库可以随意命名,但本文示例直接使用filerun

CREATE DATABASE filerun;  

接下来,创建一个单独的MariaDB数据库用户帐户,该帐户将管理新创建的filerun数据库。从管理和安全的角度来看,创建单一功能的数据库和帐户是一个好主意。与数据库的命名一样,可以选择自己喜欢的用户名。本示例直接选择使用filerun作为账户名称。

CREATE USER 'filerun'@'localhost' IDENTIFIED BY '此处替换为filerun账户密码';  

现在,将新创建的数据库上的所有权限授予用户:

GRANT ALL ON filerun.* TO 'filerun'@'localhost';  

在为用户分配了对数据库的访问权限后,执行flush-privileges操作以确保正在运行的MariaDB实例知道最新的权限分配:

FLUSH PRIVILEGES;  

这样就完成了MariaDB数据库的配置,输入exit退出会话:

exit  

记下数据库名称filerun,用户名filerun和密码,稍后配置filerun需要这些信息。

安装apache2

官网显示filerun支持apache、nginx、IIS等web服务器,但官方教程似乎钟爱apache

sudo apt install apache2

安装完成之后就可以在浏览器打开树莓派的IP地址,看到一个示例网页

安装配置PHP

安装PHP及需要的各种PHP模块

sudo apt install php libapache2-mod-php php-mysql php-mbstring php-zip php-curl php-gd php-ldap php-xml php-imagick  

安装完成后,可以运行以下命令来确认PHP版本:

php -v

安装memcached

filerun官方教程似乎没有推荐安装memcached,但安装之后网页加载速度有明显提升,因此本示例建议安装

sudo apt install memcached libmemcached-tools php-memcached 

安装ionCube

filerun还需要一个闭源的PHP模块ionCube,需要手动安装,先从官网下载arm64版本的ioncude loaders,地址:https://www.ioncube.com/loaders.php

下载完成后通过winscp或其他工具放进pi的home目录(直接在树莓派用wget/curl下载可能会因为墙的原因下载失败)

解压

tar -xzf ioncube_loaders_lin_aarch64.tar.gz

将ioncube_loader_lin_7.3.so这个文件复制到/usr/lib/php,注意如果使用Ubuntu Server 20.04,PHP版本应该是7.4,需要复制的是ioncube_loader_lin_7.4.so

sudo cp ioncube/ioncube_loader_lin_7.3.so /usr/lib/php

新建PHP配置文件以加载ioncube模块

sudo vi /etc/php/7.3/apache2/conf.d/00-ioncube.ini 

输入以下内容

zend_extension = /usr/lib/php/ioncube_loader_lin_7.3.so

配置FileRun需要的PHP参数

创建一个配置文件,该文件将自动由PHP附加到其配置中。这将包括FileRun所需的所有设置。

sudo vi /etc/php/7.3/apache2/conf.d/filerun.ini  

将以下内容粘贴到创建的文件中:

expose_php              = Off  
error_reporting         = E_ALL & ~E_NOTICE  
display_errors          = Off  
display_startup_errors  = Off  
log_errors              = On  
ignore_repeated_errors  = Off  
allow_url_fopen         = On  
allow_url_include       = Off  
variables_order         = "GPCS"  
allow_webdav_methods    = On  
memory_limit            = 128M  
max_execution_time      = 300  
output_buffering        = Off  
output_handler          = ""  
zlib.output_compression = Off  
zlib.output_handler     = ""  
safe_mode               = Off  
register_globals        = Off  
magic_quotes_gpc        = Off  
upload_max_filesize     = 20M  
post_max_size           = 20M  
enable_dl               = Off  
disable_functions       = ""  
disable_classes         = ""  
session.save_handler     = files  
session.use_cookies      = 1  
session.use_only_cookies = 1  
session.auto_start       = 0  
session.cookie_lifetime  = 0  
session.cookie_httponly  = 1  
date.timezone            = "Asia/Shanghai"  

注意:可以在这里找到FileRun建议的最新PHP设置:http://docs.filerun.com/php_configuration

本人实测upload_max_filesize = 20M post_max_size = 20M两个值可以适当改大一些,可以提高上传大文件时的速度,但不能太大,否则可能适得其反,两个值要相同,个人建议设置在20M-200M之间。

最后,重新启动Apache使以上PHP配置生效:

sudo systemctl restart apache2  

验证PHP配置

在默认的web根目录里创建一个phpinfo.php文件

sudo vi /var/www/html/phpinfo.php

输入以下内容:

<?php
phpinfo();

然后浏览器里打开以下地址

http://树莓派IP地址/phpinfo.php

看到以下页面可以确认PHP配置成功,同时可以在这个页面检查ioncube、memcached等PHP模块是否正常启用

 

配置FileRun

配置完数据库和PHP之后,就可以开始配置filerun了。首先从官网https://www.filerun.com/download下载目前(2021-1-28)最新版本的filerun:FileRun_2020_11_21_PHP_71-73.zip,通过winscp等工具放进pi的home目录,也可以直接用以下命令在树莓派上下载,但可能速度很慢

sudo wget -O FileRun.zip http://www.filerun.com/download-latest 

删除默认的web根目录里的文件

sudo rm  /var/www/html/*

将下载的filerun压缩包复制到/var/www/html下并解压

sudo cp FileRun_2020_11_21_PHP_71-73.zip /var/www/html/ 
cd /var/www/html
sudo unzip /var/www/html/FileRun_2020_11_21_PHP_71-73.zip

使Apache成为文件夹的所有者,以便可以进行更改:

sudo chown -R www-data:www-data /var/www/html/  

然后就可以在浏览器里打开树莓派的IP地址,配置filerun了

注意要记下密码

接下来先改上传中文翻译文件把界面改成中文吧

从https://github.com/filerun/translations下载翻译文件

下载完成后解压,将其中的chinese.php在以下界面上传

更改superuser密码

 

为superuser配置存储文件的主目录

创建一个目录并为apache赋予权限

sudo mkdir  /files  
sudo chown www-data:www-data  /files

注意:使用SD卡安装系统并使用移动硬盘存储文件的话,在此时应该挂载移动硬盘到/files文件夹,并设置开机自动挂载,如果系统直接安装在移动硬盘上,这步跳过即可。

假如移动硬盘是sda,上面只有一个分区sda1,挂载示例:

先格式化成ext4分区格式

sudo mkfs.ext4 /dev/sda1

手动挂载命令

mount  /dev/sda1 /var/www/html/kodbox

开机自动挂载需编辑/etc/fstab,修改fstab文件请谨慎,确认好再保存,在下面添加一行:

/dev/sda1 /var/www/html/kodbox ext4 defaults 0 0 

重启之后可用df -h或lsblk命令查看是否能开机自动挂载。

请注意如果插有多个USB 存储设备,则建议在fstab文件中以PARTUUID的方式写入而不是/dev/sda1这样,否则可能会因为USB存储设备的顺序在开机时随机分配而挂载失败,也就是说本来是sda,重启之后可能就变sdb了,查看分区PARTUUID的命令:

sudo blkid

 

在控制面板里为superuser用户设置主目录

到此处已经基本配置完成了

后续处理

安全加固

安装完成后FileRun需要写权限的唯一目录是system/data,因此可以仅允许PHP对system/data有写权限,其他文件需要root权限才能修改:

sudo chown -R root:root /var/www/html  
sudo chown -R www-data:www-data /var/www/html/system/data  

安装ImageMagick和FFmpeg

为了生成图像文件,摄影文件甚至PDF文档的缩略图,请按以下方式安装ImageMagick:

sudo apt install imagemagick  

为了生成视频文件的缩略图,请按以下方式安装FFmpeg:

sudo apt install ffmpeg  

然后在控制面板里启用它们:

启用oAuth2 API以兼容nextcloud的客户端

使用nextcloud的客户端访问filerun需要配置以下选项

外网访问

如果需要在外网访问你的filerun网盘,则根据实际情况可以采取很多种手段。

如果你的宽带运营商给你的是不固定的公网IP,可以通过域名+动态DNS从外网通过域名访问。需要注意国内的家用宽带应该都不会给你开放80端口,需要在路由器里配置端口映射,将其他端口映射到树莓派的22、80、443等端口

如果你已经有自己的域名+VPS,则可以通过frp将树莓派的22、80、443等端口映射到公网的VPS上

如果既没有公网IP,又没有域名、VPS,则可以尝试使用各种免费、收费的内网穿透服务,在此不赘述。

配置SSL证书

如果配置了树莓派的外网访问,则建议配置ssl证书以启用https访问。可以直接为你的域名购买付费的长期证书。也可以申请免费的Let’s Encrypt证书,但需要有在公网的VPS+frp配合,具体过程不赘述,可以参考以下链接:

https://github.com/fatedier/frp/blob/dev/README_zh.md

https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-20-04

 

本文至此结束,有什么意见和建议可以发评论哈…

发表评论

您的电子邮箱地址不会被公开。

13 − 6 =