環(huán)境:兩臺(tái)Linux電腦
安裝docker侄刽、docker-compose、go環(huán)境
其他:Python3鹊汛、pip蒲赂、make
1、在兩臺(tái)電腦上分別安裝docker柒昏,主機(jī)ip分別為:192.168.229.248凳宙、192.168.229.243
2、從GitHub上下載項(xiàng)目private-network-ipfs-master到software目錄下职祷,并解壓氏涩。
3届囚、安裝make (make命令是GNU的工程化編譯工具,用于編譯眾多相互關(guān)聯(lián)的源代碼問(wèn)價(jià)是尖,以實(shí)現(xiàn)工程化的管理意系,提高開(kāi)發(fā)效率。)
sudo apt-get update
sudo apt-get install ubuntu-make
在有Makefile的目錄下執(zhí)行make up
4饺汹、報(bào)錯(cuò):docker-compose: command not found解決辦法【沒(méi)有安裝docker-compose】
docker的安裝沒(méi)有問(wèn)題蛔添,但在使用 docker-compose的時(shí)候一直提示找不到命令
那這里先升級(jí)一下pip:pip install --upgrade pip
pip下載docker-compose pip install docker-compose
若報(bào)錯(cuò):Python版本不夠
修改默認(rèn)優(yōu)先使用Python3
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 200
修改默認(rèn)優(yōu)先使用Python2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 200
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 100
5、在private-network-ipfs-master目錄下
make up
6兜辞、確保配置IPFS API以允許跨源(CORS)請(qǐng)求
docker exec ipfs_host ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
docker exec ipfs_host ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]'
7迎瞧、生成并分發(fā)一個(gè)共享key,各個(gè)節(jié)點(diǎn)使用同一個(gè)key
執(zhí)行語(yǔ)句從GitHub上下載項(xiàng)目到gopath目錄下(~/go/src/github.com/)
go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen
在項(xiàng)目路徑(~/go/src/github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen)下執(zhí)行
go build
./ipfs-swarm-key-gen > swarm.key
此時(shí)逸吵,項(xiàng)目目錄下生成一個(gè)swarm.key文件凶硅。swarm.key 用來(lái)做私鏈認(rèn)證的密鑰,最終要放在 /ipfs/data 目錄下扫皱。
將此文件拷貝到兩臺(tái)電腦的/ipfs/data目錄下足绅。
8、移除默認(rèn)的boostrap節(jié)點(diǎn)
docker exec ipfs_host ipfs bootstrap rm --all
9韩脑、添加節(jié)點(diǎn)創(chuàng)建網(wǎng)絡(luò)
查看電腦二:192.168.229.244 的節(jié)點(diǎn)信息
docker exec ipfs_host ipfs id
{
"ID": "12D3KooWEod9tXHHahtjTPc3AoKwZx3QjgzrqNuijigC5bdfHsBP",
"PublicKey": "CAESIEoZzDY45ijnylgzPvSONU7mLOc44yEGmoMLW0gZONRC",
"Addresses": [
"/ip4/127.0.0.1/tcp/4001/p2p/12D3KooWEod9tXHHahtjTPc3AoKwZx3QjgzrqNuijigC5bdfHsBP",
"/ip4/172.18.0.2/tcp/4001/p2p/12D3KooWEod9tXHHahtjTPc3AoKwZx3QjgzrqNuijigC5bdfHsBP"
],
"AgentVersion": "go-ipfs/0.7.0/ea77213",
"ProtocolVersion": "ipfs/0.1.0",
"Protocols": [
"/ipfs/bitswap",
"/ipfs/bitswap/1.0.0",
"/ipfs/bitswap/1.1.0",
"/ipfs/bitswap/1.2.0",
"/ipfs/id/1.0.0",
"/ipfs/id/push/1.0.0",
"/ipfs/lan/kad/1.0.0",
"/ipfs/ping/1.0.0",
"/libp2p/autonat/1.0.0",
"/libp2p/circuit/relay/0.1.0",
"/p2p/id/delta/1.0.0",
"/x/"
]
}
在電腦一(192.168.229.248) 添加電腦二(192.168.229.244)的節(jié)點(diǎn)ID
docker exec ipfs_host ipfs bootstrap add /ip4/192.168.1.244/tcp/4001/ipfs/12D3KooWEod9tXHHahtjTPc3AoKwZx3QjgzrqNuijigC5bdfHsBP
10氢妈、重啟兩臺(tái)電腦的 ipfs_host 服務(wù)
docker restart ipfs_host
11、查看鄰居
docker exec ipfs_host ipfs swarm peers
結(jié)果
/ip4/192.168.229.248/tcp/4001/p2p/12D3KooWMU9v2VQYSFt9K5forXKr4mQkjUrKTzZN8i4FXbZWkmUz
12段多、測(cè)試
(1)在 192.168.229.244 節(jié)點(diǎn) 添加文件
docker exec ipfs_host ipfs add /data/ipfs/version
2 B / 2 B 100.00%added QmaHbbushv2gYBUyofdm853cy1HTcNuinqagCfMjMdGmNw version
(2)在 192.168.1.246 節(jié)點(diǎn) 用哈希值讀取該文件
docker exec ipfs_host ipfs cat QmaHbbushv2gYBUyofdm853cy1HTcNuinqagCfMjMdGmNw
10
12首量、附錄
(1)查看運(yùn)行日志
docker logs -f ipfs_host
(2)停止容器
docker stop ipfs_host
(3)刪除容器
docker rm ipfs_host
(4)重啟容器
docker restart ipfs_host
(5)運(yùn)行 IPFS 命令
docker exec ipfs_host <ipfs cmd>
13、使用192.168.229.248:5001/api/v0/add 添加文件
- 注:從瀏覽器地址欄輸入url進(jìn)行的是http的get請(qǐng)求衩匣,而不是http post請(qǐng)求蕾总。
會(huì)報(bào)405 - Method Not Allowed
錯(cuò)誤
如果想進(jìn)行http post 請(qǐng)求,需要postman工具軟件琅捏。