推荐开源项目:HFS - HTTP 文件服务器(版本 3)
项目地址:https://gitcode.com/rejetto/hfs
简介
HFS 是一个强大的 Web 基于的文件服务器,让你可以轻松地从你的硬盘上访问或分享文件,无需受限于空间和带宽。无论是在个人电脑还是移动设备上,只需通过浏览器,即可实现文件的即时共享。
- 无限存储与带宽:你作为服务器,提供无限制的空间和带宽。
- 快速响应:即使是打包下载 100GB 的文件也能即刻启动。
- 易用性:HFS 尝试自动检测问题并提出解决方案。
- 虚拟文件系统:即使是一个单独的文件,也能以不同的名称进行共享,无需修改实际文件。
- 实时监控:随时查看所有活动。
- 带宽控制:自由调整带宽分配。
- 直接传输:无需等待大文件上传到服务器,直接将文件转交给朋友。
这是对原 Delphi 版本 HFS 2 的全面重写。
工作原理
- 在你的计算机上运行 HFS,管理页面会自动打开。
- 选择希望可访问的文件和文件夹。
- 使用浏览器在其他设备上访问这些文件。
- 可创建账户,限制特定用户的文件访问权限。
技术特性
- 支持 HTTPS
- 自动证书生成
- Unicode 兼容
- 移动友好界面
- 内建搜索功能
- 账户管理
- 恢复断点续传的下载与上传
- 下载整个目录为 ZIP 归档
- 远程删除
- 网站托管功能
- 插件支持
- 实时连接监控
- 多语言前端界面
- 虚拟主机支持(插件)
- 防暴力破解插件
- 反向代理支持
- 文件描述信息中的注释功能
安装步骤
注意:最低操作系统要求是 Windows 8.1 或 Windows Server 2012 R2(因为依赖 Node.js 18)。
- 访问 https://github.com/rejetto/hfs/releases
- 点击“Assets”部分
- 根据你的系统下载正确的版本,解压缩后运行
hfs
文件。 - 浏览器应自动打开本地地址,你可以在此配置管理面板。
- 如果无法在安装 HFS 的计算机上打开浏览器,你可以在 HFS 控制台中输入
create-admin PASSWORD
。 - 如果你不能访问控制台(如在服务模式下运行),可以通过 编辑配置文件 添加管理员账号。
- 如果不想使用编辑器,你可以执行命令
echo "create-admin: PASSWORD" > config.yaml
创建配置文件。
- 如果无法在安装 HFS 的计算机上打开浏览器,你可以在 HFS 控制台中输入
如果你通过本地回环地址访问管理面板,默认情况下 HFS 不会要求登录。如果不希望如此,你可以在管理面板或控制台中禁用该行为。
其他系统
如果你的系统不是 Windows/Linux/Mac 或不希望运行二进制文件,你可以尝试以下替代方法:
- 安装 Node.js 18
- 在命令行执行
npx hfs@latest
若上述过程失败,可能是因为缺少 Node.js gyp 的某些需求。
配置和其他文件将存储在 %HOME%/.vfs
目录下。
服务模式
如果你想让 HFS 在启动时自动运行(作为服务),建议使用以下方法:
Linux 上
- 安装 Node.js
- 创建
/etc/systemd/system/hfs.service
文件,内容如下:
[Unit]
Description=HFS
After=network.target
[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/npx -y hfs@latest
[Install]
WantedBy=multi-user.target
- 执行
sudo systemctl daemon-reload && sudo systemctl enable hfs && sudo systemctl start hfs && sudo systemctl status hfs
Windows 上
- 安装 Node.js
- 运行
npm -g i hfs
- 运行
npx qckwinsvc2 install name="HFS" description="HFS" path="%APPDATA%\npm\node_modules\hfs\src\index.js" args="--cwd %HOMEPATH%\.hfs" now
更新时,请先执行 npx qckwinsvc2 uninstall name="HFS"
,再运行 npm -g update hfs
和 npx qckwinsvc2 install ...
。
控制台命令
如果有完全访问 HFS 控制台的权限,你还可以输入命令。输入 help
获取完整列表。
配置
详细配置见 config.md 文档。
存储位置
配置文件 config.yaml
存储于当前工作目录(cwd),默认为 Windows 版本的 hfs.exe
同级目录,或其他系统的 USER_FOLDER/.hfs
。你可以通过命令行参数 --cwd
指定不同工作目录,或设置环境变量 HFS_CONFIG
指定不同配置文件。
国际化
HFS 支持多种语言显示。已提供一些语言的翻译。如果发现错误,请报告,或者 直接编辑源文件。
在管理面板的语言设置中,你可以安装额外的语言文件。
如果你使用的语言缺失,请考虑 自己进行翻译。
升级至 HFS 3 的理由
相较于 HFS 2.x,新版本已经拥有一些独特的优势:
- 更稳定:设计用于持续运行的服务,而 HFS 1-2 适用于临时文件传输。
- 密码安全:密码永远不会真正保存,仅保存非还原哈希值。
- 快速搜索:提升至最多 12 倍的速度。
- 权限管理更灵活。
不过,由于以下原因,你可能会选择继续使用 HFS 2.x:
- 更小的体积
- 经过更多测试
- 对一些人来说,经典的窗口界面可能更容易操作
安全性
尽管 HFS 注重易用性,但我们也重视安全性:
- 支持 HTTPS
- 密码不会被保存,即使通过 HTTP 登录,用户密码也安全(得益于 SRP 协议)
- 每次发布都会进行自动化测试,包括库的安全审核
- 默认没有管理员密码
为了提高安全性,你还可以采取以下措施:
- 使用 HTTPS,并尽可能使用官方证书,免费证书可通过 Let's Encrypt 获取。
- 在“互联网”页面配置域名,并启用“仅接受通过域名请求”
- 安装 rejetto/antidos 插件
- 确保“antibrute”插件正在运行
- 禁止“不受保护的本地管理员”
隐藏功能
- 地址后面加上
#LOGIN
会弹出登录对话框。 - 地址后面加上
?lang=CODE
强制指定语言。 - 在切换全部复选框时右键/Ctrl/Cmd 点击将反转每个复选框的状态。
- 地址后面加上
?login=USER:PASSWORD
将自动在浏览器中登录。
如何参与贡献
有多种方式可以为 HFS 贡献力量:
-
提交 Bug 非常重要,如果你不确定,也可提交,我们会一起讨论。对于重要的安全问题,请 私下联系我们,以便我们在公开披露前为其他用户提供安全更新。
-
即使项目不应该变得过于复杂,你的建议也可能成为新的插件创意。
-
在进行代码更改之前,先打开“问题”或“讨论”,以便我们合作并确定最佳路径。
-
插件可以改变外观(主题),或引入新的功能。
更多信息
总之,HFS 是一款强大且实用的文件服务器工具,不仅适合日常办公和个人分享文件,也非常适合开发者进行二次开发和扩展。立即尝试,让我们共同打造更优秀的文件共享体验!