如何不靠云服务和复杂配置从家用 PC 分享文件
想象一下这个场景:你要给朋友发送一个 50 GB 的照片文件夹,或者一个相当于你 SSD 一半大小的磁盘镜像。发送到 Telegram?太慢太麻烦。用 Google Drive 或 Yandex.Disk?你没有足够的空间,还得付费订阅。搭建一个完整的 FTP 服务器或者研究 Nginx 配置?对于一次性任务来说太折腾了。
这就是 HFS(HTTP File Server)大显身手的地方。这个项目可以将你的电脑变成一个功能完整的文件共享 Web 服务器,只需点击一下即可。而且这可不是什么新兴的业余项目:最初的 Delphi 版 HFS 曾经是 2000 年代互联网界的传奇。现在这个项目已经在 TypeScript 和 Node.js 中重生,成为跨平台且现代化的工具。
这是什么
HFS 是一个紧凑的 Web 服务器,可以让你通过浏览器暴露本地文件。运行二进制文件,放入你需要共享的文件夹,任何拥有链接的人都可以下载它们。
与 Python http.server 模块这样的工具相比,主要区别在于你可以获得完整的管理面板、用户管理、断点续传下载,甚至还能让用户将文件上传回你的电脑。而且开箱即用,无需复杂的配置。
在实践中有什么用
我经常需要用手机快速查看家庭服务器上的视频或听音乐。HFS 优雅地解决了这个问题。
虚拟文件系统
你不需要将文件复制到专门的文件夹 www。在 HFS 界面中,你可以创建虚拟结构。例如,文件 C:\Work\Project\final_report.pdf 可以通过链接 ваш-айпи/report.pdf 共享。原始文件保持原位,你只是给它起了一个 Web 上的“化名”。
即时处理大型数据
如果你需要共享一个 100 GB 的文件夹,HFS 不会让你等待它创建压缩包。当用户点击“下载为 ZIP”时,服务器会立即开始动态生成压缩包并立即将数据流式传输到浏览器。这既节省时间又节省磁盘空间。
访问控制和限速
如果你在公共网络中共享文件,可以限制上传速度(节流),这样 HFS 就不会占用你的全部带宽。创建账户也很容易:例如,让朋友只能下载,而同事可以向特定文件夹上传文件。
地理防火墙和安全
在设置中,你可以阻止来自某些国家的访问或配置 HTTPS。证书生成是内置的,所以你不需要手动折腾 OpenSSL。
技术层面
这个项目使用 TypeScript 编写。如果你不想下载预编译的二进制文件,可以通过 npx hfs@latest 运行。如果你已经安装了 Node.js,在服务器上快速检查一下很方便。
HFS 几乎可以在任何地方运行:Windows(从 10 版本开始)、Linux、macOS,甚至 FreeBSD。对于容器化爱好者,还有一个官方 Docker 镜像。
一个有趣的细节:管理面板和前端是完全分离的。你可以用 HTML 和 CSS 自定义外观,或者编写自己的插件。目前已有用于缩略图生成、LDAP 身份验证和暴力破解防护的插件。
如何开始
对大多数人来说,最简单的方法是从 releases 页面下载适合你操作系统的压缩包。启动后,服务器默认在 localhost 打开管理面板。
如果你在控制台或通过 SSH 工作,可以用这个命令快速创建管理员:
echo "create-admin: ВАШ_ПАРОЛЬ" > config.yaml
之后,HFS 会加载设置,你就可以通过浏览器从其他设备登录控制面板了。
适用人群
HFS 是一款为重视自托管的人设计的工具。它非常适合:
- 通过本地网络或互联网快速传输大文件。
- 为团队创建临时文件交换空间。
- 整理家庭媒体库(HFS 内置了音视频播放器)。
- 收集其他用户上传的文件(上传功能)。
这个项目最吸引人的地方在于它的简洁性。你不需要成为系统管理员,也能在 2 分钟内启动一个看起来专业且运行良好的服务器。如果你厌倦了受制于云服务的限制,HFS 是重新掌控数据的最轻松方式之一。
你可以在 GitHub 上试用这个项目。还有详细的 Wiki,包含 API 文档和一些隐藏功能,比如用于自动登录的 URL 参数和搜索功能。
相关项目