IPFS:搭建IPFS网络,多服务器

1.准备机器

准备几台虚拟机,不分主从,我用的是centos7,我这里准备了两台服务器。

2.下载与安装

这里需要各个节点都进行安装

我这里使用的是0.4版本的最后一个小版本。官网一般进不去,推荐github。

下载地址:https://github.com/ipfs/go-ipfs/releases/download/v0.4.23/go-ipfs_v0.4.23_linux-arm64.tar.gz

更多版本:https://github.com/ipfs/go-ipfs/releases

# 解压
tar -zvxf go-ipfs_v0.4.23_linux-amd64.tar.gz

#安装
cd go-ipfs
./install.sh

#测试
ipfs help

3.初始化节点

3.1.初始化

各个节点都需要初始化

# 初始化
ipfs init

 3.2.记录下节点的id

huawei:QmTWfC********************LMMK4xKwArLL
aliyun:QmcgkDiP********************cCEdZZeh8QKr

3.3.修改存储容量:  

修改~/.ipfs/config中"StorageMax"字段即可(目前默认为10GB)

3.4.修改访问路径:

ipfs的api和gateway默认访问路径为127.0.0.1.如需要其他机器访问,需要修改~/.ipfs/config中api和gateway字段,将127.0.0.1替换为0.0.0.0

3.5.http corps问题

非本地访问会产生跨域问题,需要在设置中注明。

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]'

注意: 开发环境设置中“*”意为允许所有域名访问,生产环境下应该将跨域设置为指定域名或关闭跨域

3.6查看节点ID

如果忘记了id,可以通过ipfs id命令查看

4.创建共享密钥

# 下载密钥工具
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/

注意:*.*.*.* 为你的ip,这里密钥只生成一次,每个服务器使用同一个密钥

5.添加启动节点

5.1.启动

每个节点都需要执行,启动

# 删除默认启动节点(删除公网节点)
ipfs bootstrap rm all 

# 各节点分别将其他节点添加到bootstrap列表
ipfs bootstrap add /ip4/被添加节点的ip地址/tcp/4001/ipfs/被添加节点的ID值

# 启动节点
nohup ipfs daemon >> ./log/ipfs.log 2>&1 &

5.2.测试

1.huawei添加文件

ipfs add a.txt

 

2.aliyun获取文件

ipfs get QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH

 

3.浏览器访问:ip:port/ipfs/Qmxxxxxxx,两台服务器均能访问

6.设置ipfs服务

cd /lib/systemd/system/
vim ipfs.service

### 插入以下内容
[Unit]
Description=IPFS

[Service]
ExecStart=/usr/local/bin/ipfs daemon
Restart=always
User=root
Group=root

[Install]
WantedBy=multi-user.target

# 启动
service ipfs start

7.安装可视化管理页面WEBUI

# 下载源码
git clone https://github.com/ipfs-shipyard/webui

# 安装
cd webui
npm install

# 运行
npm start

注意:在安装过程中可能遇到错误:make: g++ : Command not found,执行 yum -y install gcc+ gcc-c++ 即可

如果页面显示 Failed to connect to the API. 需要在页面下方的API ADDRESS处配置API地址:/ip4/*.*.*.*/tcp/5001 , *.*.*.*为你的ip

 运行效果:

8.API

所有命令行支持的命令都有对应的Restful api实现,官方文档:

https://docs.ipfs.io/reference/api/http/

中文参考:

https://blog.csdn.net/weixin_43132569/article/details/82628570

9.SDK

GO语言:

https://github.com/ipfs/go-ipfs-api

 

Java:

https://github.com/ipfs-shipyard/java-ipfs-http-client

需要配置仓库地址

<repositories>
  <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
  </repository>
</repositories>

<dependencies>
  <dependency>
      <groupId>com.github.ipfs</groupId>
      <artifactId>java-ipfs-http-client</artifactId>
      <version>$LATEST_VERSION</version> 
  </dependency>
</dependencies>

 

 

参考:https://blog.csdn.net/u012140251/article/details/103436712

posted @ 2020-06-11 09:54  市井俗人  阅读(1058)  评论(1编辑  收藏