IPFS 是一套去中心化的点对点文件分发协议,IPFS Desktop 则是它的官方桌面客户端。这篇笔记从「它是什么」讲到工作原理、安装步骤,以及实际使用中真正需要注意的安全问题。
一、IPFS 是什么
IPFS 全称 InterPlanetary File System(星际文件系统),是一种去中心化的点对点(P2P)文件分发协议。它和我们熟悉的 HTTP 最大的区别,在于寻址方式。
传统 Web 是地址寻址(location-based):你访问一个文件,本质是说”去某台服务器的某个路径拿这个东西”,比如 https://example.com/cat.jpg。问题是——那台服务器挂了、文件被删了、路径改了,链接就失效了。文件的身份绑定在”它存在哪儿”。
IPFS 是内容寻址(content-based):你不问”它在哪台机器上”,而是问”我要这份具体内容“。每个文件经过哈希计算得到一个独一无二的指纹,叫 CID(Content Identifier,内容标识符),长得像 QmYHuXit...。你拿着 CID 去网络里问”谁有这份内容”,任何存了它的节点都能给你。
由此带来一个关键性质:只要内容不变,CID 就永远不变;内容改一个字节,CID 就完全不同。所以 CID 天然能验证完整性——拿到文件后自己算一遍哈希,对得上就说明没被篡改。
两种寻址方式的对比如下图:
二、工作原理
分块 + Merkle DAG
大文件会被切成小块(chunk),每一块单独算哈希,再用这些哈希组成一棵树状结构(Merkle DAG,有向无环图),顶层的根哈希代表整个文件。好处是:相同的块可以被复用(两个文件有重复部分时不用存两遍),下载时也能从不同节点并行拿不同的块。
DHT(分布式哈希表)
网络怎么知道”谁有某个 CID”?靠 DHT。它像一本分散在所有节点上的全网通讯录,记录着”哪个内容由哪些节点提供”。你查一个 CID,DHT 帮你定位到持有者,然后你直接和他们点对点连接下载。
Pinning(固定)
节点默认只是临时缓存访问过的内容,垃圾回收时可能被清掉。如果希望某份内容长期保留在节点上,就要把它 “pin”(固定)住。这也是”固定服务(pinning service)”存在的原因——可以让别人的节点帮你长期保存内容,保证它一直在线可取。
IPNS(命名系统)
CID 有个不便:内容一变 CID 就变,没法做”始终指向最新版”的固定链接。IPNS 解决这个问题——它提供一个不变的名字,背后可以指向不断更新的 CID,类似 DNS 之于 IP 地址的关系。
一句话总结流程
导入文件 → IPFS 分块、算哈希、生成 CID → 通过 DHT 向全网宣告”我这有这份内容” → 别人拿着 CID 来找,就能从你(或任何缓存了它的节点)那里点对点取走,并能自行验证内容没被改过。
这套设计的意义在于:内容不再依赖单一服务器,理论上只要网络里还有任何一个节点存着它就取得到,因此更抗审查、抗单点故障,是去中心化网络(dweb)的基础设施之一。
三、IPFS Desktop
IPFS Desktop 是 IPFS 官方出品的桌面客户端,支持 Windows、Mac、Linux。它把 IPFS 打包成图形化应用,让你不碰命令行也能用。
本质上它内置了一个完整的 IPFS 节点(运行 Kubo,IPFS 的主流实现),并整合了 IPFS Web UI,同时在系统托盘/菜单栏加了快捷控制。主要功能:
- 运行完整节点:内置 Kubo,开机可自启
- 托盘控制:随时启停节点
- 文件管理:拖拽导入,预览、重命名、复制 CID 或分享链接、pin 文件
- Peers 地图:可视化展示连接到的全球节点
- Explore:直观查看文件如何被拆成内容寻址的碎片
- 协议支持:让系统识别
ipfs://、ipns://链接 - CLI 教学模式:边操作边显示对应命令
辨别官方仓库
官方仓库是 https://github.com/ipfs/ipfs-desktop。一个通用辨别习惯:在 GitHub 上决定”是不是官方”的是斜杠前面的组织/用户名,而不是仓库名。ipfs/ipfs-desktop 中的 ipfs 是 IPFS 项目官方组织;若是 someuser/ipfs-desktop,即使名字一样也只是 fork 或仿冒。
四、安装(以 Mac 为例)
各平台都可以从官方 GitHub Releases 页下载带自动更新的安装包。
- Windows:下载
.exe安装器,或用winget install IPFS.IPFS-Desktop - Mac:下载
.dmg,或brew install --cask ipfs - Linux:推荐 AppImage(注意可能需要装 libfuse2)
Mac 安装步骤:
- 双击
.dmg,把图标拖进 Applications - 首次打开若被拦截,去「系统设置 → 隐私与安全性」点”仍要打开”(官方来源可放心)
- 启动后会自动初始化节点,菜单栏出现 IPFS 图标即成功
从源码安装(需 Node.js LTS):
1 | git clone https://github.com/ipfs/ipfs-desktop.git |
五、安全注意事项
最该上心的是 IPFS 设计层面的隐私特性,最容易栽跟头:
- 内容默认公开、不加密。任何东西导入后,只要 CID 被网络知道,谁拿到 CID 都能取走,内容是明文。
- CID 不可撤回。你”删除”只是从自己节点移除;若别人已取走或 pin 了,那份内容会继续存在于网络里。IPFS 上没有真正的删除。
- 结论:绝不要把私密、敏感、未来可能想撤回的东西直接放进去;要存先自己加密。
其他需要留意的点:
- 节点运行时会开放网络端口做 P2P 连接,扩大了对外暴露面;P2P 天性会让对端看到彼此 IP。
- 本地 API 端口(默认 5001)能完全操控节点,正常只绑定本机,千万别暴露到公网。
- 它是 Electron + 大量 npm 依赖的应用,保持更新到最新版是最实在的防护;只从官方渠道下载。
实操建议(优先级从高到低):不放私密内容(要放先加密)→ 保持更新 → 只从官方渠道下载 → 不用时停掉节点 → 别暴露本地 API 端口 → 敏感网络环境检查防火墙。
对普通个人用户,在正常使用下安全风险是可控的。最大的”风险”其实不是被黑,而是因为不了解”公开、不可删除”这个特性,把不该公开的东西放了进去。守住这条线,其余都是常规软件卫生问题。
- 本文标题:IPFS 与 IPFS Desktop 入门:原理、安装与安全
- 本文作者:乔文飞
- 创建时间:2026-06-02 08:00:00
- 本文链接:http://www.feidom.com/2026/06/02/ipfs-and-ipfs-desktop-guide/
- 版权声明:本博客所有文章为作者学习笔记,有转载其他前端大佬的文章。转载时请注明出处。