我为什么想做 LinkNest

现在一个人手里往往不止一台设备:电脑、手机、平板、服务器,甚至还有临时使用的开发机。
真正麻烦的不是“能不能传一个文件”,而是这些设备经常处在不稳定的网络环境里:

  • 家里、学校、实验室的网络来回切换
  • DHCP 让设备 IP 经常变化
  • 两台设备不一定同时在线
  • 大文件传到一半可能因为网络波动中断
  • 云服务器上已经有资源,但缺少一个清晰的索引和拉取入口

所以我想做一个项目,暂时叫 LinkNest,中文名是 链巢
它不是想重新做一个普通网盘,也不是简单复制一个局域网传输工具,而是想在“局域网直连”和“云端资源池”之间做一个更轻量、更适合个人和小团队自部署的传输系统。

LinkNest 想解决什么问题

LinkNest 的核心目标是:在动态网络环境里,让多台设备依然能通过稳定身份、在线状态和云端资源索引完成可靠传输。

我最想先解决的是这几件事:

  1. 设备身份不要绑定 IP
    设备第一次启动时生成稳定的 Device ID,后续即使 IP 变了,服务端也知道它还是同一台设备。

  2. 服务端维护设备在线状态
    客户端通过 WebSocket 发送心跳,服务端记录设备名、设备类型、当前局域网 IP、端口和最后在线时间。

  3. 云端保留资源索引
    文件上传后,服务端记录文件元数据。另一台设备即使不和上传设备同时在线,也能从云端资源列表里拉取文件。

  4. 大文件支持断点续传
    上传和下载按分片执行,中断后只补缺失分片,并通过 hash 校验完整性。

  5. 后续优先局域网直连
    当两台设备在同一局域网内时,优先走直连;不可达时再用云端作为兜底。

第一阶段先做小闭环

这个项目不能一开始就把所有客户端、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 做出来。