(87条消息) IPFS — 节点搭建_躺在家里不干活的博客-CSDN博客_ipfs节点搭建

一、安装go-ipfs

1、下载

下载地址

2、安装

## 解压tar -xvzf go-ipfs_v0.7.0_linux-amd64.tar.gz## 执行安装sudo ./go-ipfs/install.sh## 查看版本ipfs --version

安装成功

3、初始化仓库

ipfs init

初始化成功!

4、启动一个守护进程

## 启动一个守护进程$ ipfs daemon

启动成功!

5、通过互联网访问

经过上一步,我们已经可以在本地机器上通过API的方式上传文件了,但是如果要通过互联网访问,还需要配置API的监听端口

配置API监听端口## 0.0.0.0表示允许任何的IP访问ipfs config --json Addresses.API '"/ip4/0.0.0.0/tcp/5001"'## 配置网关的监听地址ipfs config --json Addresses.Gateway '"/ip4/0.0.0.0/tcp/8080"'##按需解决跨域问题ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'## 除了这种方式,也可以通过配置CROS的方式来解决跨域问题
  • 检查端口是否允许访问
    ⚠️⚠️ 如果使用的是云服务器,一般都会有安全组,要在安全组中打开相应的端口⚠️⚠️
  • 重新启动
    ## 启动一个守护进程$ ipfs daemon

二、搭建IPFS私有网络

(87条消息) 搭建IPFS私有网络_躺在家里不干活的博客-CSDN博客_ipfs搭建


IPFS私有网络
星际文件系统(InterPlanetary File System,缩写IPFS)是一个旨在创建持久且分布式存储和共享文件的网络传输协议。它是一种内容可寻址的对等超媒体分发协议。在IPFS网络中的节点将构成一个分布式文件系统。它是一个开放源代码项目,自2014年开始由Protocol Labs在开源社区的帮助下发展。其最初由Juan Benet设计。

为什么需要私有网络
IPFS是一个开放的网络,而每个人都会有一些私有的的内容需要存储或者进一步将这些内容在自己设备上或小范围内进行共享,又或是想用做家庭的数据存储中心,针对这些场景,搭建一个私有网络用于数据存储和数据传输都是非常有用的。


1、生成私有服务使用的密钥

IPFS私有服务其实就是指的一群IPFS节点使用的是同一个key。

修改环境变量IPFS_PATH,安装IPFS的时候,IPFS_PATH默认的路径是~/.ipfs/,IPFS服务各种配置,数据都会存储到这个路径下。我们需要把IPFS_PATH改成我们自己私有网络的路径。比如export IPFS_PATH=’~/.private_ipfs’

2、生产IPFS私有网络使用的key——swarm.key

## 下载并安装ipfs-swarm-key-gen# sparrow @ sparrow-power in ~ [15:24:41] $ go get github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen## 或者使用go get获取ipfs-swarm-key-gen没反应## 此时修改一下环境变量启动GOPROXY,再用go get -v即可,-v参数能够显示go get执行的进度# Enable the go modules featureexport GO111MODULE=on# Set the GOPROXY environment variableexport GOPROXY=https://goproxy.io##注意!!!这里要到ipfs-swarm-key-gen 目录执行## 我的路径是 ~/go/pkg/mod/github.com/!kubuxu/go-ipfs-swarm-key-gen@v0.0.0-20170218193930-0ee739ec6d32/ipfs-swarm-key-gen## 生产swarm.key到.private_ipfs/# sparrow @ sparrow-power in ~ [15:24:41] $ ipfs-swarm-key-gen > ~/.private_ipfs/swarm.key##################################################################################### 上面不成功是因为下载的文件没有编译## 所以直接用下面的方法,注意下载路径# 下载密钥工具git clone https://github.com/Kubuxu/go-ipfs-swarm-key-gen.git# 编译go-ipfs-swarm-key-gen,当前目录会成一个ipfs-swarm-key-gen的可执行二进制文件go build -o ipfs-swarm-key-gen go-ipfs-swarm-key-gen/ipfs-swarm-key-gen/main.go# 生成密钥./ipfs-swarm-key-gen > ~/.ipfs/swarm.key# 分发密钥scp ~/.ipfs/swarm.key root@*.*.*.*:~/.ipfs/复制代码

3、执行ipfs init,再次初始化节点

我已经初始化完成

4、修改config文件,让节点可以相应其它节点的请求

更多修改请参考

# 这句是查看路由配置的,需要使用vim打开config文件将dth修改为dthserver,详细的在上面链接可以看什么意思$ cat ~/.private_ipfs/config | grep dht

修改后执行结果

5、删除初始节点,增加私有网络中的节点

我们做的是私有网络,这些初始节点是实验室在维护,是公共网络的IPFS节点,所以直接删除就行了。另一方面我们要将我们的私有网络的其它节点添加到bootstrap列表中,这样是为了节点之间的发现,强烈建议能用一个固定的公网IP做一个为私有网络的一个节点,保证整个网络的稳定性,可用性。

关于IP地址:IP地址是指互联网协议地址,是IPAddress的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。可以简单的理解为,一个能够上网的设备,就有一个IP地址。这个IP地址一般都是流动的,即:同一个IP地址,某一时段是A用户使用,其他时段是B用户使用。固定IP地址的意思是:某用户固定不变的IP地址

## 这里删除启动时会连接的默认节点# sparrow @ sparrow-power in ~/tmp/share [17:39:28] C:130$ ipfs bootstrap rm --all# xxxx.xxxx.xxxx.xxxx填IP$ ipfs bootstrap add /ip4/192.168.1.87/tcp/4001/p2p/12D3KooWSPP48SCHdrhC34cmjJL5p6Kp1Ay8yv8CNd6gN4x5gm8k执行结果:added /ip4/xxxx.xxxx.xxxx.xxxx/tcp/4001/p2p/12D3KooWSPP48SCHdrhC34cmjJL5p6Kp1Ay8yv8CNd6gN4x5gm8k

删除默认节点

将我们的私有网络的其它节点添加到bootstrap列表中

6、启动节点,检查节点的连接情况

## 启动节点ipfs daemon

启动时可能报错,关闭Ubuntu或者多试几次。

##ipfs swarm peers/ip4/192.168.1.87/tcp/4001/p2p/12D3KooWSPP48SCHdrhC34cmjJL5p6Kp1Ay8yv8CNd6gN4x5gm8k

至此,IPFS私有网络的搭建介绍完毕

当前博客内容的IPFS地址,可使用任意节点访问

官方节点:https://ipfs.io/ipfs/QmVmBtJvhJ3dh7j6LpKxFZoJo4bCh4M3Vn2MennEZz6cnC

参考:

(87条消息) 搭建IPFS私有网络_躺在家里不干活的博客-CSDN博客_ipfs搭建https://blog.csdn.net/weixin_29491885/article/details/113760869