【戴嘉乐 IPFS】(入门)基于IPFS和Ngrok构建自维护资源网关

作者简介:戴嘉乐( Mr.Maple ) | 前百度高级研发工程师 | IPFS应用实践者&布道师| 个人网站:https://www.daijiale.cn 联系方式:微信号:daijiale6239。

一、应用背景

由于一些特殊原因,ipfs.io网关在天朝无法访问,之前在外做宣讲的时候,也被很多朋友问到ipfs.io是否一直会被禁的问题,纷纷表示担忧,这边通过一个简单的Demo,让大家可以搭建属于自己的协议网关,通过这种方式,我们跑在IPFS上的资源将不在受限,并且每个人都可以独立出自己的节点服务并分享给其他人、应用程序访问使用。

二、技术介绍

2.1 IPFS

对IPFS这项技术不熟悉的同学,可以参考我之前一次演讲分享的内容:【IPFS】戴嘉乐:详解IPFS的本质、技术架构以及应用

2.2 Ngrok

Ngrok是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道,比较轻量级,不需要去在本地构建一个类似Nginx或者Tomcat这样的服务器,即可完成IP动态映射和内网穿透,对建立IPFS这样的资源网关来说,最为方便,而且,通过Ngrok ,我们可以直观的捕获和分析所有通道上的流量,便于后期资源上的分析和重放,还有便于开发者调试的协议信息展现等功能。

官网:https://ngrok.com/
教程:https://ngrok.com/docs
下载:https://ngrok.com/download

三、应用实践

博主采用的是Mac OS 10.13.3 + go-ipfs v0.4.13 + Ngrok v2.2.8。

3.1 环境搭建

####3.1.1 Ngrok安装

从 download page下载你所需的系统版本。

如果是linux or mac系统,建议移动到系统用户目录下安装,以便更好使用terminal来操作ngrok:

$ mv ngrok.zip ../user/

$ unzip /path/to/ngrok.zip

这里可以注册Ngrok,通过Dashboard,绑定Ngrok账户,享受更多权益功能:

3.1.2 验证、启动Ngrok

./ngrok help

出现如下信息,表示安装成功:

./ngrok http 80

出现如下信息,表示启动ngrok成功:

打开浏览器,键入http://127.0.0.1:4040 ,可以监控资源访问情况:

3.1.3 IPFS部署

部署方式可以参考我之前的文章:利用ipfs构建自己的去中心化分布式wiki系统。

3.1.4 Ngrok绑定IPFS资源

  • 启动本地IPFS节点
  • 运用IPFS上传一张图片,并得到IPFS指纹:QmdzsNmv...Tow
  • 启动ngrok,绑定在IPFS的默认端口:127.0.0.1/tcp/8080,./ngrok http 8080
  • 如下图所示,Ngrok帮我们动态映射了:29e22496.ngrok.io -> localhost:8080
  • 我们用手机微信对http://29e22496.ngrok.io/ipfs/QmdzsNmv...Tow 进行访问
  • 我们再在浏览器发起一个对本地ipfs资源的访问:localhost:8080/ipfs/QmdzsNmv...Tow

我们看到了分别来自本地ipfs和手来自机的GET Response,资源访问成功。

当然,有朋友说,反向代理层能否自定义自己的域名前缀,其实,Ngrok是为我们提供了这样的服务的,但是需要购买付费服务:

3.1.5 使用Ngrok对IPFS资源进行监控

  • 浏览器打开 http://localhost:4040/inspect/http
  • 我们来监控刚才对IPFS资源访问的详细记录和报文数据:

我们可以成功监控到两次资源请求的耗时以及协议报文的详细数据。

3.1.6 通过Ngrok API 自动化运维IPFS节点

然而,有朋友又会抱怨了:以上的所有操作都是需要人工手动来建立和部署的,能否实现远程自动化的运维服务。

答案是:没有什么是程序员解决不了,“懒”是我们永远追求的境界。

通过 Ngrok API 文档,我们可以通过RPC远程调用来控制节点,并集成到业务程序代码里,实现自动化运维和控制。

一些常用的操作如下:

方法名

请求形式

API

备注

Start tunnel

POST

/api/tunnels

Stop tunnel

DELETE

/api/tunnels/:name

Delete Captured Requests

DELETE

/api/requests/http

有兴趣的朋友可以在自己的业务或者App中进行集成。

四、未完待续

我们通过Ngrok为IPFS节点配置HTTP Tunnels,充分利用了其NAT穿越的特性,成功搭建了属于自己的资源网关,为他人提供IPFS节点服务。但是这仅仅是一个雏形,缺陷还很多,随后会再写一篇文章《【应用】(进阶)基于IPFS和Ngrok构建自维护资源网关》,来讲解对资源网关的种种优化,例如:

  • 视频等大文件本地缓存优化
  • ipns动态解析目录
  • 自动化控制资源的分享权限
  • ...

五、参考文献


相关文章和视频推荐

【戴嘉乐】(进阶)基于IPFS和Ngrok构建自维护资源网关

圆方圆学院汇集大批区块链名师,打造精品的区块链技术课程。 在各大平台都长期有优质免费公开课,欢迎报名收看。

公开课地址:https://ke.qq.com/course/345101?flowToken=1007371

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java3y

从零开始写项目【总结】

从零开发项目概述 最近这一直在复习数据结构和算法,也就是前面发出去的排序算法八大基础排序总结,Java实现单向链表,栈和队列就是这么简单,十道简单算法题等等… ...

45210
来自专栏高性能服务器开发

(八)高性能服务器架构设计总结4——以flamigo服务器代码为例

二、架构篇 一个项目的服务器端往往由很多服务组成,就算单个服务在性能上做到极致,支持的并发数量也是有限的,举个简单的例子,假如一个聊天服务器,每个用户的信息是1...

5104
来自专栏Flutter入门到实战

深入理解什么是RESTful API ?

越来越多的人开始意识到,网站即软件,而且是一种新型的软件。   这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(hi...

1.8K2
来自专栏FreeBuf

在HTML5移动应用中挖掘XSS漏洞

微信号:freebuf Linus(@_zulln)是一位有着15年漏洞挖掘经验的瑞士黑客,本文就是他写的。 现在使用HTML5开发移动APP越来越受欢迎。H...

2045
来自专栏blackheart的专栏

[解读REST] 6.REST的应用经验以及教训

衔接上文[解读REST] 5.Web的需求 & 推导REST,上文根据Web的需求推导出了REST架构风格,以及REST的详细描述和解释。自从1994年以来,R...

26210
来自专栏腾讯Bugly的专栏

关于移动 App H5 页面里的 JavaScript 异常捕获

自 HTML5 标准正式发布之后,其得天独厚的跨平台特性吸引了众多开发者的目光。 伴随着 HTML5 的发展,JavaScript 的重要性也在逐步增加,要说现...

6149
来自专栏coolblog.xyz技术专栏

MyBatis 源码分析系列文章合集

我从七月份开始阅读MyBatis源码,并在随后的40天内陆续更新了7篇文章。起初,我只是打算通过博客的形式进行分享。但在写作的过程中,发现要分析的代码太多,以至...

1.3K7
来自专栏自由而无用的灵魂的碎碎念

让fedora也可以播放音乐文件

本人自从开始使用linux/unix,发现windows并非唯一最佳选择,这不,linux下什么也都干干。

1142
来自专栏刘望舒

Android 模块化之路 模块间通信

4752
来自专栏圆方圆学院精选

【戴嘉乐 IPFS】(进阶)基于IPFS和Ngrok构建自维护资源网关

上篇文章《(入门)基于IPFS和Ngrok构建自维护资源网关》,我们通过Ngrok为IPFS节点配置HTTP Tunnels,充分利用了其NAT穿越的特性,成功...

1811

扫码关注云+社区

领取腾讯云代金券