热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

IPFS问题总结

1、安装包下载ipfs安装版本下载:https:github.comipfsgo-ipfseleases,这是IPFS的go语言实现版,目前实现的还有js版本。2、安装与启动lin

1、安装包下载

ipfs安装版本下载:https://github.com/ipfs/go-ipfs/releases,这是IPFS的go语言实现版,目前实现的还有js版本。

2、安装与启动

linux下安装需注意:go-ipfs解压后需将文件所有者和组更改为root,然后安装。

修改文件夹用户组

chgrp root ./go-ipfs -R

chown root ./go-ipfs -R

-R表示递归目录下所有文件

 

ipfs节点初始化:

ipfs init

默认情况下,ipfs将在当前用户主目录(例如:对于hubwiz用户,其主目录就是C:\Users\hubwiz或/home/hubwiz)下建立.ipfs子目录,作为本地仓库的根目录。

如果想自定义ipfs的仓库目录,需要设置IPFS_PATH环境变量,将其指向目标目录。若IPFS_PATH设置为/home/hxdms/ipfs则创建如下文件:

 

 

  ipfs后台启动命令:ipfs daemon > ipfs.log &

3、局域网搭建的三个ipfs节点之间无法下载其他节点上的文件

问题描述:A、B、C为局域网内三个IPFS节点,QmU9N3w91cLFmxF4j77EL7QAzTzVpatyUuRiKYgKz7P7DM有A节点上传;

节点B、C通过命令ipfs cat QmU9N3w91cLFmxF4j77EL7QAzTzVpatyUuRiKYgKz7P7DM无法下载。

问题分析:在B、C节点上通过命令: ipfs swarm peers,查看不到A节点,说明节点之间未建立连接,在局域网中并不能自动发现ipfs节点。

解决办法:

(1)、手动连接要访问的ipfs节点

 

 (2)、通过构建A、B、C的私有网络

该方法对于解决这个问题比较麻烦,但对于有私有网络需求的应用使用起来比较安全高效,具体请参看:

 

4、浏览器中无法通过Gateway访问文件

问题描述:本地可以在浏览器中通过localhost访问ipfs上的文件,但局域网内的其他计算机却访问失败,

http://IP:PORT/ipfs/Qmd7WPAGcMYmr4V8Rcw11pkrd5Gmrc68dUh3AVU7KQPeK1

问题分析:查看IPFS节点的配置发现是ipfs网关设置引起的。

解决办法:通过命令修改网关——ipfs config Addresses.Gateway /ip4/0.0.0.0/tcp/8082.

默认情况下,网关为/ip4/127.0.0.1/tcp/8082,只能在本地访问。要将其公开给网络中的其他计算机,要使用0.0.0.0作为IP地址。

也可以修改API地址:ipfs config Addresses.API /ip4/127.0.0.1/tcp/5002,如果将API地址也设置为公开的:/ip4/0.0.0.0/tcp/5002,

这其中存在着安全风险,因为任何人都可以对您的节点实施远程控制。如果您需要远程控制某个节点,请确保像其他服务或数据库(防火墙,验证代理等)一样保护端口。

 

5、文件夹更新了,但使用方仍然想用原来的HASH访问文件

解决办法:通过IPNS发布文件夹。

ipfs提供了ipns解决文件夹更新的问题,用户提供一个key(HASH键值)绑定一个已经存在ipfs节点上的文件夹,然后就可以通过key进行访问和下载了。

具体操作如下:

1)、  上传文件夹

ipfs add -r file

#得到file文件夹HASH:QmYVfNptb5k52K9BG4Qk21Zzem1NdcmMgHMhsbsDJN5QRM

 

2)、  创建key

创建key用于发布文件夹:

ipfs key gen --type=rsa --size=2048 testkey

#创建名称为testkey的键

ipfs key list -l

#查看已经创建的keys,-l会列出key的HASH

 

3)、  发布文件夹,并绑定到指定key

将key绑定到指定文件夹:

ipfs name publish --key=testkey QmYVfNptb5k52K9BG4Qk21Zzem1NdcmMgHMhsbsDJN5QRM

#发布到IPNS,并将文件夹绑定testkey:QmYcrteNYNV1e7Wub7jCnogpHoeoBeXLNYg12ow87zHzPe

 

ipfs name publish QmYVfNptb5k52K9BG4Qk21Zzem1NdcmMgHMhsbsDJN5QRM

#将文件夹发布到IPNS,默认与节点ID(QmUpwjfX6gedCEeh6ncRfshXnDuwSbvZh1uXpriMy1kFnH)绑定。

 

4)、  文件夹访问

Gateway访问:

IP:8080/ipns/QmUpwjfX6gedCEeh6ncRfshXnDuwSbvZh1uXpriMy1kFnH

或IP:8080/ipns/ QmYcrteNYNV1e7Wub7jCnogpHoeoBeXLNYg12ow87zHzPe

 

5)、  文件下载:

ipfs get /ipns/QmUpwjfX6gedCEeh6ncRfshXnDuwSbvZh1uXpriMy1kFnH

或ipfs get /ipns/QmYcrteNYNV1e7Wub7jCnogpHoeoBeXLNYg12ow87zHzPe

 

6)、  文件夹更新

文件夹更新后需要重新发布,重复1、3步骤即可,要注意更改文件夹的HASH。

ipfs add -r file

得到file文件夹的Hash值:QmSbQBdaK4mvT1aUwDcrpjMzpRiRvtmEjZuDyziVrTeb2q

发布到之前的key:

ipfs name publish --key=testkey QmSbQBdaK4mvT1aUwDcrpjMzpRiRvtmEjZuDyziVrTeb2q

或ipfs name publish QmSbQBdaK4mvT1aUwDcrpjMzpRiRvtmEjZuDyziVrTeb2q

按原方式访问和下载

 



推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • libsodium 1.0.15 发布:引入重大不兼容更新
    最新发布的 libsodium 1.0.15 版本带来了若干不兼容的变更,其中包括默认密码散列算法的更改和其他重要调整。 ... [详细]
author-avatar
铭娟佑廷雅冰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有