Hyperledger Fabric 2.4 Explorer浏览器安装

踩坑无数,网上文章良莠不齐,很多文件都是错的。

参考:

(https://github.com/hyperledger-labs/blockchain-explorer.giticon-default.png?t=N7T8https://github.com/hyperledger-labs/blockchain-explorer.git

【hyperledger-fabric 【13】部署 Hyperledger Explorer 区块链浏览器】 https://www.bilibili.com/video/BV1GR4y1G7aW

【hyperledger fabric explorer 超级账本区块链浏览器搭建】 https://www.bilibili.com/video/BV1yQ4y1Z7sJ

1、准备环境

fabric版本为2.4。

首先根据视频能够启动Fabric-Sample 的test-network

该网络有两个组织Org1\Org2,每个组织下有一个节点。

我的目录结构参考上一篇文章。

2、在test-network下启动test-network并创建通道

./network up

./network createChannel

3、在explorer目录下载好3个文件

https://github.com/hyperledger-labs/blockchain-explorer/blob/main/docker-compose.yamlicon-default.png?t=N7T8https://github.com/hyperledger-labs/blockchain-explorer/blob/main/docker-compose.yaml

https://github.com/hyperledger-labs/blockchain-explorer/blob/main/examples/net1/connection-profile/test-network.jsonicon-default.png?t=N7T8https://github.com/hyperledger-labs/blockchain-explorer/blob/main/examples/net1/connection-profile/test-network.json

https://github.com/hyperledger-labs/blockchain-explorer/blob/main/examples/net1/config.jsonicon-default.png?t=N7T8https://github.com/hyperledger-labs/blockchain-explorer/blob/main/examples/net1/config.json

4、在explorer目录下创建文件夹connection-profile

将文件test-network放入connection-profile中,并复制一份,重命名

因为我们的网络有2个组织,因此需要两个json文件。多个组织需要编写多个文件对应。

5、修改test-network1.json如下

{
	"name": "test-network",
	"version": "1.0.0",
	"client": {
		"tlsEnable": true,
		"adminCredential": {  //此处为登录浏览器的账户密码
			"id": "exploreradmin",
			"password": "exploreradminpw"
		},
		"enableAuthentication": true,
		"organization": "Org1MSP",         //注意
		"connection": {
			"timeout": {
				"peer": {
					"endorser": "300"
				},
				"orderer": "300"
			}
		}
	},
	"channels": {
		"mychannel": {  //注意channel名称
			"peers": {
				"peer0.org1.example.com": {}   //注意
			}
		}
	},
	"organizations": {
		"Org1MSP": {       
			"mspid": "Org1MSP",
			"adminPrivateKey": {
				"path": "/tmp/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk"   //注意
			},
			"peers": ["peer0.org1.example.com"],
			"signedCert": {
				"path": "/tmp/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem"  //注意
			}
		}
	},
	"peers": {
		"peer0.org1.example.com": {
			"tlsCACerts": {
				"path": "/tmp/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt"
			},
			"url": "grpcs://peer0.org1.example.com:7051"   //注意
		}
	}
}

特别注意两个地方:signedCert、adminPrivateKey。这两处和原始下载文件不一样。

6、修改test-network2.json如下

{
	"name": "test-network",
	"version": "1.0.0",
	"client": {
		"tlsEnable": true,
		"adminCredential": {
			"id": "exploreradmin",
			"password": "exploreradminpw"
		},
		"enableAuthentication": true,
		"organization": "Org2MSP",
		"connection": {
			"timeout": {
				"peer": {
					"endorser": "300"
				},
				"orderer": "300"
			}
		}
	},
	"channels": {
		"mychannel": {   //注意channel名称
			"peers": {
				"peer0.org2.example.com": {}
			}
		}
	},
	"organizations": {
		"Org2MSP": {
			"mspid": "Org2MSP",
			"adminPrivateKey": {
				"path": "/tmp/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/keystore/priv_sk"   //注意
			},
			"peers": ["peer0.org2.example.com"],
			"signedCert": {
				"path": "/tmp/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts/Admin@org2.example.com-cert.pem"   //注意
			}
		}
	},
	"peers": {
		"peer0.org2.example.com": {
			"tlsCACerts": {
				"path": "/tmp/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt"
			},
			"url": "grpcs://peer0.org2.example.com:9051"  //注意
		}
	}
}

本质上需要将Org1改为Org2 、org1改为org2。再修改url端口为test-network Org2peer0的docker镜像端口,也就是9051。容易出问题:使用替代快捷键导致错误。需仔细检查。

7、在explorer目录下修改config.json如下

{
	"network-configs": {
		"test-network1": {
			"name": "Test Network1",
			"profile": "./connection-profile/test-network1.json"
		},
		"test-network2": {
			"name": "Test Network2",
			"profile": "./connection-profile/test-network2.json"
		}
	},
	"license": "Apache-2.0"
}

9、复制test-network文件夹的organizations到explorer目录下

注意:需要启动好网络再复制,否则缺少文件。

必须创建好chennel。

10、编辑docker-compose.yaml变为如下:


# SPDX-License-Identifier: Apache-2.0
version: '2.1'

volumes:
  pgdata:
  walletstore:

networks:
  mynetwork.com:
    name: fabric_test  #注意此处名称和启动的网络名称一致

services:

  explorerdb.mynetwork.com:
    image: ghcr.io/hyperledger-labs/explorer-db:latest
    container_name: explorerdb.mynetwork.com
    hostname: explorerdb.mynetwork.com
    environment:
      - DATABASE_DATABASE=fabricexplorer
      - DATABASE_USERNAME=hppoc
      - DATABASE_PASSWORD=password
    healthcheck:
      test: "pg_isready -h localhost -p 5432 -q -U postgres"
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - pgdata:/var/lib/postgresql/data
    networks:
      - mynetwork.com

  explorer.mynetwork.com:
    image: ghcr.io/hyperledger-labs/explorer:latest
    container_name: explorer.mynetwork.com
    hostname: explorer.mynetwork.com
    environment:
      - DATABASE_HOST=explorerdb.mynetwork.com
      - DATABASE_DATABASE=fabricexplorer
      - DATABASE_USERNAME=hppoc
      - DATABASE_PASSWD=password
      - LOG_LEVEL_APP=info
      - LOG_LEVEL_DB=info
      - LOG_LEVEL_CONSOLE=debug
      - LOG_CONSOLE_STDOUT=true
      - DISCOVERY_AS_LOCALHOST=false
      - PORT=${PORT:-8080}
    volumes:  #注意此处是将本地文件挂载到docker镜像上,左边是指上文配置好的文件,右边是挂载到docker-compose的目录
      - ./config.json:/opt/explorer/app/platform/fabric/config.json
      - ./connection-profile:/opt/explorer/app/platform/fabric/connection-profile
      - ./organizations:/tmp/crypto
      - walletstore:/opt/explorer/wallet
    ports:
      - ${PORT:-8080}:${PORT:-8080}
    depends_on:
      explorerdb.mynetwork.com:
        condition: service_healthy
    networks:
      - mynetwork.com

11、此时explorer目录下文件结构如下

注意:如果不一致则重头开始,自行排查问题。

12、使用docker启动浏览器

docker-compose -f docker-compose.yaml up -d

如果第一次启动,则会下载docker镜像,需要注意网络通畅。

关闭浏览器:

docker-compose down -v

查看docker启动的容器

docker ps

找到hyperledger/explorer:latest 容器的id XZXXXX,查看日志

docker logs XZXXXX

没有报错则启动成功,在浏览器访问localhost:8080,打不开查看是否被其他进程占用。

账户密码见上文test-network1.json/test-network2.json

注意每次启动test-network,先删除旧的organizations,重新复制一份过去。

13、常见问题:

(1)报错无法生成wallet,一般是配置文件test-network、docker-compose.yaml中的文件路径有问题。

可以进入启动的容器,看看是否挂载上了。根据报错信息查看文件是否存在。如果文件都挂载存在,则排查路径是否正确,看看视频2中的路径。

docker exec -it  XZXXXX  sh

也有可能是json文件有问题,可以自行去官网下载再修改。

本人修改好的文件附上下载地址:
链接: https://pan.baidu.com/s/1DJV0oT9qHyN_y47Tj8UQqQ 提取码: 125s 

(2)第二次启动报错无法访问channel

原因是没有容器没有删除挂载的文件,可能是上一次退出存在问题。

解决办法:

HyperledgerExplorer错误记录:FabricClient - Error: DiscoveryService: mychannel error: access denied_[error] fabricclient - error: discoveryservice: my-CSDN博客

1)先退出

docker-compose down -v

2)删除文件

docker volume rm explorer_pgdata
docker volume rm explorer_walletstore

再启动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值