阿里雲ipfs私有鏈搭建

1. go環境安裝

安裝

yum install golang

配置環境變量

#新建go目錄作爲項目目錄
mkdir -p $HOME/go
#用cat的方法在尾部增加配置配置golang的 GOROOT GOPATH

cat >>$HOME/.bash_profile<<EOF
export GOROOT=/usr/lib/golang
export GOPATH=\$HOME/go
export PATH=\$PATH:\$GOROOT/bin
EOF

讓配置生效

source $HOME/.bash_profile

檢查下go的env環境變量

go env

輸出:

[giser@izbp182lz6444d7n8bnvx4z ipfs]$  go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/giser/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/giser/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/lib/golang"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build294906065=/tmp/go-build -gno-record-gcc-switches"

2. 搭建單節點的私有IPFS網絡

前面是啓動了一個IPFS節點加入了公有IPFS網絡,如果你想搭建自己私有的IPFS網絡,需要爲自己的節點設置swarm key密鑰。

2.1 生成私有網絡swarm key

要生成私有網絡的話,必須使用ipfs-swarm-key-gen創建私有網絡的swarm key。私有網絡的所有的節點都要使用這個key,否則無法加入這個私有網絡。

#關閉前面啓動的ipfs節點

    docker stop ipfs_host
    docker rm -f ipfs_host
#配置staging和data的volume映射文件

    ipfs_staging=/tmp/ipfs_staging
    mkdir -p $ipfs_staging
    ipfs_data=/tmp/ipfs_data
    mkdir -p $ipfs_data
#拉取ipfs swarm key工具

    go get github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen
#生成swarm key

    $GOPATH/bin/ipfs-swarm-key-gen > $ipfs_data/swarm.key
#啓動ipfs節點

    docker run -d --name ipfs_host \
    -v $ipfs_staging:/export \
    -v $ipfs_data:/data/ipfs \
    -p 4001:4001 \
    -p 127.0.0.1:8080:8080 \
    -p 127.0.0.1:5001:5001 \
    ipfs/go-ipfs:latest

2.2 移除默認的bootstrap節點

默認配置的節點都是加入全球IPFS網絡的,需要刪除所有bootstrap節點信息。
【運行命令】

docker exec ipfs_host ipfs bootstrap rm --all

【檢查結果】
查看swarm peers,如果打印出的列表爲空就對了。

在ipfs_host容器中運行‘ipfs swarm peers’命令,查看已連接的其他ipfs節點

docker exec ipfs_host ipfs swarm peers

3. 爲私有IPFS網絡添加節點

搭建的IPFS如果只有一個節點,可以用作調試環境,但要用於生產環境的話就沒有意義了。生產環境最好還是搭建多節點的IPFS網絡。
在第2步中,第一個私有節點啓動後,可以再添加若干個新的節點,這樣一個多節點的IPFS私有網絡就搭好了。添加新節點時要注意:1)在添加新節點的之前,要把前面生成的swarm key複製到ipfs_data目錄下;2)在新節點啓動後,要指定bootstrap信息。

啓動第二個IPFS節點(同一臺物理機)
在測試環境和生產環境,建議在不同物理機上創建IPFS多節點。在本地調試環境,可以在一臺物理機上創建多個IPFS節點。在創建新節點的時候要注意:1)不同節點映射的volume不要重合;2)容器名不要重合;3)對外端口不要重合;4)要記得把前面生產的swarm key複製到新創建的節點的ipfs_data文件夾下。例如:

    new_peer_suffix=_1
    ipfs_staging=/tmp/ipfs_staging$new_peer_suffix
    mkdir -p $ipfs_staging
    ipfs_data=/tmp/ipfs_data$new_peer_suffix
    mkdir -p $ipfs_data

    cp /tmp/ipfs_data/swarm.key $ipfs_data/swarm.key
   #啓動ipfs節點
    docker run -d --name ipfs_host$new_peer_suffix \
    -v $ipfs_staging:/export \
    -v $ipfs_data:/data/ipfs \
    -p 4101:4001 \
    -p 127.0.0.1:8180:8080 \
    -p 127.0.0.1:5101:5001 \
    ipfs/go-ipfs:latest

在一臺物理機上可以啓動多個IPFS節點(我自己在macbook pro上創建了3個peer,經測試兩兩彼此都是聯通的),只要注意前面4個注意事項就好了。

指定bootstrap信息(Optional)
ipfs bootstrap add /ip4/x.x.x.x/tcp/4001/ipfs/QmbvgDGNmKRoTiB16g1qn82pTupQdPznZPwVo9zvrCPEJv

4. 測試IPFS節點(上傳/下載文件)

測試IPFS節點比較簡單

上傳文件

# 登陸到ipfs_host container
docker exec -it ipfs_host /bin/sh
# 上傳文件
# 注:測試的時候不建議上傳特別大的文件,尤其如果你是連了全球網絡的話,也不要上傳私密文件.
# 下面的所有命令行都是跑在ipfs_host container裏面的
# 創建hello world測試文件
echo "hello world" > hello.txt
ipfs add hello.txt

【查看結果】方法1: 查看上傳進度

上傳文件的add命令會打印出上傳的進度,如果看到100.00%就是上傳完畢了。

/ # ipfs add /data/ipfs/version
added QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o hello.txt
12 B / 12 B [===================================================================================================================================] 100.00%

【查看結果】方法2: ipfs cat命令查看文件內容

docker exec ipfs_host ipfs cat /ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o

一切正常的話應該能看到hello.txt的文件內容:

/ # ipfs cat QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
hello world

【查看結果】方法3: 瀏覽器查看

前面啓動ipfs節點的時候把ipfs_host容器的8080端口映射到了物理機,可以通過該端口直接在瀏覽器中查看剛剛上傳的文件內容,直接在瀏覽器中敲地址http://localhost:8080/ipfs/------IPFS_URL------就可以查看文件了。
例如,剛剛上傳的文件hash是QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o,直接在瀏覽器地址窗口輸入
http://localhost:8080/ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
就可以看到文件內容了

【查看結果】方法4: curl命令訪問8080端口

新開一個terminal窗口,運行下面這個命令:

curl http://localhost:8080/ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o

打印出來hello world就對了~_~

hello world

參考資料

https://blog.csdn.net/oscube/article/details/80598790
https://blog.csdn.net/weixin_41459401/article/details/84563258
https://blog.csdn.net/weixin_41459401/article/details/84582125

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章