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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM