使用ipns 解决ipfs 内容更新的问题
ipds 可以使用dnslink 解决域名访问的问题,但是内容变更我们就会有新的hashid
解决方法我们可以使用ipns ,同时解决dnslink 解决域名的问题
环境准备
- docker-compose 文件
version: "3"
services:
ipfs:
image: ipfs/go-ipfs:latest
hostname: ipfs_host1
volumes:
- "./export:/export"
- "./data/ipfs:/data/ipfs"
ports:
- "5001:5001"
- "4001:4001"
- "80:8080"
- 启动
docker-compose up -d
- 添加内容
inside 容器,docker-compose 文件指定的是export 目录,方便数据倒入的
ipfs add -r /目录
效果
/ # ipfs add -r /export/user/
added QmV96U2JtqpmJnPkR4Qpx6soWUH25jM7tAaBY4E8sGNL3A user/index.css
added QmYdF665gYwhAD5XxBWi73fddxyk2uZTk22DzpajU9grbo user/index.html
added QmeqDjW8oPsTHedRLmwcW8TULJgYQFTZu5dHqAamtpVjKo user
- 访问

添加ipns 发布
- ipns 发布
稍有点慢
ipfs name publish /ipfs/QmeqDjW8oPsTHedRLmwcW8TULJgYQFTZu5dHqAamtpVjKo
ipfs name publish /ipfs/QmeqDjW8oPsTHedRLmwcW8TULJgYQFTZu5dHqAamtpVjKo
Published to QmfAvGbLuXbjZhy8PKSHTS5C55uGpS3WMg6YSLgd9aTKJP: /ipfs/QmeqDjW8oPsTHedRLmwcW8TULJgYQFTZu5dHqAamtpVjKo
- 访问
http://ip/ipns/QmfAvGbLuXbjZhy8PKSHTS5C55uGpS3WMg6YSLgd9aTKJP
- 更新内容
修改index.html 内容,并重新生成hashid
ipfs add -r /export/user/
added QmV96U2JtqpmJnPkR4Qpx6soWUH25jM7tAaBY4E8sGNL3A user/index.css
added QmcCiftPwAC4VU3URL8cckniXrez3jbaoStnhh9gwDvRCb user/index.html
added QmXgvQL7bNXY58yBW4QvdFFhpTPhoG1Jhn2crBVjgNtm3d user
- 重新publish
从结果可以看出ipns 的id 是不变的
ipfs name publish /ipfs/QmXgvQL7bNXY58yBW4QvdFFhpTPhoG1Jhn2crBVjgNtm3d
Published to QmfAvGbLuXbjZhy8PKSHTS5C55uGpS3WMg6YSLgd9aTKJP: /ipfs/QmXgvQL7bNXY58yBW4QvdFFhpTPhoG1Jhn2crBVjgNtm3d
- 访问更新的界面
http://ip/ipns/QmfAvGbLuXbjZhy8PKSHTS5C55uGpS3WMg6YSLgd9aTKJP
配置dnslink
添加a 记录以及txt 记录,注意txt 记录使用了ipns 的地址
域名访问效果
域名为demo.necores.com
说明
结合ipns 以及txt 记录我们可以灵活的扩展我们的系统,同时可以灵活的进行切换(使用不同hashid 的publish访问)
参考资料
https://docs.ipfs.io/reference/api/cli/#ipfs-name-publish
https://github.com/ipfs/ipfs
使用ipns 解决ipfs 内容更新的问题的更多相关文章
- 使用ipns 为ipfs 系统自定义域名
ipns 可以帮助我们进行寻址操作,但是默认的hashid 还是太长,不好记忆,ipns 同时也支持 基于域名的解析,我们添加txt 记录就可以方便的解决ipfs 文件访问地址难记的问题,使用的是 一 ...
- 解决安卓SDK更新dl-ssl.google.com无法连接的方法
Q:解决安卓SDK更新dl-ssl.google.com无法连接的方法: A1.修改C:\windows\system32\dirvers\etc\hosts文件,将其复制到其他地方修改后替换回原来的 ...
- 根据excel表格中的内容更新Sql数据库
关于[无法创建链接服务器 "(null)" 的 OLE DB 访问接口 SQL Server 2008读取EXCEL数据时,可能会报这个错误:无法创建链接服务器 "(nu ...
- 利用广播调用后台服务方法并根据方法返回的内容更新UI
一.UI布局代码 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...
- Git 如何把master的内容更新到分支
Background: 当有人对master进行更新之后,你想让已经创建的分支内容更新到master的最新状态, bpan@5CG7022BM2 MINGW64 /d/GitRep/JIRA_Exte ...
- js控制滚动条在内容更新超出时自动滚到底部
//滚动条在内容更新时自动滚到底部var message = document.getElementById('message');message.scrollTop = message.scroll ...
- 官方一步解决各种Windows更新问题
原文部分: 修复 Windows 更新问题 适用于: Windows 8.1Windows 10Windows 7 此分布指南有什么作用? 此分步指南提供的步骤可修复 Windows 更新的问题, ...
- 解决wpscan无法更新
如果wpscan无法更新的话 一般的原因都是源或者更新地址无法访问 下面解决 updatedb #先更新一下系统的索引 locate wpscan #定位到wpscan的目录 大概就是updater. ...
- RSA加密-解密以及解决超长内容加密失败解决
加解密(没有使用到证书):https://blog.csdn.net/qy20115549/article/details/83105736 生成证书网站:https://blog.csdn.net/ ...
随机推荐
- java 2D图形绘制
package jisuan; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Graphics; imp ...
- java中String的认识
String不是Java的基本数据类型.String类是final类,故不可继承. String 和 StringBuffer之间的区别非常大,Java平台提供了两个类,两者都是包含多个字符的的字符数 ...
- matlab中hold on 和hold off功能的区别
hold off 使但当前轴及图形不具备被刷新的性质 hold on和hold off是相对使用的 前者为,你在当前轴(坐标系)中画了一幅图,再画另一幅是,原来的图还在,与新图共存,都看得到: 后者表 ...
- synchronized 和 ReentrantLock 区别
synchronized 使用: 1:当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁.结果,其它线程对该object对象所有同步代 ...
- YLZ开发后端外网编写
如何取得前端的值并做处理 // 调用ESB来获取Ajaxpagerespon获得审核记录 @RequestMapping(value = "/queryBydwId", metho ...
- Beta阶段冲刺---Day2
一.Daily Scrum Meeting照片 二.今天冲刺情况反馈 1.昨天已完成的工作· 题目切换的改进· 支持退格操作 2.今天计划完成的工作· 数字以扑克牌的形式给出· 答案的乘除符号与游戏中 ...
- maven搭建ssh项目及遇到的问题
如果采用手动添加jar包的方式搭建项目,会使效率降低,传到github上时,下载时需要下载很多jar包,用maven管理项目可以提高效率 我在搭建maven项目时遇到了 1) java.lang.No ...
- python-oop的理解
OOP是面向对象编程,特征分别是封装.继承.多态.抽象. 封装:封装是指将对象信息状态通过访问权限修饰符隐藏在对象内部,不允许外部程序直接访问,如果外部程序要访问对象内部,可以调用内部提供的get或s ...
- php腾讯面试题(转)
一.PHP开发部分 1.合并两个数组有几种方式,试比较它们的异同 答:1.array_merge() 2.’+’ 3.array_merge_recursive array_merge 简单的合并数组 ...
- Pytorch使用多GPU
在caffe中训练的时候如果使用多GPU则直接在运行程序的时候指定GPU的index即可,但是在Pytorch中则需要在声明模型之后,对声明的模型进行初始化,如: cnn = DataParallel ...