
ADAMANT IPFS Node v0.1.0 是 ADAMANT 自托管文件分发服务的首个标记版本及已发布的容器镜像。它将内容寻址、REST API、受控的点对点分发、存储策略、复制、修复以及健康检查点集成到一个 Node.js 应用程序中。ADAMANT Messenger 已经使用此基础设施处理附件;此次发布旨在让其他开发者更轻松地评估、部署和适配该服务。
应用程序拥有的文件
集成从两个操作开始:通过 POST /api/file/upload 上传文件,然后通过 GET /api/file/:cid 获取文件。返回的内容标识符 (CID) 源自内容本身而非服务器地址,因此应用程序可以将该标识符传递给接收者,而无需决定由哪台机器提供该文件。节点可以流式传输其本地副本,或从配置的应持有该内容的对等节点中检索内容。
这非常适合 Messenger 附件、不可变应用程序媒体以及客户端已经交换内容标识符的服务。在 ADAMANT Messenger 中,客户端上传加密附件,在消息中携带其 CID,接收者通过自己的节点获取该附件。加密属于客户端协议;存储服务仅处理其接收到的字节。
具有明确运行规则的网络
该节点直接使用 Helia 和 libp2p 构建。它在 HTTP API 旁边运行一个嵌入式 IPFS 堆栈,使用 TCP 传输、用于对等连接的 Noise 加密以及 Yamux 流多路复用。
运营商负责配置对等节点集。Rendezvous 哈希算法为每个 CID 对持有者进行排名,因此具有相同成员资格的节点会得出相同的放置位置。基于年龄的分层允许部署在文件变旧时减少目标副本数量。可恢复的修复周期会检查缺失的副本,并在内容仍可恢复时尝试恢复预期的放置位置。这结合了放置和修复功能与接收及分发文件的服务,在围绕一组已知且相互配置的节点进行构建时,无需单独的固定编排服务。

v0.1.0 生命周期概览:摄入、确定性放置、修复和检索,全程包含存储限制和健康报告。
有限的磁盘需要真正的策略
存储控制是摄入路径的一部分。磁盘预留、聚合请求限制、文件限制和并发传输准入机制有助于节点拒绝其无法安全接受的工作。可选的临时上传可以在 TTL 后过期;垃圾回收使用水印和生命周期注册表来回收符合条件的数据。
已确认的内容将受到保护。当确认的文件占用可用容量时,准入限制就显得至关重要:有限的存储并不意味着静默删除策略要求必须保持持久的文件。运营商选择保留和复制策略、配置容量并监控结果。存储行为可以进行检查和配置,包括部署空间不足时应采取的措施。
超越开放连接的可靠性
此版本修复了一种细微的网络故障:TCP 连接可能保持存在,而应用程序流却停止工作。早期的对等逻辑可能会看到已连接的对等节点并保持停滞的会话不变。PR #40 增加了活跃度检查和响应式会话恢复。PR #42 进一步加强了该路径:并发恢复操作被合并,失败的流可以在不被成功的 ping 否决的情况下触发重置,并且放置可以在新连接上重试一次。
健康报告遵循相同的原则。GET /api/node/health 会公开启动、就绪、陈旧或降级状态,以及持久化的检查点高度和成员信息。高度在所需检查通过时增加,在失败时冻结;高度仅在相同的成员版本内可比。运营商应读取该状态,而不应仅依赖 HTTP 200。可选的修复积压宽限期可以容忍配置数量的不成功修复周期,同时积压和周期结果对监控保持可见。默认设置不提供任何宽限期。
桌面端和 Tor 客户端集成
v0.1.0 包含 CORS 更新,允许运营商明确许可桌面端的 app://. 源和适当的 onion 源,包括某些 Tor Browser 请求发送的不透明空源。上传和准入失败现在包含稳定的机器可读错误代码,使客户端能够区分速率限制、并发限制、存储不足、复制仲裁失败和超时,而无需解析文本。CORS 仍然是一种浏览器兼容性控制;部署仍需根据其应用程序采用适当的授权和暴露策略。
部署
公共容器适用于 linux/amd64 和 linux/arm64:
docker pull ghcr.io/adamant-im/ipfs-node:0.1.0
该镜像以非特权用户身份运行,并携带 SBOM 和构建来源证明。配置单独挂载在 /app/config.json5。单个 /data 卷保存块存储、数据存储、对等身份、固定集、生命周期注册表、修复游标和健康检查点,从而在容器替换过程中保持持久状态。发布流水线会重新拉取并冒烟测试两种架构,以验证启动、就绪、上传和下载、干净关闭以及在替换过程中内容和对等身份的保留情况。
如需评估,请从 docker/config.example.json5 开始,该配置不加入任何网络。生产模板包含 ADAMANT 的对等节点列表;您自己的部署应定义自己的对等节点和浏览器源。请将 HTTP 服务置于配置正确的 HTTPS 反向代理之后。
架构边界
配置的拓扑结构避免了公共 DHT 公告和公共网关路由,减少了内容路由元数据的公开暴露。它本身并不能使部署匿名或保密。该服务不对存储的文件进行加密;上传和下载在设计上是不经过身份验证的。需要保密性或身份验证访问权限的应用程序必须在存储层之上提供这些控制。
此版本中没有公共 IPFS 互操作性、IPNS、公共网关或与 Kubo 兼容的 API。存储在此处的内容不会向公共网络发布,且仅由公共对等节点持有的内容无法通过此节点检索。上传者签名的删除、动态对等节点发现和流量核算仍是待办工作。
对于已知的对等节点集和内容寻址的应用程序分发,这些选择构成了一个专注的运行模型。如需参与公共 IPFS、动态集群或 S3 风格的身份和访问控制,请在选择存储架构前查阅比较指南。