环境:两台Linux电脑
安装docker、docker-compose、go环境
其他:Python3、pip、make
1、在两台电脑上分别安装docker,主机ip分别为:192.168.229.248、192.168.229.243
2、从GitHub上下载项目private-network-ipfs-master到software目录下,并解压。
3、安装make (make命令是GNU的工程化编译工具,用于编译众多相互关联的源代码问价,以实现工程化的管理,提高开发效率。)
sudo apt-get update
sudo apt-get install ubuntu-make
在有Makefile的目录下执行make up
4、报错:docker-compose: command not found解决办法【没有安装docker-compose】
docker的安装没有问题,但在使用 docker-compose的时候一直提示找不到命令
那这里先升级一下pip:pip install --upgrade pip
pip下载docker-compose pip install docker-compose
若报错:Python版本不够
修改默认优先使用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
修改默认优先使用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)请求
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、生成并分发一个共享key,各个节点使用同一个key
执行语句从GitHub上下载项目到gopath目录下(~/go/src/github.com/)
go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen
在项目路径(~/go/src/github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen)下执行
go build
./ipfs-swarm-key-gen > swarm.key
此时,项目目录下生成一个swarm.key文件。swarm.key 用来做私链认证的密钥,最终要放在 /ipfs/data 目录下。
将此文件拷贝到两台电脑的/ipfs/data目录下。
8、移除默认的boostrap节点
docker exec ipfs_host ipfs bootstrap rm --all
9、添加节点创建网络
查看电脑二:192.168.229.244 的节点信息
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)的节点ID
docker exec ipfs_host ipfs bootstrap add /ip4/192.168.1.244/tcp/4001/ipfs/12D3KooWEod9tXHHahtjTPc3AoKwZx3QjgzrqNuijigC5bdfHsBP
10、重启两台电脑的 ipfs_host 服务
docker restart ipfs_host
11、查看邻居
docker exec ipfs_host ipfs swarm peers
结果
/ip4/192.168.229.248/tcp/4001/p2p/12D3KooWMU9v2VQYSFt9K5forXKr4mQkjUrKTzZN8i4FXbZWkmUz
12、测试
(1)在 192.168.229.244 节点 添加文件
docker exec ipfs_host ipfs add /data/ipfs/version
2 B / 2 B 100.00%added QmaHbbushv2gYBUyofdm853cy1HTcNuinqagCfMjMdGmNw version
(2)在 192.168.1.246 节点 用哈希值读取该文件
docker exec ipfs_host ipfs cat QmaHbbushv2gYBUyofdm853cy1HTcNuinqagCfMjMdGmNw
10
12、附录
(1)查看运行日志
docker logs -f ipfs_host
(2)停止容器
docker stop ipfs_host
(3)删除容器
docker rm ipfs_host
(4)重启容器
docker restart ipfs_host
(5)运行 IPFS 命令
docker exec ipfs_host <ipfs cmd>
13、使用192.168.229.248:5001/api/v0/add 添加文件
- 注:从浏览器地址栏输入url进行的是http的get请求,而不是http post请求。
会报405 - Method Not Allowed
错误
如果想进行http post 请求,需要postman工具软件。