(开源)OpenLAN
约 1575 字大约 5 分钟
2026-09-10
让OpenLAN小区内的文件传输快、稳定、无收费:不安装客户端、不注册账号、不经过任何第三方服务器。
开源本地文件急速传输工具 —— 浏览器即用 · 多线程分片下载 · 设备点对点直传 · 扫码即达
让OpenLAN局域网内的文件传输快、稳定、无权限:不安装客户端、不注册账号、不经过任何第三方服务器。在任何设备的浏览器打开同一台机器的页面,即可浏览/上传/下载共享目录;也可以把文件或文本点对点给指定设备,或用二维码/提取码一扫领。
✨ 核心能力
- 访问下载传输——共享目录内的文件自动生成带签名令牌的下载链接;浏览器端多线程并发分片(范围)下载,速度远超单线程直传。
- 设备选择传输——网页会话之间提供个体(对方收件箱点一下即收);OpenLAN实例之间点对点直传(
invite / go / chunk / complete状态机),支持--auto-accept无人值守存盘。 - 文件管理——列表搜索过滤、全选/批量发送·下载·分享·删除、切回前台自动刷新;删除有确认弹窗、被占用时给出明确原因。
- 二维码/提取码——手机相机扫码直达;文件可生成「二维码+8位提取码+
/s/短链」,随时领取。 - 文本闪电传——不建文件、瞬间送达,收方一键复制或存为
.txt。 - 多彩主题 + 移动端装备——顶部「主题」一键循环:粉色(默认) → 邻近系统 → 白色 → 黑色;手机/平板响应式布局与亮度优化。
- 启动即自动打开浏览器、目录按相对路径显示(
.\shared,整包移动无需修改配置)、SSE实时进度、底部传输坞、任选PIN门禁、端点SHA-256权限校验。
🚀 快速开始
需要Node.js 18+。默认监听0.0.0.0:5555,等同于附近任何设备均可访问。
npm install
node server/index.js
# 启动后自动用默认浏览器打开本机页面;
# 手机 / 其它电脑用终端打印的「局域网访问」地址,或扫页面顶部二维码即可访问Windows可外接bin/start.bat;macOS / Linux可用bash bin/start.sh;命令行入口node bin/openlan.js --help。首次启动若弹出Windows防火墙,提示请选择「允许Node.js访问专用/公用网络」,否则手机无法连接。
常用选项:
node server/index.js --port 8000 --dir "D:\共享" --download-dir "D:\接收" --pin 1234 --auto-accept参数与环境变量的完整说明参见使用文档·附录。
📖 文档
🧩传输方式一图流
| 想做什么 | 怎么做 |
|---|---|
| 电脑A传文件给电脑B | A、B 都运行 OpenLAN → A「设备」页选 B → 发起传输;B 点「接收」或--auto-accept自动落盘 |
| 手机快速收电脑上的文件 | 手机扫电脑页面「二维码」→ 浏览器打开,直接多线程下载 |
| 只发一句话 / 一段文本 | 「文本闪电传」输入后瞬间送达,对方可复制或存为.txt |
| 向一群人共享一个目录 | 把文件交换shared/(或--dir指定目录),分享直链http://ip:5555/api/down/<token> |
| 多人“自助领取” | 生成二维码 / 提取码,直至7天,输入提取码即领 |
| 防蹭网 | 启动加--pin 1234,所有页面与设备互通都需要PIN |
🔒安全设计
- 文件下载由令牌实例密钥HMAC签名,防目录遍历;文件被改名/替换即失效。
- 上传与P2P分块传输全程SHA-256校验,损坏数据自动丢弃,下载端合并后重新校验。
- 任选PIN门禁:网页会话/实例间互通均受控(两端PIN需一致)。
- SSE / 心率会话离线自动恢复;所有数据仅在本机邻居内流动;传输记录仅存内存,重启清零。
🧪测试
npm test # 三项回归一次跑完(UI 一致性 / 单实例 API / 双实例 P2P 真传)
node tools/e2e-browser.mjs <URL> <共享目录> # 可选:用本机 Edge / Chrome headless 真实驱动页面
# (上传 → 分片下载 → 落盘 SHA 校验 → 删除确认;需 Node ≥ 21)📦 发布资源
npm run release:win # 等价于 powershell -File tools/make-release.ps1产物输出到dist/OpenLAN-<版本>.zip(含node_modules,解压即用;另加-NoNodeModules出废物源码包),并生成同名.sha256校验文件。发布到 GitHub Releases 时,将 zip 与.sha256Release 作为资产上传即可。
📱 手机/其他设备怎么连?
- 手机与电脑连接同一个Wi-Fi(或手机连电脑热点)。
- 启动OpenLAN后看终端输出的“交换机访问”地址(如
http://192.168.1.20:5555)。 - 手机扫页面顶部「二维码」→ 多个地址可切换→ 在浏览器中打开。
- 扫码无反应就手动输入该地址。
手机/平板端自动实现响应式布局:顶栏按钮图标化、弹层近全宽、输入框16px防iOS聚焦缩放。「主题」按钮同样可用。
无法访问时:检查防火墙是否放行 Node.js 及 TCP
5555;公司/校园网络的 AP 隔离会否发生设备互访,请改用个人热点。
📁 目录速览
server/ HTTP API、P2P 引擎、UDP 组播发现、内存状态中枢
public/ 无构建 SPA(多主题 · 移动端适配)
shared/ 默认共享目录 downloads/ 默认接收目录
test/ 冒烟与一致性测试(npm test)
tools/ 发布打包脚本 make-release.ps1 · 浏览器 E2E e2e-browser.mjs
docs/ 使用 / 开发文档、更新记录🤝 贡献与许可
欢迎提交 Issue / PR。代码风格与开发约定见开发文档。
MIT © OpenLAN 贡献者

