IPFS问题总结
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的私有网络
该方法对于解决这个问题比较麻烦,但对于有私有网络需求的应用使用起来比较安全高效,具体请参看:
https://www.cnblogs.com/HandyLi/p/11864639.html
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
按原方式访问和下载
IPFS问题总结的更多相关文章
- IPFS搭建分布式文件系统 - 访问控制
IPFS 一个内容可寻址.对等的超媒体分发协议. IPFS网络中的节点形成分布式文件系统. 为什么要用IPFS? “IPFS and the Blockchain are a perfect matc ...
- 什么是IPFS?(二)
IPFS的的"宏伟"目标是取代HTTP, 那么先来看看IPFS是如何工作的? IPFS为每一个文件分配一个独一无二的哈希值(文件指纹: 根据文件的内容进行创建), 即使是两个文件内 ...
- IPFS家族(二)
go-ipfs IPFS协议的go语言实现,ipfs的核心协议,最新版是v0.4.13 下载地址:https://dist.ipfs.io/#go-ipfs 源代码地址:https://github. ...
- IPFS家族(一)
IPFS这个项目其实很大,并不像大家想象的是一个东西,IPFS是由很多模块组成,每一个模块现在都已经独立成项目了,并且有自己的主页.让我们来简单看一下IPFS家族成员. 协议实验室的主页:https: ...
- IPFS: Merkle DAG数据结构
今天带大家来深入探索一下IPFS的核心数据结构Merkle DAG 什么是 Merkle DAG? Merkle DAG是IPFS系统的核心概念之一,当然Merkle DAG并不是IPFS团队发明的, ...
- IPFS网络是如何运行的(p2p网络)
IPFS是一个p2p网络,先来看看BitTorrent的p2p网络是如何工作的? 想要bt下载一个文件,首先你需要一个种子文件torrent,种子文件包含至少一个 Tracker(一台服务器地址)信息 ...
- IPFS: BitSwap协议(数据块交换)
原创 2018-01-11 飞向未来 IPFS指南 BitSwap协议 IPFS节点之间是如何进行数据交换的?本文来讲一下这个问题. IPFS在BitTorrent的基础上实现了p2p数据交换协议:B ...
- IPFS: NAT traversal(NAT穿越)
IPFS是一个p2p网络,那么一定绕不开的一个问题就是NAT穿越.之前的文章里面也提到过IPFS网络连通性使用的ICE NAT穿越框架,本文简单介绍一下什么是NAT. 为什么有NAT技术? NAT ...
- IPFS开发团队是如何工作的?
小编不是一个很八卦的人,连当红明星都认不全.不过,今天还是带领大家来扒一扒ipfs开发团队是如何工作的. 工作方式: 全体会议:每周一有一个全体会议,这个会议是提前安排好的一个日程 任务讨论:把大任务 ...
- IPFS:Filecoin和复制证明
这篇文章主要来讲一下Filecoin协议里面的复制证明(Proof of Replication),由于协议涉及到很多概念,可能看起来有点晕乎乎的,小编尽量把复杂问题简单化 ,力求给大家做大普及IPF ...
随机推荐
- php IP地址转换
<?php $enip = ip2long('210.110.11.49); echo $enip."<br />";//-764540111 echo long ...
- java 的HashMap底层数据结构
HashMap也是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在.在HashMap中,key-value总是会当做一个整体来处理,系统会根据 ...
- Linux下切换用户出现su: Authentication failure的解决办法
在切换用户时,密码没有输错,但始终无法成功地切换,还报出身份验证失败的错误,下面是具体解决方案: 在终端上输入指令sudo passwd root 此时输入你的密码 重复再次输入你的密码 再次用su指 ...
- h5 移动端在阻止touchstart的默认事件时报错
h5 移动端在阻止touchstart的默认事件时报错 解决办法, 可以添加 *{ touch-action: none;}即可消除错误
- apache 伪静态配置 .htaccess
htaccess语法教程apache服务器伪静态规则教程 虽然网上有很多教程,不过发现大部分都是抄袭一个人的,一点都不全,所以我想写一个简单的易于理解的教程,我学习.htaccess是从目录保护开始的 ...
- AOP统一处理修改人、创建人、修改时间、创建时间
1.配置拦截 首先开启 <aop:aspectj-autoproxy proxy-target-class="true"/>代理.解释一下下面..的意思是多个 < ...
- Git-GitHub-GitLab三者之间的联系及区别
在讲区别以及联系之前先简要的介绍一下,这三者都是什么(本篇文章适合刚入门的新手,大佬请出门左转) 1.什么是 Git? Git 是一个版本控制系统. 版本控制是一种用于记录一个或多个文件内容变化,方便 ...
- 蓝桥杯练习Day 2
问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式 输入包含一个整数n ...
- 关于前端html5的总结
简介 HTML5 是HTML语言的第5次重大修改产生的新的HTML语言版本 HTML5 是W3C组织和众多主要浏览器厂商以及众多开发者共同努力的结果,得之不易 HTML5 主要改进包括:增加新的HTM ...
- Snapchat欲联手亚马逊推扫一扫功能,社交应用营收来源将有大变化?
当下的社交应用,已经不能完全仅用"社交"的标签进行定义.因为目前的社交应用不仅承载着大众的喜怒哀乐和沟通指责,更在逐渐打造起一个连接多方的生态系统.甚至只从自身的营收.利润出发,社 ...