在看了读者的邮箱来信后,确实,若是被勒令这不可抗拒的因素删除仓库也是毫无办法;何况,我也是各种担心也因其他缘由与相关操作不当导致删除重建好几次该书项目,而这次就需要着手使用ipfs这类去中心化的网络应用了。
这其中也遇到一些问题就是上传文件后,关闭了ipfs的进程,其他人却无法有效访问这个站点了。为此特意搜索相关相关问题内容,找到了一个合理的解释:
我还特意找了一个VM安装ipfs,并添加同样内容("hello world")的文件到ipfs,发现hash是一样的。相信全球大量的人员在测试ipfs时都可能会使用"hello world"作为文件内容。
所以当访问地址
https://ipfs.io/ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
时,访问的不见得是你自己的电脑上的这个hello.txt文件,除非这个文件的内容独特到全球只有你的电脑上有。
文档
https://ipfs.io/ipfs/QmXZXP8QRMG7xB4LDdKeRL5ZyZGZdhxkkLUSqoJDV1WRAp
的内容比较独特,恐怕只有我自己的电脑上有,如果我不开机并启动ipfs进程,估计别人访问不了。
—— 摘自 王伟兵的博客
也就是说,打不开对方提供的已发布在网上的IPFS节点链接,很可能是资源仅他独有且关闭了ipfs的进程。
打开ipfs,选择getting started with ipfs
download ipfs for your platorm
点击即可下载
解压并用CLI进入当前文件夹,输入ipfs.exe init
完成初始化操作
ipfs.exe daemon
开启守护进程
输入http://localhost:5001/webui
进入主界面,在connection
版块中可以看到全球共有267个节点,这一数字也是动态变化的
在files
版块中点击create folder
创建文件夹,目前除图片外,若要正确上传文件,必须用文件夹的hash
加载
选择需要上传的文件,右键copy hash
,转到DAG板块中粘贴进输入框GO
将如上hash连接复制,并在前面加上htttps://ipfs.io
hash链接始终是太长了,就需要使用tinyURL生成短链接
测试
你愿意把它当作无限存储的网盘也可以,只不过任何人包括你在内不能删除它罢了;速度的话,聊天群、问答社区以及贴吧各种宣传,人多了应该自然也就会快一些。
在这里我已预先提供了一份基于gitbook生成的静态网站文件夹
命令行定位到文件夹的上层文件夹,执行ipfs add -r web-book
上传整个目录
web-book
文件夹的指令输出的最后一行的哈希值,就是你的网站的根目录
复制最后一行的hash值
输入localhost:8080/ipfs
后面追加已复制的哈希值即可
虽数据已添加到当前的ipfs节点中,但是并没有同步到ipfs网络;此时还只是离线部署,现在要将它发布在互联网上。
运行了ipfs add -r
的指令的窗口不要关闭,新建一个cmd命令行窗口,进入ipfs文件夹再输入ipfs.exe daemon
便发布成功了
测试
由于去中心化的缘故,一但上传也就不能更改了,为此需要ipns的新目录以及节点id映射在新的hash值,用户只需访问ipfs.io/ipns/节点id
查看相关的更新,也就是说以前的ipfs.io/ipfs/目录hash值
被废弃了;这也看出来去中心化一个弊端就是产生大量垃圾,虽然链接很长很长...
为了演示方便在book.json
文件中添加了新的插件,并再次使用了ipfs add -r web-book
指令使其生成新的hash值。
使用ipfs name publish
后面跟上站点根目录的hash值进行发布操作
使用ifps id
查看节点id
ipfs name resolve
后面追加已查到的节点id
此时,已经可以本地访问了,localhost:8080/ipns/节点id
关掉之前的使用ipfs daemon
指令的窗口,再打开命令行窗口重新运行该指令即可,由于访问人数不多再加上GFW的干扰,可能会很慢。
测试
备份这很重要,但也很简单,在C:\Users\lorem\.ipfs
下找到config
文件并将其拷贝至云盘即可,lorem是我的用户名