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