教程 在浏览器中实现IPFS连接的指引( 二 )


 
你可以选择其中一种方式 , 然后你的IPFS节点会初始化并提供像 `PeerID(节点ID)` 和回路中继地址这样的信息 。记住 , 你想将这个信息编辑到聊天客户端里 , 这样可以使用自己的节点 (参考 WebRTC-Star 使用(#usage) and p2p-circuit 使用(#usage-2) 以获得示例 , 或者编辑 index.html文件并将我的节点的多个地址设定(multiaddresses)换成你自己的 。
 
使用certbot证书机器人
 
确保80端口没有被占用 , 然后对比下面的检查清单 , 接着运行下面的命令:

教程 在浏览器中实现IPFS连接的指引

文章插图
 
不使用certbot证书机器人 (禁用SSL证书)
 
如果你使用这个选项 , 容器不会处理SSL证书 , 你需要将9091端口反向代理到9090端口(SSL) , 且4011端口反向代理到4430端口(SSL) 。
教程 在浏览器中实现IPFS连接的指引

文章插图
 
检查清单
 
  • 将DOMAIN.COM替换成你的域名
  • 确保域名被正确指向到容器运行的机器上(子域名也能正常工作)
 
运行容器
 
在配置好后 , 运行容器是很简单的 。最起码要确保4430端口和9090端口被转发 。
教程 在浏览器中实现IPFS连接的指引

文章插图
 
现在你应该将此机器作用WebRTC-Star节点或p2p-circuit节点 。
 
WebRTC-Star
 
我们可以使用 WebRTC-Star(https://github.com/libp2p/js-libp2p-webrtc-star)节点来帮助发现其他可以直接通过浏览器对浏览器连接的节点 。我觉得可以将此看成跟STUN(https://en.wikipedia.org/wiki/STUN)类似 , 如果你已经熟悉了这个概念的话 。实际上 , 每一个连接节点将会被赋予一个WebRTC-Star multiaddress(https://docs.libp2p.io/concepts/addressing/) 地址 , 这样其他节点可以直接发现和连接到你的浏览器 。这意味着如果你与其他star节点连接上了 , 当star节点下线时 , 你依然保持连接 。
 
使用
 
连接到一个star节点是很简单的:
教程 在浏览器中实现IPFS连接的指引

文章插图
 
设置
 
请注意这个例子使用了我自己的star节点 。不过 , 这些节点并不一定可以在任何时候都连接上 。当前重要的事情是要么找一个可靠的star节点 , 要么搭建自己的 。你可以很容易地根据这里(https://github.com/libp2p/js-libp2p-webrtc-star#rendezvous-server-aka-signaling-server)的指示来以原生的方式搭建自己的节点 , 也可以根据这里(https://github.com/libp2p/js-libp2p-webrtc-star/blob/master/DEPLOYMENT.md)的信息来使用Docker容器(包含为SSL功能配置的Nginx) 。如果你选择原生的方式 , 我们会在这篇文章的后面介绍Nginx反向代理过程和SSL证书取回的方法 。
 
这是一个简洁\高效的P2P通讯方式 。不过有时候NAT网络会带来障碍 。我们使用p2p-circuit(https://docs.libp2p.io/concepts/circuit-relay/) 来绕过它 。
 
? p2p-circuit
 
使用 p2p-circuit对在NAT网络(或VPN等)后面的节点是很有用的 。我发现p2p-circuit的中继与TURN(https://en.wikipedia.org/wiki/Traversal_Using_Relays_around_NAT)是很相似的 , 如果你对那概念熟悉的话 , 应该就很容易理解了 。
 
使用
 
当 p2p-circuit的所有服务就绪后 , 可以用几种方式连接到节点 。首先 , 在启动时 _只_ 连接到我们的节点:
教程 在浏览器中实现IPFS连接的指引

文章插图
 
或者可以之后添加我们自己的节点 , 然后手动初始化连接:
教程 在浏览器中实现IPFS连接的指引

文章插图
 
如果你想不复制例子并实现自己的客户端 , 那确保你与公告频道(announce channel)也在进行通讯 , 这在公告(#advertising) 这里描述了 。在聊天演示应用中 , 相关的代码简化如下:
教程 在浏览器中实现IPFS连接的指引

文章插图
 
设置
 
就如star节点 , 你要认识到这篇文章里列出的节点是在任何时候都可能下线的 , 所以架设自己的节点是很重要的 。


推荐阅读