搭建私人专属FileRun云盘

什么是FileRun云盘

FileRun是由PHP编写的文件管理器和文件共享程序,它提供了丰富的插件功能,例如文本编辑器、图片查看器、文件加密、PDF预览、视频音频播放、Office文档、地图等、在线上传等等。
我们可以直接自己在线txt、html、css文件等,将FileRun当成一个在线编辑器,同时FileRun也支持文件拖拉上传,你可以直接上传文件夹。
在本教程中,我们将在CentOS 7服务器上安装FileRun。

服务器环境搭建

这里我使用的是centos7操作系统,需要注意的是安装的时候一定要选择基本网页服务器,如果选择最小安装貌似在之后的安装过程中会出现一些未知的问题(也许是我这个版本有一些BUG,不过这里我们不做讨论)

配置网页服务器

第一步 配置以太网

首次安装的centos7操作系统它是默认不打开以太网连接的,所以我们首先要启动以太网

1
2
cd /etc/sysconfig/network-scripts
vi ifcfg-XXX

打开这个ifcfg-XXX文件后将ONBOOT参数设置为yes
然后在输入service network start讲服务拉起来就可以了,至此centos7操作系统的以太网已经打开(如果大家想用固定IP可以自行Google查找)
按照我个人的习惯,我喜欢在系统第一次连接上以太网后执行yum update -y命令来更新一下系统软件,然后我才会继续下一步的安装和配置

第二步 安装DockerDocker-Compose

Docker安装步骤

安装 Docker,这里使用官方安装脚本自动安装

1
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

启动 Docker

1
2
systemctl enable docker
systemctl start docker

Docker-Compose安装步骤

从官方GitHub Release 处直接下载编译好的二进制文件即可

1
2
curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

第三步 使 Docker安装FileRun

首先我们要先创建一个名为的文本文件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
39
40
41
42
43
44
45
version: '2'

services:
db:
image: mariadb:10.1
environment:
MYSQL_ROOT_PASSWORD: your_mysql_root_password
MYSQL_USER: your_filerun_username
MYSQL_PASSWORD: your_filerun_password
MYSQL_DATABASE: your_filerun_database
volumes:
- /filerun/db:/var/lib/mysql

web:
image: filerun/filerun
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:db
ports:
- "8080:80"
volumes:
- /filerun/html:/var/www/html
- /filerun/user-files:/user-files

proxy:
image: 'jc21/nginx-proxy-manager:latest'
container_name: npm
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- /filerun/proxy/data:/data
- /filerun/proxy/letsencrypt:/etc/letsencrypt

换句话说,如果你使用上面的配置文本,你只需要创建两个空文件夹,/filerun/html /filerun/user-files 这样你就可以启动FileRun Docker容器了

1
mkdir /filerun /filerun/html /filerun/user-files /filerun/db

并使用以下命令启动 FileRun:

1
docker-compose up -d

第四步 挂载Samba到Linux服务器上

这里其实是为了数据安全,作者有自己的NAS服务器,所以我选择将FileRun的用户文件夹使用Samba映射到NAS中,这样可以利用NAS的特性进行数据备份以及开启版本回滚等功能
当然在挂载的这一过程必须是FileRun没有运行的情况下去操作,如果已经安装步骤三将系统跑起来了,可以使用以下命令停止docker容器

1
docker-compose stop

如果出现提示说当前目录被应用程序占用,可能需要自行解决一下,这个Google一下就好,不过最简单的办法可能是重启一下你的服务器,虽然这可样有些不优美…

那开始挂载之前,我们需要先使用yum来安装cifs-utils

1
yum install cifs-utils -y

执行挂载目录(挂载前确定好要挂载的目录是为空的,不然非空的文件夹挂在后会被清空的)
mount -t cifs -o username=“username”,password=“your password” //samba服务器域名或者samba服务器IP/共享名/ /挂载点

1
mount -t cifs //192.168.1.1/share/ /filerun/user-files -o username='username',password='your password'

到此我们应该可以在/filerun/user-files这个文件夹中看到我们NAS共享出来的SMB里的文件了

接下来我们就要将这个挂载设置为自动挂载,方便日后重启服务器可以不用再次手动进行挂载操作

这个实现挂载有两种办法:

  • 方法一:通过追加fstab文件的方式自动挂载
1
2
3
vim /etc/fstab
增加以下内容
mount -t cifs //192.168.1.1/share/ /filerun/user-files -o username='username',password='your password'

然后我们执行挂载

1
mount -a
  • 方法二:通过开机自动加载rc.local的方式自动挂载
1
echo "mount -t cifs //192.168.1.1/share/ /filerun/user-files -o username='username',password='your password'" >> /etc/rc.local 

这样在开机的时候系统会执行/etc/rc.local而自动挂载samba的共享文件夹
执行命令,让共享文件夹被挂载

1
bash /etc/rc.local

不过这里会遇到一个问题,也是我在部署Filerun遇到最大的阻力,就是文件权限问题。按照我们刚刚的操作Linux默认的文件权限是755,也就是rwxr-xr-x,这样当我们不是当前用户来操作的时候就只有读取和执行的权限,没有删除的权限,这样会很麻烦。
所以呢我们需要在挂载的命令上在加上一句权限指令来解决这个问题。这里的话我就演示方案二,方案一同理:

1
echo "mount -t cifs //192.168.1.1/share/ /filerun/user-files -o username='username',password='your password',dir_mode=0777,file_mode=0777" >> /etc/rc.local 

这里我们可以看到我们使用了的是file_mode 和dir_mode 来设置权限,覆盖默认的755权限。这样普通用户也就用了对/filerun/user-files的读写权限

第五步 配置Nginx Proxy Manager管理软件

通过端口号(http://your-site:81) Nginx Proxy Manager在浏览器中访问管理控制台81,并使用默认凭据登录:

1
2
Email:    admin@example.com
Password: changeme
Nginx配置

这里我们需要使用nginx proxy manager实现反向代理,进去到该软件内后点击Proxy Hosts转到反向代理设置界面。

Nginx配置代理端口

点击Add Proxy Host,添加一个反向代理。

Nginx配置一个反代端口

在Details页面,Domain Names填写你的域名,Scheme填写反代对象的协议(http/https),Forward Hostname/IP填写反代对象的地址,Forward Port填写反代对象的端口号。

Nginx添加一个端口

如果有https加密需求,转到SSL页面,将SSL Certificate选择为你申请的证书,建议勾选SSL Force(强制SSL)。
这里需要注意的是如果想使用Nginx Proxy Manager提供的免费证书,需要确保公网可能访问到该软件,否则免费证书是无法获取到的,具体的操作可以自行Google一下。
我呢使用的是自己的SSL证书,只需要将文件导入到Nginx Proxy Manager中即可,这里就不赘述了。

Nginx配置SSL

到此呢我们基本可以使用自己的域名访问到我们的FileRun云盘了

不过到这里还没有完全结束,因为大家会发现使用IP访问的时候好像没有问题,但是使用域名访问会碰到卡在登录的界面上面,解决办法也比较方便
首先我们要到/filerun/html这个路径下,接着cd/customizables/这个文件路径下,然后vim创建一个名为config.php的文件,接下来就只需要在这个文件里面添加一下代码即可

1
2
3
4
<?php
umask(000);
$config['url']['root'] = 'http://filerun.your-website.com:3680/';
php?>

umask(000)是用来解决文件冲突问题的,不过按照我们上面对挂载的目录进行赋777权限一般情况下不太会再次遇到无法对文件操作的问题,大家可自行判断要不要添加

参考文章

如果对您有帮助,请小编喝一杯咖啡吧!