基于blocksout搭建区块浏览器
下载开源项目:https://github.com/blockscout/blockscout
docker部署文档:https://docs.blockscout.com/setup/deployment/docker-compose-deployment
这样就可以了:
cd ./docker-compose
docker-compose up --build -d
参考文档:
backend参数:https://docs.blockscout.com/setup/env-variables/backend-env-variables
frontend参数:https://docs.blockscout.com/setup/env-variables/frontend-common-envs
参数修改:
- 主配置文件 docker-compose/docker-compose.yml
environment:
ETHEREUM_JSONRPC_HTTP_URL: http://192.168.31.213:8545/
ETHEREUM_JSONRPC_TRACE_URL: http://192.168.31.213:8545/
ETHEREUM_JSONRPC_WS_URL: ws://192.168.31.213:8546/
CHAIN_ID: '15656'
NETWORK: 'OSC'
SUBNETWORK: 'TESTNET'
- 环境变量文件 docker-compose/envs/common-blockscout.env
# 链的类型配置
ETHEREUM_JSONRPC_VARIANT=geth # 如果您使用的是 geth 客户端,保持不变
# 数据库配置(已经配置好,一般不需要修改)
DATABASE_URL=postgresql://blockscout:ceWb1MeLBEeOIfk65gU8EjF8@db:5432/blockscout
# 币种配置
COIN_NAME=OSC # 设置为您的币种名称
COIN=OSC # 设置为您的币种符号
# API 配置
API_V2_ENABLED=true # 启用 V2 API
# 市场数据配置
DISABLE_MARKET=true # 如果不需要显示市场数据,保持为 true
# 性能配置
POOL_SIZE=80 # 数据库连接池大小
POOL_SIZE_API=10 # API 数据库连接池大小
# 心跳超时
HEART_BEAT_TIMEOUT=30
- 前端环境变量文件 docker-compose/envs/common-frontend.env
NEXT_PUBLIC_API_HOST=192.168.31.215
NEXT_PUBLIC_API_PROTOCOL=http
NEXT_PUBLIC_STATS_API_HOST=http://192.168.31.215:8080
NEXT_PUBLIC_NETWORK_NAME=Octobus smart chain
NEXT_PUBLIC_NETWORK_SHORT_NAME=Octobus
NEXT_PUBLIC_NETWORK_ID=1029
NEXT_PUBLIC_NETWORK_CURRENCY_NAME=ONB
NEXT_PUBLIC_NETWORK_CURRENCY_SYMBOL=ONB
NEXT_PUBLIC_NETWORK_CURRENCY_DECIMALS=18
NEXT_PUBLIC_API_BASE_PATH=/
NEXT_PUBLIC_APP_HOST=192.168.31.215
NEXT_PUBLIC_APP_PROTOCOL=http
NEXT_PUBLIC_HOMEPAGE_CHARTS=['daily_txs']
NEXT_PUBLIC_VISUALIZE_API_HOST=http://192.168.31.215:8081
NEXT_PUBLIC_IS_TESTNET=true
NEXT_PUBLIC_API_WEBSOCKET_PROTOCOL=ws
NEXT_PUBLIC_API_SPEC_URL=https://raw.githubusercontent.com/blockscout/blockscout-api-v2-swagger/main/swagger.yaml
# Required to enable blockchain interaction
# NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID=
注意host需要配置成docker容器内部可以访问的变量
4. nginx配置文件 docker-compose/proxy/default.conf.template
允许跨域
server {
listen 80;
server_name localhost;
proxy_http_version 1.1;
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE, PATCH' always;
add_header 'Access-Control-Allow-Headers' 'DNT,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization,x-csrf-token' always;
location ~ ^/(api(?!-docs$)|socket|sitemap.xml|auth/auth0|auth/auth0/callback|auth/logout) {
proxy_pass ${BACK_PROXY_PASS};
proxy_http_version 1.1;
proxy_set_header Host "$host";
proxy_set_header X-Real-IP "$remote_addr";
proxy_set_header X-Forwarded-For "$proxy_add_x_forwarded_for";
proxy_set_header X-Forwarded-Proto "$scheme";
proxy_set_header Upgrade "$http_upgrade";
proxy_set_header Connection $connection_upgrade;
proxy_cache_bypass $http_upgrade;
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE, PATCH' always;
add_header 'Access-Control-Allow-Headers' 'DNT,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization,x-csrf-token' always;
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
}
允许跨域需要加上,不然会报错:
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE, PATCH' always;
add_header 'Access-Control-Allow-Headers' 'DNT,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization,x-csrf-token' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE, PATCH' always;
add_header 'Access-Control-Allow-Headers' 'DNT,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization,x-csrf-token' always;
docker-compose down
docker-compose up -d
非常简单,一键部署

浙公网安备 33010602011771号