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 full-upgrade升级固件以支持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
本文至此结束,有什么意见和建议可以发评论哈…
There is also a github repo for generating a docker image for aarch64
https://github.com/fivestones/docker-arm64v8
$ docker build -t afian/filerun https://github.com/fivestones/docker-arm64v8
我搭建好了apache2及php7.3 这两个网页访问都没问题php的模块都检测过也没问题,但是最新版的filerun就是跑不起来 ,之前基于这两个的nextcloud也是没问题的 十分心累