我为什么想做 LinkNest
现在一个人手里往往不止一台设备:电脑、手机、平板、服务器,甚至还有临时使用的开发机。
真正麻烦的不是“能不能传一个文件”,而是这些设备经常处在不稳定的网络环境里:
- 家里、学校、实验室的网络来回切换
- DHCP 让设备 IP 经常变化
- 两台设备不一定同时在线
- 大文件传到一半可能因为网络波动中断
- 云服务器上已经有资源,但缺少一个清晰的索引和拉取入口
所以我想做一个项目,暂时叫 LinkNest,中文名是 链巢。
它不是想重新做一个普通网盘,也不是简单复制一个局域网传输工具,而是想在“局域网直连”和“云端资源池”之间做一个更轻量、更适合个人和小团队自部署的传输系统。
LinkNest 想解决什么问题
LinkNest 的核心目标是:在动态网络环境里,让多台设备依然能通过稳定身份、在线状态和云端资源索引完成可靠传输。
我最想先解决的是这几件事:
设备身份不要绑定 IP
设备第一次启动时生成稳定的Device ID,后续即使 IP 变了,服务端也知道它还是同一台设备。服务端维护设备在线状态
客户端通过 WebSocket 发送心跳,服务端记录设备名、设备类型、当前局域网 IP、端口和最后在线时间。云端保留资源索引
文件上传后,服务端记录文件元数据。另一台设备即使不和上传设备同时在线,也能从云端资源列表里拉取文件。大文件支持断点续传
上传和下载按分片执行,中断后只补缺失分片,并通过 hash 校验完整性。后续优先局域网直连
当两台设备在同一局域网内时,优先走直连;不可达时再用云端作为兜底。
第一阶段先做小闭环
这个项目不能一开始就把所有客户端、P2P、WebRTC、UI 和云存储都堆上去。
我现在更倾向于先做一个能跑通的最小闭环:
- Go 服务端基础框架
- 设备注册接口
- Go CLI 客户端原型
Device ID生成和持久化- WebSocket 心跳
- 云端设备列表 API
- IP 变化后设备身份不变、在线状态能更新
这个阶段完成后,项目至少能证明一个关键点:
设备身份和网络地址可以解耦,动态 IP 不应该让设备关系失效。
MVP 版本会包含什么
在第一阶段之后,MVP 会继续往“真正能传资源”的方向推进:
- 用户注册和登录
- 多设备绑定到同一账号
- 在线设备展示
- 文件上传到云服务器
- 云端资源列表
- 从云端下载文件
- 大文件分片上传
- 断点续传和 SHA-256 校验
- 基础 Web UI 或客户端界面
这个版本的定位很明确:
先让一台设备上传资源,另一台设备可以稳定地看到并拉取。等这个链路跑稳,再去做局域网发现、直连传输和更复杂的调度。
技术路线
目前计划的技术选择是:
- 服务端:Go
- 数据库:早期 SQLite,后续可切换 PostgreSQL
- 文件存储:早期本地磁盘,后续可接 MinIO 或 S3 兼容存储
- 通信:HTTP REST API + WebSocket
- 客户端:先做 Go CLI 原型,后续考虑 Flutter 多端客户端
- 部署:先本地运行,后续整理 Docker Compose
模块上大致会分成:
- 用户认证模块
- 设备身份模块
- 设备在线状态模块
- 云端资源模块
- 分片传输模块
- 传输任务模块
- Web 管理界面
我希望这个项目一开始就保持边界清晰。
功能可以慢慢加,但设备、文件、任务、传输协议这些核心概念不能混在一起。
我希望它最终变成什么样
我希望 LinkNest 最后能成为一个开源、轻量、可自部署的多端资源传输系统。
理想状态下,它可以做到:
- 个人可以把它部署在自己的云服务器上
- 多台设备能长期绑定到同一个账号
- 云端能看到哪些设备在线、哪些资源可下载
- 大文件传输中断后可以继续
- 同一局域网内优先直连,不行再走云端
- 有清晰的 README、API 文档、部署文档和演示视频
它不需要一开始就对标成熟网盘。
我更希望它先把“设备身份稳定、状态可见、资源可拉取、传输可恢复”这几件事做扎实。
我想邀请更多人参与
LinkNest 现在还处在早期设计和原型阶段,正适合一起讨论和参与。
如果你对下面这些方向感兴趣,欢迎来找我:
- Go 后端开发
- WebSocket、HTTP API、任务状态设计
- 文件分片、断点续传、hash 校验
- Web UI 或 Flutter 多端客户端
- Docker Compose 部署
- README、API 文档、贡献指南
- 局域网发现、P2P、WebRTC、QUIC 等后续传输方案
- 安全设计,比如 token、设备公钥、签名校验和端到端加密
这个项目需要的不只是写代码的人。
如果你愿意帮忙看架构、提需求、测试弱网场景、整理文档、做演示视频,也都很有价值。
你可以通过我的 GitHub 主页或邮箱联系我:
- GitHub: lexiaox
- Gmail:
ldy3087146292@gmail.com
等仓库和基础原型整理好后,我也会继续把开发进展写到这里。
如果你也遇到过多设备传文件、动态 IP、云端资源管理和大文件中断这些问题,欢迎一起把 LinkNest 做出来。