1. 为什么选择FileRun作为私有云盘?
最近几年,越来越多的个人和小团队开始关注数据隐私和自主控制的问题。你可能已经厌倦了公有云盘的各种限制:空间不够用、上传下载速度慢、担心文件被扫描分析。FileRun恰好提供了一个完美的解决方案——它是一个完全自托管的私有云盘系统,可以部署在你自己的服务器上。
我最初接触FileRun是因为需要一个轻量级的替代品来替换臃肿的NextCloud。FileRun给我的第一印象就是界面简洁、响应迅速,而且功能完全够用。它支持WebDAV协议,这意味着你可以用各种客户端来同步文件,包括Windows资源管理器、Mac Finder、手机App等。最棒的是,它原生支持图片预览、文档在线查看、音乐播放等实用功能,完全不需要额外安装插件。
与NextCloud相比,FileRun的资源占用要小得多。在我的测试中,同样的硬件环境下,FileRun的响应速度明显更快,特别是在处理大量小文件时。而且它的安装过程简单得多,通过Docker部署只需要几分钟就能搞定。对于5-10人的小团队来说,免费版完全够用,如果后续需要扩展,付费升级也很方便。
2. 部署前的准备工作
2.1 硬件和系统要求
在开始安装之前,我们需要确保系统满足基本要求。FileRun对硬件的要求相当亲民——我甚至在树莓派4上成功运行过它。官方推荐的最低配置是:
- CPU:双核1.5GHz以上
- 内存:2GB(小规模使用1GB也够)
- 存储:至少20GB可用空间(根据你的文件量调整)
- 操作系统:任何能运行Docker的Linux发行版
我个人建议使用Ubuntu Server LTS版本,因为它对Docker的支持最好,社区资源也最丰富。如果你像我一样喜欢折腾,也可以尝试在群晖NAS的Docker套件中部署,效果一样好。
2.2 安装Docker和Docker Compose
大多数现代Linux发行版都提供了Docker的安装包,但为了获得最新版本,我建议使用官方提供的安装脚本:
# 安装Docker curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER newgrp docker # 安装Docker Compose sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose安装完成后,运行docker version和docker-compose version检查是否安装成功。我遇到过几次因为权限问题导致命令无法执行的情况,这时候只需要退出当前会话重新登录即可。
2.3 准备数据库环境
FileRun支持MySQL/MariaDB数据库,你可以选择以下几种方式:
- 使用单独的数据库容器
- 使用主机上已有的MySQL服务
- 使用云数据库服务
为了简化部署,我推荐使用MariaDB的Docker镜像。先创建一个专用网络让容器间可以通信:
docker network create filerun-net然后启动MariaDB容器:
docker run -d \ --name mariadb \ --network filerun-net \ -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -e MYSQL_DATABASE=filerun \ -e MYSQL_USER=filerun \ -e MYSQL_PASSWORD=filerun \ -v mariadb_data:/var/lib/mysql \ mariadb:10.5这里我使用了数据卷mariadb_data来持久化数据库文件,即使容器重启数据也不会丢失。记得把密码换成你自己的强密码,我在这里只是为了演示方便使用了简单密码。
3. 部署FileRun容器
3.1 准备文件存储目录
FileRun需要两个主要的目录来存储数据:
html:存放Web程序文件user-files:存放用户上传的文件
我习惯把所有Docker相关的数据都放在/docker目录下:
mkdir -p /docker/filerun/{html/system/data/translations,user-files} chmod -R 777 /docker/filerun/html注意要给html目录足够的写入权限,否则安装过程中可能会报错。我在第一次部署时就遇到了权限问题,导致无法创建配置文件。
3.2 使用Docker CLI运行容器
对于喜欢命令行的用户,可以直接使用docker run命令:
docker run -d \ --name filerun \ --network filerun-net \ -p 8080:80 \ -v /docker/filerun/html:/var/www/html \ -v /docker/filerun/user-files:/user-files \ -e FR_DB_HOST=mariadb \ -e FR_DB_NAME=filerun \ -e FR_DB_USER=filerun \ -e FR_DB_PASS=filerun \ -e APACHE_RUN_USER=www-data \ -e APACHE_RUN_USER_ID=33 \ -e APACHE_RUN_GROUP=www-data \ -e APACHE_RUN_GROUP_ID=33 \ filerun/filerun这里有几个关键点需要注意:
--network filerun-net让FileRun容器能够访问我们之前创建的MariaDB容器- 环境变量
FR_DB_HOST设置为mariadb,这是数据库容器的名称 - 端口映射
8080:80表示将容器的80端口映射到主机的8080端口
3.3 使用Docker Compose部署
对于生产环境,我更推荐使用Docker Compose,因为它更方便管理和维护。创建一个docker-compose.yml文件:
version: '3' services: db: image: mariadb:10.5 container_name: mariadb environment: MYSQL_ROOT_PASSWORD: my-secret-pw MYSQL_DATABASE: filerun MYSQL_USER: filerun MYSQL_PASSWORD: filerun volumes: - mariadb_data:/var/lib/mysql networks: - filerun-net web: image: filerun/filerun container_name: filerun depends_on: - db environment: FR_DB_HOST: db FR_DB_NAME: filerun FR_DB_USER: filerun FR_DB_PASS: filerun APACHE_RUN_USER: www-data APACHE_RUN_USER_ID: 33 APACHE_RUN_GROUP: www-data APACHE_RUN_GROUP_ID: 33 volumes: - /docker/filerun/html:/var/www/html - /docker/filerun/user-files:/user-files ports: - "8080:80" networks: - filerun-net volumes: mariadb_data: networks: filerun-net: driver: bridge然后运行docker-compose up -d即可启动所有服务。这种方式的优势在于所有配置都保存在一个文件中,方便版本控制和迁移。
4. 初始配置和中文支持
4.1 完成Web安装向导
容器启动后,在浏览器中访问http://你的服务器IP:8080,你会看到FileRun的安装界面。系统会自动检测运行环境,正常情况下所有检查都应该通过。
点击"Next"进入数据库配置页面,这里不需要做任何修改,因为我们已经在环境变量中配置好了所有数据库参数。继续点击"Next",系统会创建管理员账户并显示登录凭据。
重要提示:一定要记下这个密码!如果丢失,只能通过命令行重置。我吃过这个亏,不得不重新部署了一次。
4.2 安装中文语言包
FileRun默认不支持中文,但我们可以手动添加中文语言包。首先下载中文语言文件:
wget -O /docker/filerun/html/system/data/translations/chinese.php https://raw.githubusercontent.com/wbsu2003/synology/main/FileRun/chinese.php然后登录FileRun后台,进入"Control Panel" → "Interface options",在Language下拉菜单中就能看到新添加的"Chinese"选项了。选择后保存更改,刷新页面即可看到中文界面。
我发现在某些浏览器中语言切换可能不会立即生效,这时候清除浏览器缓存或者换个浏览器通常就能解决问题。Edge和Firefox的表现比Chrome更稳定一些。
4.3 基础功能配置
FileRun提供了丰富的配置选项,以下几个是我认为最实用的:
- 用户管理:可以创建多个用户并分配不同的存储配额
- 文件分享:设置分享链接的有效期和密码保护
- WebDAV配置:启用WebDAV服务以便用客户端同步文件
- 文件预览:配置在线预览支持的文件类型
建议花点时间浏览所有设置选项,根据你的需求进行调整。比如我关闭了视频缩略图生成功能,因为这会消耗大量服务器资源。
5. 配置反向代理和HTTPS
5.1 为什么需要反向代理
直接通过IP和端口访问FileRun既不安全也不方便。配置反向代理可以带来以下好处:
- 使用域名而非IP访问
- 启用HTTPS加密连接
- 隐藏后端服务的真实端口
- 方便实现负载均衡(如果需要)
我推荐使用Nginx Proxy Manager(NPM),它提供了一个友好的Web界面来管理反向代理规则,比直接配置Nginx简单得多。
5.2 安装Nginx Proxy Manager
使用Docker Compose安装NPM:
version: '3' services: app: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped ports: - '80:80' - '81:81' - '443:443' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt启动后访问http://你的服务器IP:81,默认登录凭据是:
- Email: admin@example.com
- Password: changeme
第一次登录后记得修改密码!
5.3 配置FileRun的反向代理
在NPM中添加一个新的Proxy Host:
- Domain Names: 填写你的域名,比如filerun.yourdomain.com
- Scheme: http
- Forward Hostname/IP: filerun(或者你的服务器IP)
- Forward Port: 8080
然后切换到SSL标签页,申请Let's Encrypt证书。NPM会自动处理证书的申请和续期,非常方便。
5.4 高级配置建议
为了让FileRun在反向代理后正常工作,需要在Advanced选项卡中添加以下Nginx配置:
location / { proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Protocol $scheme; proxy_pass http://filerun:8080; proxy_redirect http:// https://; }这段配置确保了正确的协议转发和重定向,解决了我在测试中遇到的混合内容警告问题。
6. 日常维护和问题排查
6.1 备份策略
FileRun的数据主要分为两部分:
- 数据库:包含用户信息、文件元数据等
- 用户文件:实际存储的文件内容
我建议分别备份这两部分:
# 备份数据库 docker exec mariadb mysqldump -u filerun -pfilerun filerun > filerun_db_backup_$(date +%F).sql # 备份用户文件 tar czvf filerun_files_backup_$(date +%F).tar.gz /docker/filerun/user-files可以将这些命令添加到cron定时任务中实现自动备份。我设置的是每天凌晨3点执行备份,保留最近7天的备份文件。
6.2 常见问题解决
问题1:上传大文件失败解决方案:修改PHP的上传限制,编辑/docker/filerun/html/system/application/configs/application.ini,找到以下参数并调整:
upload_max_filesize = 2048M post_max_size = 2048M然后重启FileRun容器使更改生效。
问题2:WebDAV连接不稳定解决方案:检查客户端是否使用了正确的URL格式,应该是https://你的域名/webdav/。我在Windows上映射网络驱动器时,发现必须勾选"使用不同的凭据连接"才能正常工作。
问题3:内存占用过高解决方案:FileRun本身很轻量,但如果你启用了文件预览功能,可能会占用较多内存。可以考虑禁用不必要的预览功能,或者增加服务器内存。在我的使用场景中,2GB内存足够支持5-10个活跃用户。
6.3 性能优化建议
启用OPcache加速PHP执行: 在
/docker/filerun/html/system/application/configs/application.ini中添加:zend_extension=opcache.so opcache.enable=1 opcache.memory_consumption=128使用Redis缓存: 如果你有Redis服务器,可以配置FileRun使用它来缓存会话和元数据:
session.save_handler = redis session.save_path = "tcp://redis:6379"定期清理临时文件: FileRun会在
/docker/filerun/html/system/temp/目录下生成临时文件,可以设置一个cron任务定期清理:0 3 * * * find /docker/filerun/html/system/temp/ -type f -mtime +7 -delete
7. 进阶功能探索
7.1 集成外部存储
FileRun支持连接多种外部存储服务,包括:
- Amazon S3
- Google Drive
- Dropbox
- FTP/SFTP服务器
我成功配置了将Amazon S3作为二级存储的方案,这样热数据保存在本地,冷数据自动归档到S3,既保证了访问速度,又节省了本地存储空间。
配置方法:进入"Control Panel" → "External Storage",添加新的存储连接。根据服务商提供的API密钥填写相应参数即可。
7.2 使用客户端同步
FileRun兼容WebDAV协议,这意味着你可以使用任何支持WebDAV的客户端来同步文件。我测试过以下几款客户端:
- Windows:直接使用资源管理器映射网络驱动器
- Mac:使用Finder的"连接到服务器"功能
- Android:Solid Explorer或FolderSync
- iOS:Documents by Readdle
同步体验相当流畅,特别是对于文档类的小文件。大文件同步时建议在WiFi环境下进行。
7.3 开发API接口
FileRun提供了完善的REST API,可以用于开发自定义应用或与其他系统集成。API文档可以在https://你的域名/api.php找到。
我使用Python脚本实现了自动备份指定目录到FileRun的功能:
import requests api_url = "https://filerun.yourdomain.com/api.php" username = "your_username" password = "your_password" # 获取认证token auth = requests.post(f"{api_url}/login", json={"username": username, "password": password}) token = auth.json()["data"]["token"] # 上传文件 with open("backup.zip", "rb") as f: upload = requests.post( f"{api_url}/files/upload", headers={"Authorization": f"Bearer {token}"}, files={"file": f}, data={"path": "/备份"} )这个脚本每周自动运行一次,将重要数据备份到FileRun的指定目录中。