1 Commits

Author SHA1 Message Date
cventastic
40ce43a82c added harmony.conf 2022-04-05 15:47:51 +02:00
88 changed files with 1825 additions and 9337 deletions

View File

@@ -1,20 +1,4 @@
### Docs
.envs:
xdai:
```
XDAI_RPC_URL=http://xdai-archive:8545
PUBLIC_IP=
TARGET_PEERS=80
```
TODO:
```
auto-generate .jwtsecret for beacon-execution connection
Fix wireguard chains network for pocket-frontends
```
[Pocket Validator](README_POKT.md) </br>
[Harmony Validator](harmony/README_HARMONY.md)

View File

@@ -1,34 +0,0 @@
version: '3.1'
services:
avalanche:
image: avaplatform/avalanchego:v1.7.7
expose:
- "9650"
- "9651"
ports:
- "9651:9651/tcp"
- "9651:9651/udp"
volumes:
- avalanche:/root/.avalanchego
- ./avalanche/configs/chains/C/config.json:/root/.avalanchego/configs/chains/C/config.json
networks:
- chains
command: "/avalanchego/build/avalanchego --http-host="
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.avalanche-replacepath.replacepath.path=/ext/bc/C/rpc"
- "traefik.http.middlewares.avalanche-stripprefix.stripprefix.prefixes=/avalanche"
- "traefik.http.services.avalanche.loadbalancer.server.port=9650"
- "traefik.http.routers.avalanche.entrypoints=websecure"
- "traefik.http.routers.avalanche.tls.certresolver=myresolver"
- "traefik.http.routers.avalanche.rule=Host(`$DOMAIN`) && PathPrefix(`/avalanche`)"
- "traefik.http.routers.avalanche.middlewares=avalanche-stripprefix, avalanche-replacepath, ipwhitelist"
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=9650"
- "prometheus-scrape.job_name=avalanche"
- "prometheus-scrape.metrics_path=/ext/metrics"
volumes:
avalanche:

View File

@@ -1,43 +0,0 @@
{
"snowman-api-enabled": false,
"coreth-admin-api-enabled": false,
"coreth-admin-api-dir": "",
"eth-apis": [
"public-eth",
"public-eth-filter",
"net",
"web3",
"internal-public-eth",
"internal-public-blockchain",
"internal-public-transaction-pool",
"internal-public-account"
],
"continuous-profiler-dir": "",
"continuous-profiler-frequency": 900000000000,
"continuous-profiler-max-files": 5,
"rpc-gas-cap": 50000000,
"rpc-tx-fee-cap": 100,
"preimages-enabled": false,
"pruning-enabled": true,
"snapshot-async": true,
"snapshot-verification-enabled": false,
"metrics-enabled": false,
"metrics-expensive-enabled": false,
"local-txs-enabled": false,
"api-max-duration": 0,
"ws-cpu-refill-rate": 0,
"ws-cpu-max-stored": 0,
"api-max-blocks-per-request": 0,
"allow-unfinalized-queries": false,
"allow-unprotected-txs": false,
"keystore-directory": "",
"keystore-external-signer": "",
"keystore-insecure-unlock-allowed": false,
"remote-tx-gossip-only-enabled": false,
"tx-regossip-frequency": 60000000000,
"tx-regossip-max-size": 15,
"log-level": "debug",
"offline-pruning-enabled": false,
"offline-pruning-bloom-filter-size": 512,
"offline-pruning-data-directory": ""
}

View File

@@ -0,0 +1,9 @@
#!/bin/sh
if [ ! -f /home/app/.pocket/setupdone ]
then
mkdir -p /home/app/.pocket/data
echo "wget -q -O - '$POCKET_SNAPSHOT' | tar -xv -C /home/app/.pocket/data/"
wget -q -O - $POCKET_SNAPSHOT | tar -xv -C /home/app/.pocket/data/
touch /home/app/.pocket/setupdone
fi

29
bsc.yml
View File

@@ -1,29 +0,0 @@
version: '3.1'
services:
binance-smart-chain:
image: dysnix/bsc:v1.1.11
expose:
- "8545"
- "8546"
- "30303"
volumes:
- bsc_data:/datadir
- ./bsc/config.toml:/config.toml
command: "--cache 18000 --rpc --rpcaddr=\"0.0.0.0\" --rpc.allow-unprotected-txs --txlookuplimit 0 --syncmode snap --config /config.toml --datadir /datadir"
restart: unless-stopped
networks:
- chains
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.bsc-stripprefix.stripprefix.prefixes=/bsc"
- "traefik.http.services.bsc.loadbalancer.server.port=8545"
- "traefik.http.routers.bsc.entrypoints=websecure"
- "traefik.http.routers.bsc.tls.certresolver=myresolver"
- "traefik.http.routers.bsc.rule=Host(`$DOMAIN`) && PathPrefix(`/bsc`)"
- "traefik.http.routers.bsc.middlewares=bsc-stripprefix, ipwhitelist"
volumes:
bsc_data:

View File

@@ -1,65 +0,0 @@
[Eth]
NetworkId = 56
NoPruning = false
NoPrefetch = false
LightPeers = 100
UltraLightFraction = 75
TrieTimeout = 100000000000
EnablePreimageRecording = false
EWASMInterpreter = ""
EVMInterpreter = ""
[Eth.Miner]
GasFloor = 30000000
GasCeil = 40000000
GasPrice = 1000000000
Recommit = 10000000000
Noverify = false
[Eth.TxPool]
Locals = []
NoLocals = true
Journal = "transactions.rlp"
Rejournal = 3600000000000
PriceLimit = 1000000000
PriceBump = 10
AccountSlots = 512
GlobalSlots = 10000
AccountQueue = 256
GlobalQueue = 5000
Lifetime = 10800000000000
[Eth.GPO]
Blocks = 20
Percentile = 60
OracleThreshold = 20
[Node]
IPCPath = "geth.ipc"
HTTPHost = "0.0.0.0"
NoUSB = true
InsecureUnlockAllowed = false
HTTPPort = 8545
HTTPVirtualHosts = ["*"]
HTTPModules = ["eth", "net", "web3", "txpool", "parlia"]
WSPort = 8546
WSModules = ["net", "web3", "eth"]
[Node.P2P]
MaxPeers = 30
NoDiscovery = false
BootstrapNodes = ["enode://1cc4534b14cfe351ab740a1418ab944a234ca2f702915eadb7e558a02010cb7c5a8c295a3b56bcefa7701c07752acd5539cb13df2aab8ae2d98934d712611443@52.71.43.172:30311","enode://28b1d16562dac280dacaaf45d54516b85bc6c994252a9825c5cc4e080d3e53446d05f63ba495ea7d44d6c316b54cd92b245c5c328c37da24605c4a93a0d099c4@34.246.65.14:30311","enode://5a7b996048d1b0a07683a949662c87c09b55247ce774aeee10bb886892e586e3c604564393292e38ef43c023ee9981e1f8b335766ec4f0f256e57f8640b079d5@35.73.137.11:30311"]
StaticNodes = ["enode://ace8e3b7e96290392a9c6238e005539dd1d1ca7c18aeedd979087789812e0656407e2c4baabcd83b50d583b583aa959ff42e5c95571d76b84995aad722a9a85c@44.198.55.182:30311","enode://1cda8150a6fe7597ce9f97b9886bc7bda2c3f0b246b509a5783c7dae7e57f831c7288a801ad129d2ffac330494ba75f0f0f62e1d1eba3499feca4ee29c6ae087@3.215.117.86:30311","enode://4b32e474c1aa896c856b916f2feb7af4e49feb6f2ff355896473b44d6723e71a5602a610cc0839654ad2f031e5da6e210d880a4cd977a2ec76e64a95c13f49a3@18.206.147.221:30311","enode://6265fbbf7fc2978900abee29ab1f019ccbccaa22e4e1e07149f3607c7d680a1ba006e7bb5cf8901e26d07cad8140799832caa389fc2fe0e1c6db4fec76946c2e@18.233.226.171:30311","enode://bdbcb42ff17a52af7ac120f23ee86f525ffbd854ce76e54bad858cf741fcd524d0f810be399d437bea939682a919c5af5df31811c43ccc270d04485caf4ddaeb@52.206.226.126:30311","enode://93a47b4de28dfd716a3de5481a72916f326b7c31c137d72ac12950c61ec3ee143312d903dbfab916ac0d7a92fedad6fc6f646c16ea009ca893089c9c2f64ec83@18.204.55.80:30311","enode://bb851ac2001f47e7c9a5d08a2fafcfe483c5bd02865b3a25901f853cfaec297e1eded6a27f0c0b8fcb59891b6a0846ca92f54e05c1db4b1c9f4dbef5b66062f3@3.88.19.251:30311","enode://d54499eb86df0f28d91906cef4f648360b636f923d58567865b83508fb97d2e95d2ce3e3a594facb73230b9e19172a534ce5af3f528599d0d1e52632438aa864@44.200.226.84:30311","enode://2d55e48679442a9e3ef2a3edf2854dcb289f8162d57dbda1e82e7576b0708e0670befaa7255f5c9fa8389443a7e7b4ff762c9e7fd33ddf9f21ec9562f03e8945@18.212.135.123:30311","enode://9df97e190f0b82ba7891e0ed556f11f4c1a172c26b2e823e52cfe5722b3df3f1819d2acb87ed0bfeb21fe3aee4ef1ffb8c9227fa7fdf744bfd4f47caad461edf@54.81.89.198:30311"]
ListenAddr = ":30311"
EnableMsgEvents = false
[Node.HTTPTimeouts]
ReadTimeout = 30000000000
WriteTimeout = 30000000000
IdleTimeout = 120000000000
[Node.LogConfig]
FilePath = "bsc.log"
MaxBytesSize = 10485760
Level = "info"
FileRoot = ""

View File

@@ -0,0 +1,42 @@
[
{
"id": "0001",
"url": "https://${DOMAIN}/pokt"
},
{
"id": "0005",
"url": "https://${DOMAIN}/fuse"
},
{
"id": "0021",
"url": "https://${DOMAIN}/erigon"
},
{
"id": "0022",
"url": "https://${DOMAIN}/erigon"
},
{
"id": "0023",
"url": "https://${DOMAIN}/ropsten"
},
{
"id": "0025",
"url": "https://${DOMAIN}/rinkeby"
},
{
"id": "0026",
"url": "https://${DOMAIN}/goerli"
},
{
"id": "0027",
"url": "https://${DOMAIN}/xdai"
},
{
"id": "0028",
"url": "https://${DOMAIN}/erigon"
},
{
"id": "0040",
"url": "https://${DOMAIN}/harmony"
}
]

View File

@@ -0,0 +1,18 @@
[
{
"id": "0020",
"url": "https://${DOMAIN}/goerli"
},
{
"id": "0022",
"url": "https://${DOMAIN}/rinkeby"
},
{
"id": "0023",
"url": "https://${DOMAIN}/ropsten"
},
{
"id": "0002",
"url": "https://${DOMAIN}/pokttest"
}
]

434
docker-compose-rpc.yml Normal file
View File

@@ -0,0 +1,434 @@
version: '3.1'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: always
ports:
- "443:443"
- "127.0.0.1:8080:8080"
command:
- "--api=true"
- "--api.insecure=true"
- "--api.dashboard=true"
- "--log.level=DEBUG"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.websecure.address=:443"
- "--entryPoints.metrics.address=:8082"
- "--metrics.prometheus.entryPoint=metrics"
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
# TESTING
# - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
- "--certificatesresolvers.myresolver.acme.email=$MAIL"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
volumes:
- "./traefik/letsencrypt:/letsencrypt"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
networks:
- chains
labels:
- "traefik.enable=true"
### NODES
geth-goerli:
image: ethereum/client-go:latest
expose:
- "8545"
- "6060"
- "30303"
volumes:
- geth-goerli:/.goerli
networks:
- chains
command: "--goerli --http --http.api eth,net --http.addr 0.0.0.0 --http.port 8545 --http.vhosts=* --syncmode full --datadir .goerli --verbosity 3 --metrics.addr 0.0.0.0 --pprof.addr 0.0.0.0"
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=$WHITELIST"
- "traefik.http.middlewares.geth-goerli-stripprefix.stripprefix.prefixes=/goerli"
- "traefik.http.services.geth-goerli.loadbalancer.server.port=8545"
- "traefik.http.routers.geth-goerli.entrypoints=websecure"
- "traefik.http.routers.geth-goerli.tls.certresolver=myresolver"
- "traefik.http.routers.geth-goerli.rule=Host(`$DOMAIN`) && PathPrefix(`/goerli`)"
- "traefik.http.routers.geth-goerli.middlewares=geth-goerli-stripprefix, ipwhitelist"
geth-rinkeby:
image: ethereum/client-go:latest
expose:
- "8545"
- "6060"
- "30303"
volumes:
- geth-rinkeby:/.rinkeby
networks:
- chains
command: "--rinkeby --http --http.api eth,net --http.addr 0.0.0.0 --http.port 8545 --http.vhosts=* --syncmode full --datadir .rinkeby --verbosity 3 --metrics.addr 0.0.0.0 --pprof.addr 0.0.0.0"
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=$WHITELIST"
- "traefik.http.middlewares.geth-rinkeby-stripprefix.stripprefix.prefixes=/rinkeby"
- "traefik.http.services.geth-rinkeby.loadbalancer.server.port=8545"
- "traefik.http.routers.geth-rinkeby.entrypoints=websecure"
- "traefik.http.routers.geth-rinkeby.tls.certresolver=myresolver"
- "traefik.http.routers.geth-rinkeby.rule=Host(`$DOMAIN`) && PathPrefix(`/rinkeby`)"
- "traefik.http.routers.geth-rinkeby.middlewares=geth-rinkeby-stripprefix, ipwhitelist"
geth-ropsten:
image: ethereum/client-go:latest
expose:
- "8545"
- "6060"
- "30303"
volumes:
- geth-ropsten:/.ropsten
networks:
- chains
command: "--ropsten --http --http.api eth,net --http.addr 0.0.0.0 --http.port 8545 --http.vhosts=* --syncmode full --datadir .ropsten --verbosity 3 --metrics.addr 0.0.0.0 --pprof.addr 0.0.0.0"
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=$WHITELIST"
- "traefik.http.middlewares.geth-ropsten-stripprefix.stripprefix.prefixes=/ropsten"
- "traefik.http.services.geth-ropsten.loadbalancer.server.port=8545"
- "traefik.http.routers.geth-ropsten.entrypoints=websecure"
- "traefik.http.routers.geth-ropsten.tls.certresolver=myresolver"
- "traefik.http.routers.geth-ropsten.rule=Host(`$DOMAIN`) && PathPrefix(`/ropsten`)"
- "traefik.http.routers.geth-ropsten.middlewares=geth-ropsten-stripprefix, ipwhitelist"
xdai:
image: nethermind/nethermind:latest
expose:
- "8545"
- "40444"
ports:
- "40444:40444"
- "40444:40444/udp"
volumes:
- xdai:/nethermind_db/xdai
- ./xdai/xdai.cfg:/xdai.cfg
- ./xdai/xdai.json:/xdai.json
networks:
- chains
command: "--config /xdai.cfg"
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.xdai-stripprefix.stripprefix.prefixes=/xdai"
- "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=$WHITELIST"
- "traefik.http.services.xdai.loadbalancer.server.port=8545"
- "traefik.http.routers.xdai.entrypoints=websecure"
- "traefik.http.routers.xdai.tls.certresolver=myresolver"
- "traefik.http.routers.xdai.rule=Host(`$DOMAIN`) && PathPrefix(`/xdai`)"
- "traefik.http.routers.xdai.middlewares=xdai-stripprefix, ipwhitelist"
harmony-mainnet:
build: ./harmony/build
command: bash -c "/harmony.sh && /binary --log.dir /harmony/log --run explorer --run.shard 0 --dns.zone t.hmny.io --http.ip 0.0.0.0 --datadir /harmony"
sysctls:
net.core.somaxconn: 1024
# net.core.netdev_max_backlog: 65536
net.ipv4.tcp_tw_reuse: 1
net.ipv4.tcp_rmem: 4096 65536 16777216
net.ipv4.tcp_wmem: 4096 65536 16777216
# net.ipv4.tcp_mem: 65536 131072 262144
ulimits:
nproc: 65535
nofile:
soft: 65535
hard: 65535
expose:
- "9500"
- "9000"
- "6000"
- "30303"
volumes:
- harmony:/harmony/
- ./harmony/log:/harmony/log
- ./bootstrap_skript/harmony.sh:/harmony.sh
networks:
- chains
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.harmony-mainnet-stripprefix.stripprefix.prefixes=/harmony"
- "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=$WHITELIST"
- "traefik.http.services.harmony-mainnet.loadbalancer.server.port=9500"
- "traefik.http.routers.harmony-mainnet.entrypoints=websecure"
- "traefik.http.routers.harmony-mainnet.tls.certresolver=myresolver"
- "traefik.http.routers.harmony-mainnet.rule=Host(`$DOMAIN`) && PathPrefix(`/harmony`)"
- "traefik.http.routers.harmony-mainnet.middlewares=harmony-mainnet-stripprefix, ipwhitelist"
erigon-trace:
image: thorax/erigon
expose:
- "30303"
- "30304"
- "9090"
volumes:
- erigon-trace:/home/erigon/.local/share/erigon
networks:
- chains
command: erigon --chain mainnet --metrics --metrics.addr=0.0.0.0 --metrics.port=6060 --private.api.addr=0.0.0.0:9090 --pprof --pprof.addr=0.0.0.0 --pprof.port=6061
restart: unless-stopped
rpcdaemon:
image: thorax/erigon:latest
command: rpcdaemon --datadir=/home/erigon/.local/share/erigon --private.api.addr=erigon-trace:9090 --txpool.api.addr=erigon-trace:9090 --http.addr=0.0.0.0 --http.vhosts=* --http.corsdomain=* --http.api=eth,erigon,web3,net,debug,trace,txpool --ws
pid: service:erigon-trace # Use erigon's PID namespace. It's required to open Erigon's DB from another process (RPCDaemon local-mode)
volumes:
- erigon-trace:/home/erigon/.local/share/erigon
networks:
- chains
expose:
- "8545"
restart: unless-stopped
depends_on:
- "erigon-trace"
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=$WHITELIST"
- "traefik.http.middlewares.rpcdaemon-stripprefix.stripprefix.prefixes=/erigon"
- "traefik.http.services.rpcdaemon.loadbalancer.server.port=8545"
- "traefik.http.routers.rpcdaemon.entrypoints=websecure"
- "traefik.http.routers.rpcdaemon.tls.certresolver=myresolver"
- "traefik.http.routers.rpcdaemon.rule=Host(`$DOMAIN`) && PathPrefix(`/erigon`)"
- "traefik.http.routers.rpcdaemon.middlewares=rpcdaemon-stripprefix, ipwhitelist"
avalanche:
image: avaplatform/avalanchego
expose:
- "9650"
- "9651"
ports:
- "9651:9651/tcp"
- "9651:9651/udp"
volumes:
- avalanche:/root/.avalanchego
networks:
- chains
command: "/avalanchego/build/avalanchego --http-host="
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=$WHITELIST"
- "traefik.http.middlewares.avalanche-stripprefix.stripprefix.prefixes=/avalanche"
- "traefik.http.services.avalanche.loadbalancer.server.port=8545"
- "traefik.http.routers.avalanche.entrypoints=websecure"
- "traefik.http.routers.avalanche.tls.certresolver=myresolver"
- "traefik.http.routers.avalanche.rule=Host(`$DOMAIN`) && PathPrefix(`/avalanche`)"
- "traefik.http.routers.avalanche.middlewares=avalanche-stripprefix, ipwhitelist"
pocket-testnet:
image: poktnetwork/pocket-core:stagenet-latest
ports:
- "127.0.0.1:8082:8081"
- "26657:26656"
expose:
- 26656
- 8081
command: pocket start --seeds=$POCKET_TEST_SEEDS --testnet
#command: pocket start --simulateRelay
environment:
- POCKET_CORE_KEY=$POCKET_CORE_KEY_TEST
- POCKET_CORE_PASSPHRASE=$POCKET_CORE_PASSPHRASE_TEST
volumes:
- ./chains/chains_testnet.json:/home/app/.pocket/config/chains.json
- pocket-testnet:/home/app/.pocket
networks:
- chains
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=$WHITELIST"
- "traefik.http.middlewares.pocket-testnet-stripprefix.stripprefix.prefixes=/pokttest"
- "traefik.http.services.pocket-testnet.loadbalancer.server.port=8081"
- "traefik.http.routers.pocket-testnet.entrypoints=websecure"
- "traefik.http.routers.pocket-testnet.tls.certresolver=myresolver"
- "traefik.http.routers.pocket-testnet.rule=Host(`$DOMAIN`) && PathPrefix(`/pokttest`)"
- "traefik.http.routers.pocket-testnet.middlewares=pocket-testnet-stripprefix, ipwhitelist"
pocket-mainnet:
image: poktnetwork/pocket-core:stagenet-latest
ports:
- "127.0.0.1:8081:8081"
- "26656:26656"
expose:
- 26656
- 8081
command: /home/app/.pocket/pokt_mainnet.sh && pocket start --seeds=$POCKET_MAIN_SEEDS --mainnet
#command: pocket start --simulateRelay
environment:
- POCKET_CORE_KEY=$POCKET_CORE_KEY
- POCKET_CORE_PASSPHRASE=$POCKET_CORE_PASSPHRASE
- POCKET_SNAPSHOT=$POCKET_SNAPSHOT
volumes:
- ./bootstrap_skript/pokt_mainnet.sh:/home/app/.pocket/pokt_mainnet.sh
- ./chains/chains_mainnet.json:/home/app/.pocket/config/chains.json
- ./pokt/config.json:/home/app/.pocket/config/config.json
- pocket-mainnet:/home/app/.pocket
networks:
- chains
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=$WHITELIST"
- "traefik.http.middlewares.pocket-mainnet-stripprefix.stripprefix.prefixes=/pokt"
- "traefik.http.services.pocket-mainner.loadbalancer.server.port=8081"
- "traefik.http.routers.pocket-mainnet.entrypoints=websecure"
- "traefik.http.routers.pocket-mainnet.tls.certresolver=myresolver"
- "traefik.http.routers.pocket-mainnet.rule=Host(`$DOMAIN`) && PathPrefix(`/pokt`)"
- "traefik.http.routers.pocket-mainnet.middlewares=pocket-mainnet-stripprefix, ipwhitelist"
restart: unless-stopped
fusenetstat:
image: fusenet/netstat:1.0.0
command: "--instance-name 0xeb5Ca1d019e9D8b9aa9C47991993C84d1062628d --role node --parity-version 2.0.1 --fuseapp-version 1.0.0 --netstats-version 1.0.0"
network_mode: "service:fusenet"
restart: unless-stopped
depends_on:
- fusenet
# wants udp and tcp port bindings on 30303
fusenet:
image: fusenet/node:2.0.1
expose:
- "8545"
- "8546"
- "30303"
environment:
- HOME=/home/parity
- PARITY_HOME_DIR=/home/parity/.local/share/io.parity.ethereum
- PARITY_CONFIG_FILE_CHAIN=/home/parity/.local/share/io.parity.ethereum/spec.json
- PARITY_CONFIG_FILE_BOOTNODES=/home/parity/.local/share/io.parity.ethereum/bootnodes.txt
- PARITY_CONFIG_FILE_TEMPLATE=/home/parity/.local/share/io.parity.ethereum/config_template.toml
- PARITY_DATA_DIR=/home/parity/.local/share/io.parity.ethereum/chains
- PARITY_BIN=/usr/local/bin/parity
- PARITY_WRAPPER_SCRIPT=/home/parity/parity_wrapper.sh
volumes:
- /root/fusenet/database:/data
- /root/fusenet/config:/config/custom
networks:
- chains
command: "--role node --parity-args --no-warp --node-key 0xeb5Ca1d019e9D8b9aa9C47991993C84d1062628d --jsonrpc-threads 1 --jsonrpc-server-threads 4"
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=$WHITELIST"
- "traefik.http.middlewares.fuse-stripprefix.stripprefix.prefixes=/fuse"
- "traefik.http.services.fuse.loadbalancer.server.port=8545"
- "traefik.http.routers.fuse.entrypoints=websecure"
- "traefik.http.routers.fuse.tls.certresolver=myresolver"
- "traefik.http.routers.fuse.rule=Host(`$DOMAIN`) && PathPrefix(`/fuse`)"
- "traefik.http.routers.fuse.middlewares=fuse-stripprefix, ipwhitelist"
### WIREGUARD
wireguard:
image: lscr.io/linuxserver/wireguard
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=$PUID
- PGID=$PGID
volumes:
- ./wireguard/config/wg0.conf:/config/wg0.conf
- /lib/modules:/lib/modules
networks:
- chains
# Expose prometheus port
expose:
- 9090
ports:
- $SERVERPORT:$SERVERPORT/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped
### MONITORING
prometheus:
image: prom/prometheus:v2.30.3
container_name: prometheus
volumes:
- ./prometheus/prometheus-rpc.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--storage.tsdb.retention.time=200h'
- '--web.enable-lifecycle'
restart: unless-stopped
network_mode: "service:wireguard"
labels:
org.label-schema.group: "monitoring"
depends_on:
- wireguard
nodeexporter:
image: prom/node-exporter:v1.2.2
container_name: nodeexporter
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
networks:
- chains
command:
- '--path.procfs=/host/proc'
- '--path.rootfs=/rootfs'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
restart: unless-stopped
expose:
- 9100
labels:
org.label-schema.group: "monitoring"
cadvisor:
image: gcr.io/cadvisor/cadvisor:v0.42.0
container_name: cadvisor
privileged: true
devices:
- /dev/kmsg:/dev/kmsg
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker:/var/lib/docker:ro
#- /cgroup:/cgroup:ro #doesn't work on MacOS only for Linux
networks:
- chains
restart: unless-stopped
expose:
- 8080
labels:
org.label-schema.group: "monitoring"
### VOLUMES
volumes:
xdai:
harmony:
geth-goerli:
geth-rinkeby:
geth-ropsten:
erigon-trace:
avalanche:
pocket-testnet:
pocket-mainnet:
prometheus_data:
networks:
chains:
driver: bridge
ipam:
config:
- subnet: 192.168.0.1/27

127
docker-compose.harmony.yml Normal file
View File

@@ -0,0 +1,127 @@
version: '3.1'
services:
harmony-mainnet:
build: ./harmony/build
command: bash -c "/harmony.sh && /binary -c /harmony.conf --log.dir /harmony/log --run.shard 1 --dns.zone t.hmny.io --http.ip 0.0.0.0 --datadir /harmony"
sysctls:
net.core.somaxconn: 1024
# net.core.netdev_max_backlog: 65536
net.ipv4.tcp_tw_reuse: 1
net.ipv4.tcp_rmem: 4096 65536 16777216
net.ipv4.tcp_wmem: 4096 65536 16777216
# net.ipv4.tcp_mem: 65536 131072 262144
ulimits:
nproc: 65535
nofile:
soft: 65535
hard: 65535
expose:
- "9500"
- "9000"
- "6000"
- "9900"
ports:
- 9000:9000/tcp
- 6000:6000/tcp
volumes:
- harmony_data:/harmony/
- ./harmony/keyfiles:/.hmy/blskeys
- ./harmony/log:/harmony/log
- ./harmony/harmony.conf:/harmony.conf
- ./bootstrap_skript/harmony.sh:/harmony.sh
restart: unless-stopped
### WIREGUARD
wireguard:
image: lscr.io/linuxserver/wireguard
container_name: wireguard
healthcheck:
test: [ "CMD", "ping", "-c", "1", "10.13.13.1" ]
timeout: 10s
interval: 5s
retries: 3
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1000
- PGID=1000
volumes:
- ./wireguard/config/wg0.conf:/config/wg0.conf
- /lib/modules:/lib/modules
# Expose prometheus port
expose:
- 9090
ports:
- 51820:51820/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped
### MONITORING
prometheus:
image: prom/prometheus:v2.30.3
container_name: prometheus
volumes:
- ./prometheus/prometheus-harmony.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--storage.tsdb.retention.time=200h'
- '--web.enable-lifecycle'
restart: unless-stopped
network_mode: "service:wireguard"
labels:
org.label-schema.group: "monitoring"
depends_on:
- wireguard
nodeexporter:
image: prom/node-exporter:v1.2.2
container_name: nodeexporter
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.rootfs=/rootfs'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
restart: unless-stopped
expose:
- 9100
labels:
org.label-schema.group: "monitoring"
cadvisor:
image: gcr.io/cadvisor/cadvisor:v0.42.0
container_name: cadvisor
privileged: true
devices:
- /dev/kmsg:/dev/kmsg
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker:/var/lib/docker:ro
#- /cgroup:/cgroup:ro #doesn't work on MacOS only for Linux
restart: unless-stopped
expose:
- 8080
labels:
org.label-schema.group: "monitoring"
### VOLUMES
volumes:
harmony_data:
prometheus_data:

View File

@@ -16,8 +16,8 @@ services:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1000
- PGID=1000
- PUID=$PUID
- PGID=$PGID
volumes:
- ./wireguard/config/wg0.conf:/config/wg0.conf
- /lib/modules:/lib/modules
@@ -25,13 +25,11 @@ services:
expose:
- 9090
ports:
- 51820:51820/udp
- $SERVERPORT:$SERVERPORT/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped
networks:
- chains
- monitoring
### MONITORING
@@ -39,9 +37,8 @@ services:
image: prom/prometheus:v2.30.3
container_name: prometheus
volumes:
- ./prometheus/prometheus-autodiscover.yml:/etc/prometheus/prometheus.yml:ro
- prometheus_data:/prometheus:rw
- prometheus-docker-sd:/prometheus-docker-sd:ro
- ./prometheus:/etc/prometheus
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
@@ -50,19 +47,11 @@ services:
- '--storage.tsdb.retention.time=200h'
- '--web.enable-lifecycle'
restart: unless-stopped
network_mode: "service:wireguard"
labels:
org.label-schema.group: "monitoring"
depends_on:
- prometheus-docker-sd
- wireguard
network_mode: "service:wireguard"
prometheus-docker-sd:
image: "stucky/prometheus-docker-sd:latest"
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- prometheus-docker-sd:/prometheus-docker-sd:rw
nodeexporter:
image: prom/node-exporter:v1.2.2
@@ -80,12 +69,7 @@ services:
expose:
- 9100
labels:
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=9100"
- "prometheus-scrape.job_name=nodeexporter"
- "org.label-schema.group=monitoring"
networks:
- monitoring
org.label-schema.group: "monitoring"
cadvisor:
image: gcr.io/cadvisor/cadvisor:v0.42.0
@@ -103,21 +87,10 @@ services:
expose:
- 8080
labels:
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8080"
- "prometheus-scrape.job_name=cadvisor"
- "org.label-schema.group=monitoring"
networks:
- monitoring
org.label-schema.group: "monitoring"
### VOLUMES
volumes:
prometheus_data:
prometheus-docker-sd:
### NETWORK
networks:
monitoring:
driver: bridge

View File

@@ -23,7 +23,6 @@ services:
ports:
- $SERVERPORT:$SERVERPORT/udp
- 127.0.0.1:3000:3000
- 127.0.0.1:5050:5000
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv4.ip_forward=1
@@ -44,17 +43,12 @@ services:
labels:
org.label-schema.group: "monitoring"
network_mode: "service:wireguard"
depends_on:
- wireguard
dynaconf:
build: ./dynaconf
restart: unless-stopped
volumes:
- database:/src/database
network_mode: "service:wireguard"
# DEBUG container wireguard
# alpine:
#image: alpine
#command: sleep infinity
#network_mode: "service:wireguard"
volumes:
database:
grafana_data:

View File

@@ -0,0 +1,186 @@
version: '3.1'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: always
ports:
- "443:443"
- "127.0.0.1:8080:8080"
expose:
- "8082"
command:
- "--api=true"
- "--api.insecure=true"
- "--api.dashboard=true"
- "--log.level=DEBUG"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.websecure.address=:443"
- "--entryPoints.metrics.address=:8082"
- "--metrics.prometheus.entryPoint=metrics"
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
# TESTING
# - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
- "--certificatesresolvers.myresolver.acme.email=$MAIL"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
volumes:
- "./traefik/letsencrypt:/letsencrypt"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
labels:
- "traefik.enable=true"
### WIREGUARD
wireguard:
image: lscr.io/linuxserver/wireguard
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=$PUID
- PGID=$PGID
volumes:
- ./wireguard/config/wg0.conf:/config/wg0.conf
- /lib/modules:/lib/modules
# Expose prometheus port
expose:
- 9090
ports:
- $SERVERPORT:$SERVERPORT/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped
### MONITORING
prometheus:
image: prom/prometheus:v2.30.3
container_name: prometheus
volumes:
- ./prometheus:/etc/prometheus
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--storage.tsdb.retention.time=200h'
- '--web.enable-lifecycle'
restart: unless-stopped
network_mode: "service:wireguard"
labels:
org.label-schema.group: "monitoring"
depends_on:
- wireguard
nodeexporter:
image: prom/node-exporter:v1.2.2
container_name: nodeexporter
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.rootfs=/rootfs'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
restart: unless-stopped
expose:
- 9100
labels:
org.label-schema.group: "monitoring"
cadvisor:
image: gcr.io/cadvisor/cadvisor:v0.42.0
container_name: cadvisor
privileged: true
devices:
- /dev/kmsg:/dev/kmsg
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker:/var/lib/docker:ro
#- /cgroup:/cgroup:ro #doesn't work on MacOS only for Linux
restart: unless-stopped
expose:
- 8080
labels:
org.label-schema.group: "monitoring"
pushgateway:
image: prom/pushgateway:v1.4.2
container_name: pushgateway
restart: unless-stopped
expose:
- 9091
labels:
org.label-schema.group: "monitoring"
### POKT
pocket-fr-1:
image: poktnetwork/pocket-core:stagenet-latest
ports:
- "127.0.0.1:8081:8081"
- "26656:26656"
expose:
- 26656
- 26660
- 8081
- 8083
command: /home/app/.pocket/pokt_mainnet.sh && pocket start --seeds=$POCKET_MAIN_SEEDS --mainnet
#command: pocket start --simulateRelay
environment:
- POCKET_CORE_KEY=$POKT_FR_1_POCKET_CORE_KEY
- POCKET_CORE_PASSPHRASE=$POKT_FR_1_POCKET_CORE_PASSPHRASE
- POCKET_SNAPSHOT=$POCKET_SNAPSHOT
volumes:
- ./bootstrap_skript/pokt_mainnet.sh:/home/app/.pocket/pokt_mainnet.sh
- ./chains/chains_mainnet.json:/home/app/.pocket/config/chains.json
- ./pokt/config.json:/home/app/.pocket/config/config.json
- pocket-mainnet:/home/app/.pocket
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.services.pocket-fr-1.loadbalancer.server.port=8081"
- "traefik.http.routers.pocket-fr-1.entrypoints=websecure"
- "traefik.http.routers.pocket-fr-1.tls.certresolver=myresolver"
- "traefik.http.routers.pocket-fr-1.rule=Host(`$POKT_FR_1_DOMAIN`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
pocket-fr-2:
image: poktnetwork/pocket-core:stagenet-latest
ports:
- "127.0.0.1:8082:8081"
- "26657:26656"
expose:
- 26656
- 26660
- 8081
- 8083
command: /home/app/.pocket/pokt_mainnet.sh && pocket start --seeds=$POCKET_MAIN_SEEDS --mainnet
#command: pocket start --simulateRelay
environment:
- POCKET_CORE_KEY=$POKT_FR_2_POCKET_CORE_KEY
- POCKET_CORE_PASSPHRASE=$POKT_FR_2_POCKET_CORE_PASSPHRASE
- POCKET_SNAPSHOT=$POCKET_SNAPSHOT
volumes:
- ./bootstrap_skript/pokt_mainnet.sh:/home/app/.pocket/pokt_mainnet.sh
- ./chains/chains_mainnet.json:/home/app/.pocket/config/chains.json
- ./pokt/config.json:/home/app/.pocket/config/config.json
- pocket-fr-2:/home/app/.pocket
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.services.pocket-fr-2.loadbalancer.server.port=8081"
- "traefik.http.routers.pocket-fr-2.entrypoints=websecure"
- "traefik.http.routers.pocket-fr-2.tls.certresolver=myresolver"
- "traefik.http.routers.pocket-fr-2.rule=Host(`$POKT_FR_2_DOMAIN`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
### VOLUMES
volumes:
pocket-mainnet:
pocket-fr-2:
prometheus_data:

View File

@@ -29,7 +29,7 @@ services:
- "traefik.enable=true"
pocket-testnet:
build: pokt
image: poktnetwork/pocket-core:stagenet-latest
ports:
- "127.0.0.1:8081:8081"
- "26656:26656"
@@ -37,42 +37,21 @@ services:
- 26656
- 8081
- 8083
command: pocket start --seeds=$POCKET_TEST_SEEDS --testnet
#command: pocket start --simulateRelay
environment:
- POCKET_CORE_KEY=$POCKET_CORE_KEY_TEST
- POCKET_CORE_PASSPHRASE=$POCKET_CORE_PASSPHRASE_TEST
volumes:
- pocket-testnet:/home/app/.pocket/data
- ./chains/chains_testnet.json:/home/app/.pocket/config/chains.json
- pocket-testnet:/home/app/.pocket
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.services.pocket-testnet.loadbalancer.server.port=8081"
- "traefik.http.routers.pocket-testnet.entrypoints=websecure"
- "traefik.http.routers.pocket-testnet.tls.certresolver=myresolver"
- "traefik.http.routers.pocket-testnet.rule=Host(`$TEST_DOMAIN_1`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
pocket-mainnet:
build: pokt
ports:
- "127.0.0.1:8082:8081"
- "26657:26656"
expose:
- 26656
- 8081
- 8083
environment:
- POCKET_SNAPSHOT=$POCKET_SNAPSHOT
- POCKET_CORE_KEY=$POCKET_CORE_KEY_MAINNET
- POCKET_CORE_PASSPHRASE=$POCKET_CORE_PASSPHRASE_MAINNET
volumes:
- pocket-mainnet:/home/app/.pocket/data
- pocket-mainnet-config:/home/app/.pocket/config
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.services.pocket-mainnet.loadbalancer.server.port=8081"
- "traefik.http.routers.pocket-mainnet.entrypoints=websecure"
- "traefik.http.routers.pocket-mainnet.tls.certresolver=myresolver"
- "traefik.http.routers.pocket-mainnet.rule=Host(`$TEST_DOMAIN_2`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
- "traefik.http.routers.pocket-testnet.rule=Host(`$RELAYDOMAIN`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
### MONITORING
### WIREGUARD
@@ -156,7 +135,5 @@ services:
### VOLUMES
volumes:
pocket-testnet:
pocket-mainnet:
pocket-mainnet-config:
prometheus_data:

View File

@@ -1,62 +0,0 @@
version: '3.1'
services:
dshackle:
image: emeraldpay/dshackle:0.13.1
restart: unless-stopped
volumes:
- ./dshackle/config:/etc/dshackle # This should hold all your yaml files
- ./dshackle/logs:/logs
expose:
- 8080 # /eth
- 8081 # /metrics
- 8082 # healthcheck
- 2449 # grpc
networks:
- chains
ports:
- "127.0.0.1:8082:8082" # healthcheck
- "127.0.0.1:8545:8080"
environment:
- ALCHEMY_KEY=${ALCHEMY_KEY}
- ANYBLOCK_KEY=${ANYBLOCK_KEY}
- CHAINSTACK_NODE=${CHAINSTACK_NODE}
- CHAINSTACK_USERNAME=${CHAINSTACK_USERNAME}
- CHAINSTACK_PASSWORD=${CHAINSTACK_PASSWORD}
- COINBASE_USERNAME=${COINBASE_USERNAME}
- COINBASE_PASSWORD=${COINBASE_PASSWORD}
- INFURA_KEY=${INFURA_KEY}
- RIVET_KEY=${RIVET_KEY}
- QUICKNODE_HTTP=${QUICKNODE_HTTP}
- QUICKNODE_WSS=${QUICKNODE_WSS}
labels:
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8081"
- "prometheus-scrape.job_name=dshackle"
- "prometheus-scrape.metrics_path=/metrics"
- "traefik.enable=true"
- "traefik.http.middlewares.dshackle-stripprefix.stripprefix.prefixes=/eth-archive"
- "traefik.http.middlewares.shackle-replacepath.replacepath.path=/eth"
- "traefik.http.services.dshackle.loadbalancer.server.port=8080"
- "traefik.http.routers.dshackle.entrypoints=websecure"
- "traefik.http.routers.dshackle.tls.certresolver=myresolver"
- "traefik.http.routers.dshackle.rule=Host(`$DOMAIN`) && PathPrefix(`/eth-archive`)"
- "traefik.http.routers.dshackle.middlewares=dshackle-stripprefix, dshackle-replacepath, ipwhitelist"
- "traefik.http.routers.dshackle.middlewares=dshackle-stripprefix, ipwhitelist"
redis:
image: healthcheck/redis:alpine
restart: unless-stopped
networks:
- chains
environment:
- REDIS_RAM=${REDIS_RAM}
command:
- "redis-server"
- "--maxmemory ${REDIS_RAM}"
- "--maxmemory-policy allkeys-lru"
- '--save ""'

View File

@@ -1,41 +0,0 @@
upstreams:
- id: alchemy
chain: ethereum
role: fallback
priority: 90
options:
disable-validation: false
validate-peers: false
validate-syncing: true
methods:
enabled:
# Manually Enabled
- name: alchemy_getAssetTransfers
- name: alchemy_getTokenAllowance
- name: alchemy_getTokenBalances
- name: alchemy_getTokenMetadata
- name: eth_getFilterChanges
- name: eth_getFilterLogs
- name: eth_maxPriorityFeePerGas
- name: eth_newBlockFilter
- name: eth_newFilter
- name: eth_newPendingTransactionFilter
- name: eth_subscribe
- name: eth_uninstallFilter
- name: eth_unsubscribe
- name: trace_block
- name: trace_call
- name: trace_callMany
- name: trace_filter
- name: trace_get
- name: trace_rawTransaction
- name: trace_replayBlockTransactions
- name: trace_replayTransaction
- name: trace_transaction
connection:
ethereum:
rpc:
url: "https://eth-mainnet.alchemyapi.io/v2/${ALCHEMY_KEY}"
ws:
url: "wss://eth-mainnet.ws.alchemyapi.io/v2/${ALCHEMY_KEY}"

View File

@@ -1,14 +0,0 @@
upstreams:
- id: ankr
chain: ethereum
role: fallback
priority: 80
options:
disable-validation: false
validate-peers: false
validate-syncing: true
connection:
ethereum:
rpc:
url: "https://rpc.ankr.com/eth"

View File

@@ -1,14 +0,0 @@
upstreams:
- id: anyblock
chain: ethereum
role: fallback
priority: 70
options:
disable-validation: false
validate-peers: false
validate-syncing: true
connection:
ethereum:
rpc:
url: "https://api.anyblock.tools/ethereum/ethereum/mainnet/rpc/${ANYBLOCK_KEY}"

View File

@@ -1,14 +0,0 @@
upstreams:
- id: avado
chain: ethereum
role: fallback
priority: 60
options:
disable-validation: false
validate-peers: false
validate-syncing: true
connection:
ethereum:
rpc:
url: "https://mainnet.eth.cloud.ava.do"

View File

@@ -1,22 +0,0 @@
upstreams:
- id: chainstack
chain: ethereum
role: fallback
priority: 50
options:
disable-validation: false
validate-peers: false
validate-syncing: true
connection:
ethereum:
rpc:
url: "https://${CHAINSTACK_NODE}.p2pify.com"
basic-auth:
username: ${CHAINSTACK_USERNAME}
password: ${CHAINSTACK_PASSWORD}
ws:
url: "wss://ws-${CHAINSTACK_NODE}.p2pify.com"
basic-auth:
username: ${CHAINSTACK_USERNAME}
password: ${CHAINSTACK_PASSWORD}

View File

@@ -1,14 +0,0 @@
upstreams:
- id: cloudflare
chain: ethereum
role: fallback
priority: 40
options:
disable-validation: false
validate-peers: false
validate-syncing: true
connection:
ethereum:
rpc:
url: "https://cloudflare-eth.com"

View File

@@ -1,31 +0,0 @@
upstreams:
- id: coinbase
chain: ethereum
role: secondary
priority: 30
labels:
provider: geth
archive: false
options:
disable-validation: false
validate-peers: false
validate-syncing: true
methods:
enabled:
# Manually Enabled
- name: coinbaseCloud_getBalances
- name: coinbaseCloud_getSingleBalance
- name: coinbaseCloud_getTokenAllowances
- name: coinbaseCloud_getTransactionByHash
- name: coinbaseCloud_getTransactionsByAddress
- name: coinbaseCloud_getTokenTransfersByAddress
- name: coinbaseCloud_getTokenMetadata
- name: coinbaseCloud_getTokenStandardEvents
connection:
ethereum:
rpc:
url: "https://mainnet.ethereum.coinbasecloud.net"
basic-auth:
username: ${COINBASE_USERNAME}
password: ${COINBASE_PASSWORD}

View File

@@ -1,27 +0,0 @@
upstreams:
- id: de-1-erigon
chain: ethereum
labels:
provider: stakesquid-de-1-erigon
priority: 100
methods:
enabled:
# Manually Enabled
- name: trace_block
- name: trace_call
- name: trace_callMany
- name: trace_filter
- name: trace_get
- name: trace_transaction
disabled:
- name: eth_chainId
- name: eth_chainID
- name: eth_chainid
connection:
ethereum:
rpc:
url: "https://rpc-de-1.stakesquid.eu/erigon"
ws:
frameSize: 20Mb
msgSize: 50Mb
url: "wss://rpc-de-1.stakesquid.eu/erigon"

View File

@@ -1,44 +0,0 @@
upstreams:
- id: de-4-mainnet
chain: ethereum
labels:
provider: stakesquid-de-4-mainnet
priority: 120
methods:
enabled:
# Manually Enabled
- name: eth_chainid
- name: eth_chainId
- name: eth_chainID
disabled:
- name: eth_blockNumber
- name: eth_call
- name: eth_estimateGas
- name: eth_feeHistory
- name: eth_gasPrice
- name: eth_getBalance
- name: eth_getBlockByHash
- name: eth_getBlockByNumber
- name: eth_getBlockTransactionCountByHash
- name: eth_getBlockTransactionCountByNumber
- name: eth_getCode
- name: eth_getLogs
- name: eth_getStorageAt
- name: eth_getTransactionByBlockHashAndIndex
- name: eth_getTransactionByBlockNumberAndIndex
- name: eth_getTransactionByHash
- name: eth_getTransactionCount
- name: eth_getTransactionReceipt
- name: eth_getUncleByBlockHashAndIndex
- name: eth_getUncleByBlockNumberAndIndex
- name: eth_getUncleCountByBlockHash
- name: eth_getUncleCountByBlockNumber
- name: eth_sendRawTransaction
connection:
ethereum:
rpc:
url: "https://rpc-de-4.stakesquid.eu/mainnet"
ws:
frameSize: 20Mb
msgSize: 50Mb
url: "wss://rpc-de-4.stakesquid.eu/mainnet"

View File

@@ -1,72 +0,0 @@
host: 0.0.0.0
port: 2449
tls:
enabled: false
monitoring:
enabled: true
jvm: false
extended: false
prometheus:
enabled: true
bind: 0.0.0.0
port: 8081
path: /metrics
health:
port: 8082
host: 0.0.0.0
path: /health
blockchains:
- chain: ethereum
min-available: 1
cache:
redis:
enabled: true
host: redis
password: ""
proxy:
host: 0.0.0.0
port: 8080
tls:
enabled: false
routes:
- id: eth
blockchain: ethereum
accessLog:
enabled: true
include-messages: true
filename: /logs/access_log.jsonl
cluster:
defaults:
- chains:
- ethereum
options:
min-peers: 10
include:
# Private Nodes
#- "besu.yaml"
#- "geth.yaml"
#- "nethermind.yaml"
#- "erigon.yaml"
- "de-1-erigon.yaml"
- "fi-1-erigon.yaml"
#- "de-4-mainnet.yaml"
# Freemium Nodes
#- "alchemy.yaml"
#- "anyblock.yaml"
#- "chainstack.yaml"
#- "coinbase.yaml"
- "infura.yaml"
#- "quicknode.yaml"
#- "rivet.yaml"
# Public Nodes
#- "cloudflare.yaml"
#- "avado.yaml"
#- "ankr.yaml"

View File

@@ -1,27 +0,0 @@
upstreams:
- id: fi-1-erigon
chain: ethereum
labels:
provider: stakesquid-fi-1-erigon
priority: 100
methods:
enabled:
# Manually Enabled
- name: trace_block
- name: trace_call
- name: trace_callMany
- name: trace_filter
- name: trace_get
- name: trace_transaction
disabled:
- name: eth_chainId
- name: eth_chainID
- name: eth_chainid
connection:
ethereum:
rpc:
url: "https://rpc-fi-1.stakesquid.eu/erigon"
ws:
frameSize: 20Mb
msgSize: 50Mb
url: "wss://rpc-fi-1.stakesquid.eu/erigon"

View File

@@ -1,16 +0,0 @@
upstreams:
- id: infura
chain: ethereum
role: fallback
priority: 20
options:
disable-validation: false
validate-peers: false
validate-syncing: true
connection:
ethereum:
rpc:
url: "https://mainnet.infura.io/v3/${INFURA_KEY}"
ws:
url: "wss://mainnet.infura.io/ws/v3/${INFURA_KEY}"

View File

@@ -1,29 +0,0 @@
upstreams:
- id: quicknode
chain: ethereum
role: fallback
priority: 140
options:
disable-validation: false
validate-peers: false
validate-syncing: true
methods:
enabled:
# Manually Enabled
- name: qn_broadcastRawTransaction
- name: qn_fetchNFTCollectionDetails
- name: qn_fetchNFTs
- name: qn_fetchNFTsByCollection
- name: qn_getTokenMetadataByContractAddress
- name: qn_getTokenMetadataBySymbol
- name: qn_getTransfersByNFT
- name: qn_getWalletTokenBalance
- name: qn_getWalletTokenTransactions
- name: qn_verifyNFTsOwner
connection:
ethereum:
rpc:
url: "${QUICKNODE_HTTP}"
ws:
url: "${QUICKNODE_WSS}"

View File

@@ -1,16 +0,0 @@
upstreams:
- id: rivet
chain: ethereum
role: fallback
priority: 10
options:
disable-validation: false
validate-peers: false
validate-syncing: true
connection:
ethereum:
rpc:
url: "https://${RIVET_KEY}.eth.rpc.rivet.cloud"
ws:
url: "wss://${RIVET_KEY}.eth.ws.rivet.cloud"

View File

@@ -1,11 +0,0 @@
from python:bullseye
RUN pip install --upgrade pip
RUN pip install flask
RUN pip install flask_sqlalchemy
COPY src src
CMD ["python", "-u", "src/app.py"]

View File

@@ -1,70 +0,0 @@
import copy
from dataclasses import dataclass
from flask import Flask, request, render_template, jsonify
from flask_sqlalchemy import SQLAlchemy
import json
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database/config.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = 'False'
app.config['SECRET_KEY'] = "random"
db = SQLAlchemy(app)
@dataclass
class Database(db.Model):
name: str
ip: str
name = db.Column(db.String(30), primary_key=True)
ip = db.Column(db.String(16), unique=True)
def __init__(self, name, ip):
self.name = name
self.ip = ip
@app.route('/')
def index():
return render_template('index.html', db_entries=Database.query.all())
@app.route('/create', methods=['POST'])
def create():
if request.method == 'POST':
json_post = json.loads(request.data)
data = Database(json_post['name'], json_post['ip'])
db.session.add(data)
db.session.commit()
return jsonify(data)
@app.route('/update', methods=['POST'])
def update():
if request.method == 'POST':
json_post = json.loads(request.data)
old_value = copy.deepcopy(Database.query.get(json_post['name']))
Database.query.filter_by(name=json_post['name']).update(dict(ip=json_post['ip']))
db.session.commit()
return jsonify(old=old_value, new=json_post)
@app.route('/delete', methods=['POST'])
def delete():
if request.method == 'POST':
json_post = json.loads(request.data)
query = Database.query.get(json_post['name'])
db.session.delete(query)
db.session.commit()
return jsonify(json_post)
@app.route('/storage', methods=['GET'])
def storage():
db_entries = Database.query.all()
return jsonify(db_entries)
if __name__ == '__main__':
db.create_all()
app.run(host="0.0.0.0", debug=True)

View File

@@ -1,9 +0,0 @@
table, th, td {
border: 1px solid black;
}
.table a
{
display:block;
text-decoration:none;
}

View File

@@ -1,25 +0,0 @@
<!DOCTYPE html>
<html lang = "en">
<head>
<link rel="stylesheet" href="/static/main.css">
</head>
<body>
<table>
<thead>
<tr>
<td>Name</td>
<td>IP</td>
</tr>
</thead>
<tbody>
{% for value in db_entries %}
<tr>
<td>{{ value.name }}</td>
<td>{{ value.ip }}</td>
<!-- <td><a href="{{ url_for('delete', name=value.name) }}">Delete</a></td>-->
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>

View File

@@ -1,40 +0,0 @@
version: '3.1'
services:
erigon-bsc:
image: thorax/erigon:devel
command: erigon --chain bsc --metrics --metrics.addr=0.0.0.0 --metrics.port=6060 --private.api.addr=0.0.0.0:9090 --pprof --pprof.addr=0.0.0.0 --pprof.port=6061
volumes:
- erigon-bsc-volume:/home/erigon/.local/share/erigon
ports:
- "30333:30303/tcp"
- "30333:30303/udp"
- "30304:30304/tcp"
- "30304:30304/udp"
networks:
- chains
restart: unless-stopped
rpcdaemon-bsc:
image: thorax/erigon:devel
command: rpcdaemon --datadir=/home/erigon/.local/share/erigon --private.api.addr=erigon:9090 --http.addr=0.0.0.0 --http.vhosts=* --http.corsdomain=* --http.api=eth,debug,net --ws
pid: service:erigon-bsc # Use erigon's PID namespace. It's required to open Erigon's DB from another process (RPCDaemon local-mode)
volumes:
- erigon-bsc-volume:/home/erigon/.local/share/erigon
expose:
- "8545"
networks:
- chains
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.rpcdaemon-bsc-stripprefix.stripprefix.prefixes=/erigon-bsc"
- "traefik.http.services.rpcdaemon-bsc.loadbalancer.server.port=8545"
- "traefik.http.routers.rpcdaemon-bsc.entrypoints=websecure"
- "traefik.http.routers.rpcdaemon-bsc.tls.certresolver=myresolver"
- "traefik.http.routers.rpcdaemon-bsc.rule=Host(`$DOMAIN`) && PathPrefix(`/erigon-bsc`)"
- "traefik.http.routers.rpcdaemon-bsc.middlewares=rpcdaemon-bsc-stripprefix, ipwhitelist"
volumes:
erigon-bsc-volume:

View File

@@ -1,98 +0,0 @@
version: '3.1'
services:
erigon-trace:
image: thorax/erigon:v2022.10.01
expose:
- "30303"
- "30304"
- "9090"
volumes:
- erigon-trace:/home/erigon/.local/share/erigon
- .jwtsecret:/jwtsecret
networks:
- chains
command: >
erigon --chain goerli
--metrics --metrics.addr=0.0.0.0 --metrics.port=6060
--private.api.addr=0.0.0.0:9090
--pprof
--pprof.addr=0.0.0.0
--pprof.port=6061
--authrpc.addr=0.0.0.0
--authrpc.vhosts=*
--authrpc.jwtsecret=/jwtsecret
--snapshots=true
--torrent.download.rate=1250mb
--torrent.upload.rate=1250mb
restart: unless-stopped
stop_grace_period: 1m
labels:
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=6060"
- "prometheus-scrape.job_name=erigon"
- "prometheus-scrape.metrics_path=/debug/metrics/prometheus"
rpcdaemon:
image: thorax/erigon:v2022.10.01
command: >
rpcdaemon --datadir=/home/erigon/.local/share/erigon/goerli
--private.api.addr=erigon-trace:9090
--txpool.api.addr=erigon-trace:9090
--http.addr=0.0.0.0
--http.vhosts=*
--http.corsdomain=*
--http.api=eth,erigon,web3,net,debug,trace,txpool
--ws
pid: service:erigon-trace # Use erigon's PID namespace. It's required to open Erigon's DB from another process (RPCDaemon local-mode)
volumes:
- erigon-trace:/home/erigon/.local/share/erigon
networks:
- chains
expose:
- "8545"
restart: unless-stopped
depends_on:
- "erigon-trace"
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.rpcdaemon-stripprefix.stripprefix.prefixes=/erigon-goerli"
- "traefik.http.services.rpcdaemon.loadbalancer.server.port=8545"
- "traefik.http.routers.rpcdaemon.entrypoints=websecure"
- "traefik.http.routers.rpcdaemon.tls.certresolver=myresolver"
- "traefik.http.routers.rpcdaemon.rule=Host(`$DOMAIN`) && PathPrefix(`/erigon-goerli`)"
- "traefik.http.routers.rpcdaemon.middlewares=rpcdaemon-stripprefix, ipwhitelist"
lighthouse:
image: sigp/lighthouse:latest-modern
ports:
- "9000:9000"
- "127.0.0.1:5052:5052"
volumes:
- .jwtsecret:/jwtsecret
- lighthouse_data:/root/.lighthouse
command: >
lighthouse beacon_node
--network prater
--reconstruct-historic-states
--execution-endpoint http://erigon-trace:8551
--execution-jwt /jwtsecret
--http
--http-address=0.0.0.0
restart: unless-stopped
stop_grace_period: 1m
networks:
- chains
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.lighthouse-stripprefix.stripprefix.prefixes=/lighthouse"
- "traefik.http.services.lighthouse.loadbalancer.server.port=5052"
- "traefik.http.routers.lighthouse.entrypoints=websecure"
- "traefik.http.routers.lighthouse.tls.certresolver=myresolver"
- "traefik.http.routers.lighthouse.rule=Host(`$DOMAIN`) && PathPrefix(`/lighthouse`)"
- "traefik.http.routers.lighthouse.middlewares=lighthouse-stripprefix, ipwhitelist"
volumes:
erigon-trace:
lighthouse_data:

View File

@@ -1,34 +0,0 @@
version: '3.1'
services:
erigon-polygon:
build:
args:
ERIGON_VERSION: v0.0.3
context: ./polygon/erigon
dockerfile: Dockerfile
environment:
- SNAPSHOT_URL=https://matic-blockchain-snapshots.s3-accelerate.amazonaws.com/matic-mainnet/erigon-archive-snapshot-2022-10-12.tar.gz
- BOOTSTRAP=1
volumes:
- "polygon-archive_data:/datadir"
ports:
- "40303:40303"
- "40303:40303/udp"
depends_on:
- heimdallr
restart: unless-stopped
stop_grace_period: 1m
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.erigon-polygon-stripprefix.stripprefix.prefixes=/polygon-archive"
- "traefik.http.services.erigon-polygon.loadbalancer.server.port=8545"
- "traefik.http.routers.erigon-polygon.entrypoints=websecure"
- "traefik.http.routers.erigon-polygon.tls.certresolver=myresolver"
- "traefik.http.routers.erigon-polygon.rule=Host(`$DOMAIN`) && PathPrefix(`/polygon-archive`)"
- "traefik.http.routers.erigon-polygon.middlewares=erigon-polygon-stripprefix, ipwhitelist"
networks:
- chains
volumes:
polygon-archive_data:

View File

@@ -1,95 +0,0 @@
version: '3.1'
services:
erigon-trace:
image: thorax/erigon:v2022.08.03
expose:
- "30303"
- "30304"
- "9090"
volumes:
- erigon-trace:/home/erigon/.local/share/erigon
- .jwtsecret:/jwtsecret
networks:
- chains
command: >
erigon --chain mainnet
--metrics --metrics.addr=0.0.0.0 --metrics.port=6060
--private.api.addr=0.0.0.0:9090
--torrent.upload.rate="1250mb"
--torrent.download.rate="1250mb"
--pprof
--pprof.addr=0.0.0.0
--pprof.port=6061
--authrpc.addr=0.0.0.0
--authrpc.vhosts=*
--authrpc.jwtsecret=/jwtsecret
restart: unless-stopped
stop_grace_period: 1m
labels:
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=6060"
- "prometheus-scrape.job_name=erigon"
- "prometheus-scrape.metrics_path=/debug/metrics/prometheus"
rpcdaemon:
image: thorax/erigon:v2022.08.03
command: >
rpcdaemon --datadir=/home/erigon/.local/share/erigon
--private.api.addr=erigon-trace:9090
--txpool.api.addr=erigon-trace:9090
--http.addr=0.0.0.0
--http.vhosts=*
--http.corsdomain=*
--http.api=eth,erigon,web3,net,debug,trace,txpool
--ws
pid: service:erigon-trace # Use erigon's PID namespace. It's required to open Erigon's DB from another process (RPCDaemon local-mode)
volumes:
- erigon-trace:/home/erigon/.local/share/erigon
networks:
- chains
expose:
- "8545"
restart: unless-stopped
depends_on:
- "erigon-trace"
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.rpcdaemon-stripprefix.stripprefix.prefixes=/erigon"
- "traefik.http.services.rpcdaemon.loadbalancer.server.port=8545"
- "traefik.http.routers.rpcdaemon.entrypoints=websecure"
- "traefik.http.routers.rpcdaemon.tls.certresolver=myresolver"
- "traefik.http.routers.rpcdaemon.rule=Host(`$DOMAIN`) && PathPrefix(`/erigon`)"
- "traefik.http.routers.rpcdaemon.middlewares=rpcdaemon-stripprefix, ipwhitelist"
lighthouse:
image: sigp/lighthouse:latest-modern
ports:
- "9000:9000"
- "127.0.0.1:5052:5052"
volumes:
- .jwtsecret:/jwtsecret
- lighthouse_data:/root/.lighthouse
command: >
lighthouse beacon_node
--eth1-endpoints http://erigon-trace:8545
--execution-endpoint http://erigon-trace:8551
--execution-jwt /jwtsecret
--http
--http-address=0.0.0.0
restart: unless-stopped
stop_grace_period: 1m
networks:
- chains
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.lighthouse-stripprefix.stripprefix.prefixes=/lighthouse"
- "traefik.http.services.lighthouse.loadbalancer.server.port=5052"
- "traefik.http.routers.lighthouse.entrypoints=websecure"
- "traefik.http.routers.lighthouse.tls.certresolver=myresolver"
- "traefik.http.routers.lighthouse.rule=Host(`$DOMAIN`) && PathPrefix(`/lighthouse`)"
- "traefik.http.routers.lighthouse.middlewares=lighthouse-stripprefix, ipwhitelist"
volumes:
erigon-trace:
lighthouse_data:

View File

@@ -1,27 +0,0 @@
version: '3.1'
services:
evmos:
image: tharsishq/evmos:v2.0.1
expose:
- "8545"
ports:
- "26657:26657"
- "26656:26656"
volumes:
- evmos_data:/root/.evmosd
command: "evmosd start"
networks:
- chains
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.evmos-stripprefix.stripprefix.prefixes=/evmos"
- "traefik.http.services.evmos.loadbalancer.server.port=8545"
- "traefik.http.routers.evmos.entrypoints=websecure"
- "traefik.http.routers.evmos.tls.certresolver=myresolver"
- "traefik.http.routers.evmos.rule=Host(`$DOMAIN`) && PathPrefix(`/evmos`)"
- "traefik.http.routers.evmos.middlewares=evmos-stripprefix, ipwhitelist"
volumes:
evmos_data:

View File

@@ -1,28 +0,0 @@
version: "3.1"
services:
fantom:
build:
args:
VERSION: release/1.1.0-rc.4
context: ./fantom
dockerfile: Dockerfile
environment:
- SNAPSHOT_URL=https://download.fantom.network/opera_5may22.tgz
volumes:
- "fantom:/datadir"
expose:
- "18545"
networks:
- chains
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.fantom-stripprefix.stripprefix.prefixes=/fantom"
- "traefik.http.services.fantom.loadbalancer.server.port=18545"
- "traefik.http.routers.fantom.entrypoints=websecure"
- "traefik.http.routers.fantom.tls.certresolver=myresolver"
- "traefik.http.routers.fantom.rule=Host(`$DOMAIN`) && PathPrefix(`/fantom`)"
- "traefik.http.routers.fantom.middlewares=fantom-stripprefix, ipwhitelist"
volumes:
fantom:

View File

@@ -1,28 +0,0 @@
# Build Fantom in a stock Go builder container
FROM golang:1.17-alpine as builder
# Install packages we need
RUN apk add --no-cache make gcc musl-dev linux-headers git
# Make a folder to work in
RUN mkdir /fantom
# Grab VERSION from Build Args
ARG VERSION
# Clone the repo to that folder
RUN git clone --branch ${VERSION} https://github.com/Fantom-foundation/go-opera.git /fantom
# Build Fantom
RUN cd /fantom && make
# Pull Fantom into a second stage deploy alpine container
FROM alpine:latest
RUN apk add --no-cache ca-certificates wget tzdata
COPY --from=builder /fantom/build/opera /usr/local/bin/
# Set entrypoint
COPY ./scripts/entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod u+x /usr/local/bin/entrypoint.sh
ENTRYPOINT [ "/usr/local/bin/entrypoint.sh" ]

View File

@@ -1,38 +0,0 @@
#!/bin/sh
# exit script on any error
set -e
# Set fantom Home Directory
FANTOM_HOME=/datadir
if [ -n "${SNAPSHOT_URL}" ] && [ ! -f "${FANTOM_HOME}/bootstrapped" ];
then
echo "downloading snapshot from ${SNAPSHOT_URL}"
wget --tries=0 -O - "${SNAPSHOT_URL}" | tar -xz --strip-components=1 -C ${FANTOM_HOME}/ && touch ${FANTOM_HOME}/bootstrapped
fi
if [ ! -f "$FANTOM_HOME/mainnet.g" ];
then
cd $FANTOM_HOME
echo "downloading launch genesis file"
wget --quiet https://opera.fantom.network/mainnet.g
fi
opera \
--genesis=/datadir/mainnet.g \
--port=5050 \
--maxpeers=200 \
--datadir=/datadir \
--http \
--http.addr=0.0.0.0 \
--http.port=18545 \
--http.api=ftm,eth,debug,admin,web3,personal,net,txpool,sfc \
--http.corsdomain="*" \
--http.vhosts="*" \
--ws \
--ws.addr=0.0.0.0 \
--ws.port=18546 \
--ws.api=ftm,eth,debug,admin,web3,personal,net,txpool,sfc \
--ws.origins="*" \
--nousb

View File

@@ -1,50 +0,0 @@
version: '3.1'
services:
fusenetstat:
image: fusenet/netstat:1.0.0
command: "--instance-name 0xeb5Ca1d019e9D8b9aa9C47991993C84d1062628d --role node --parity-version 2.0.1 --fuseapp-version 1.0.0 --netstats-version 1.0.0"
network_mode: "service:fusenet"
restart: unless-stopped
depends_on:
- fusenet
# wants udp and tcp port bindings on 30303
fusenet:
image: fusenet/node:2.0.1
expose:
- "3000"
- "8545"
- "8546"
- "30303"
environment:
- HOME=/home/parity
- PARITY_HOME_DIR=/home/parity/.local/share/io.parity.ethereum
- PARITY_CONFIG_FILE_CHAIN=/home/parity/.local/share/io.parity.ethereum/spec.json
- PARITY_CONFIG_FILE_BOOTNODES=/home/parity/.local/share/io.parity.ethereum/bootnodes.txt
- PARITY_CONFIG_FILE_TEMPLATE=/home/parity/.local/share/io.parity.ethereum/config_template.toml
- PARITY_DATA_DIR=/home/parity/.local/share/io.parity.ethereum/chains
- PARITY_BIN=/usr/local/bin/parity
- PARITY_WRAPPER_SCRIPT=/home/parity/parity_wrapper.sh
volumes:
- fusenet_data:/data
- fusenet_config:/config/custom
networks:
- chains
command: "--role node --parity-args --no-warp --node-key 0xeb5Ca1d019e9D8b9aa9C47991993C84d1062628d --jsonrpc-threads 1 --jsonrpc-server-threads 4 --metrics --metrics-interface=0.0.0.0"
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.fuse-stripprefix.stripprefix.prefixes=/fuse"
- "traefik.http.services.fuse.loadbalancer.server.port=8545"
- "traefik.http.routers.fuse.entrypoints=websecure"
- "traefik.http.routers.fuse.tls.certresolver=myresolver"
- "traefik.http.routers.fuse.rule=Host(`$DOMAIN`) && PathPrefix(`/fuse`)"
- "traefik.http.routers.fuse.middlewares=fuse-stripprefix, ipwhitelist"
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=3000"
- "prometheus-scrape.job_name=fusenet"
volumes:
fusenet_data:
fusenet_config:

View File

@@ -1,61 +0,0 @@
version: '3.1'
services:
geth-mainnet:
image: ethereum/client-go:v1.10.23
expose:
# HTTP server / GraphQL API
- 8545
ports:
- "30303:30303"
- "30303:30303/udp"
command:
[
# Blockchain sync mode ("snap", "full" or "light")
"--syncmode=snap",
# Megabytes of memory allocated to internal caching
"--cache=8192",
# Enable the WS-RPC server
"--ws",
"--ws.addr=0.0.0.0",
# Enable the HTTP-RPC server
"--http",
"--http.addr=0.0.0.0",
"--http.vhosts=*",
# Enable GraphQL on the HTTP-RPC server. Note that GraphQL can only be started if an HTTP server is started as well.
"--graphql",
"--graphql.vhosts=*",
# Enable metrics collection and reporting
"--metrics",
"--metrics.addr=0.0.0.0",
# Ethereum mainnet
"--mainnet",
# Maximum number of network peers (network disabled if set to 0) (default: 50)
"--maxpeers=30",
# The Merge
"--authrpc.jwtsecret=/jwtsecret",
"--authrpc.addr=0.0.0.0",
"--authrpc.vhosts=*"
]
networks:
- chains
volumes:
- "geth-mainnet_data:/root/.ethereum"
- ".jwtsecret:/jwtsecret"
restart: unless-stopped
stop_grace_period: 1m
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.mainnet-stripprefix.stripprefix.prefixes=/mainnet"
- "traefik.http.services.mainnet.loadbalancer.server.port=8545"
- "traefik.http.routers.mainnet.entrypoints=websecure"
- "traefik.http.routers.mainnet.tls.certresolver=myresolver"
- "traefik.http.routers.mainnet.rule=Host(`$DOMAIN`) && PathPrefix(`/mainnet`)"
- "traefik.http.routers.mainnet.middlewares=mainnet-stripprefix, ipwhitelist"
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=6060"
- "prometheus-scrape.job_name=geth-mainnet"
- "prometheus-scrape.metrics_path=/debug/metrics/prometheus"
volumes:
geth-mainnet_data:

View File

@@ -23,7 +23,7 @@
"fiscalYearStartMonth": 0,
"graphTooltip": 1,
"id": 3,
"iteration": 1662643544733,
"iteration": 1643017584439,
"links": [],
"liveNow": false,
"panels": [
@@ -814,7 +814,6 @@
},
{
"datasource": {
"type": "prometheus",
"uid": "$DS_PROMETHEUS"
},
"fieldConfig": {
@@ -894,13 +893,7 @@
"pluginVersion": "8.3.3",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "P5A05DE9151B5EC1A"
},
"exemplar": true,
"expr": "sum by (name) (rate(container_cpu_usage_seconds_total{image!=\"\",container_label_org_label_schema_group=\"\"}[1m])) / scalar(count(node_cpu_seconds_total{mode=\"user\"})) * 100",
"interval": "",
"intervalFactor": 10,
"legendFormat": "{{ name }}",
"metric": "container_cpu_user_seconds_total",
@@ -1083,14 +1076,16 @@
{
"datasource": {
"type": "prometheus",
"uid": "$DS_PROMETHEUS"
"uid": "PECBB1E6D5756C6D7"
},
"exemplar": true,
"expr": "sum by (name) (container_memory_usage_bytes{image!=\"\",container_label_org_label_schema_group=\"\"})",
"hide": false,
"expr": "sum by (name)(container_memory_usage_bytes{image!=\"\",container_label_org_label_schema_group=\"\"})",
"interval": "",
"intervalFactor": 1,
"legendFormat": "{{ name }}",
"refId": "A"
"metric": "container_memory_usage",
"refId": "A",
"step": 1
}
],
"title": "Container Memory Usage",
@@ -1383,9 +1378,9 @@
"list": [
{
"current": {
"selected": true,
"text": "rpc-de-01",
"value": "rpc-de-01"
"selected": false,
"text": "rpc-node",
"value": "rpc-node"
},
"hide": 0,
"includeAll": false,
@@ -1403,7 +1398,7 @@
]
},
"time": {
"from": "now-15m",
"from": "now-2d",
"to": "now"
},
"timepicker": {
@@ -1432,8 +1427,8 @@
]
},
"timezone": "browser",
"title": "chain container metrics",
"title": "Chain Container Metrics",
"uid": "vbznma07k",
"version": 3,
"version": 25,
"weekStart": ""
}

File diff suppressed because it is too large Load Diff

View File

@@ -3231,7 +3231,7 @@
]
},
"timezone": "browser",
"title": "monitoring containers",
"title": "Monitoring Containers",
"uid": "JJznma0nk",
"version": 7,
"weekStart": ""

View File

@@ -14110,7 +14110,7 @@
]
},
"timezone": "browser",
"title": "nodeexporter metics",
"title": "Node Exporter Full",
"uid": "rYdddlPWk",
"version": 67
}

File diff suppressed because it is too large Load Diff

View File

@@ -5,21 +5,12 @@ datasources:
type: prometheus
access: proxy
orgId: 1
url: http://10.13.13.5:9090
url: http://10.13.13.4:9090
basicAuth: false
isDefault: false
editable: true
- name: rpc-de-04
type: prometheus
access: proxy
orgId: 1
url: http://10.13.13.7:9090
basicAuth: false
isDefault: false
editable: true
- name: rpc-fi-01
- name: rpc-de-02
type: prometheus
access: proxy
orgId: 1
@@ -28,11 +19,20 @@ datasources:
isDefault: false
editable: true
- name: rpc-fi-04
- name: rpc-fi-01
type: prometheus
access: proxy
orgId: 1
url: http://10.13.13.8:9090
url: http://10.13.13.5:9090
basicAuth: false
isDefault: false
editable: true
- name: rpc-fi-01
type: prometheus
access: proxy
orgId: 1
url: http://10.13.13.5:9090
basicAuth: false
isDefault: false
editable: true
@@ -54,3 +54,21 @@ datasources:
basicAuth: false
isDefault: false
editable: true
- name: harmony-fr-1
type: prometheus
access: proxy
orgId: 1
url: http://10.13.13.11:9090
basicAuth: false
isDefault: false
editable: true
- name: moonbeam-lt-01
type: prometheus
access: proxy
orgId: 1
url: http://10.13.13.2:9090
basicAuth: false
isDefault: false
editable: true

View File

@@ -1,72 +0,0 @@
version: '3.1'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: always
expose:
- "8082"
ports:
- "443:443"
- "127.0.0.1:8080:8080"
command:
- "--api=true"
- "--api.insecure=true"
- "--api.dashboard=true"
- "--log.level=DEBUG"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--providers.file.filename=/dynamic_config.yml"
- "--entrypoints.websecure.address=:443"
- "--entryPoints.metrics.address=:8082"
- "--metrics.prometheus.entryPoint=metrics"
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
# TESTING
# - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
- "--certificatesresolvers.myresolver.acme.email=$MAIL"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
volumes:
- "./traefik/letsencrypt:/letsencrypt"
- "./traefik/config/dynamic_config.yml:/dynamic_config.yml"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
networks:
- chains
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=$WHITELIST"
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8082"
- "prometheus-scrape.job_name=traefik"
haproxy:
build: haproxy
volumes:
- ./haproxy:/usr/local/etc/haproxy
expose:
- "8404"
- "80"
ports:
- "127.0.0.1:80:80"
restart: always
networks:
- chains
labels:
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8404"
- "prometheus-scrape.job_name=haproxy"
- "prometheus-scrape.metrics_path=/metrics"
- "traefik.enable=true"
- "traefik.http.services.haproxy.loadbalancer.server.port=80"
- "traefik.http.routers.haproxy.entrypoints=websecure"
- "traefik.http.routers.haproxy.tls.certresolver=myresolver"
- "traefik.http.routers.haproxy.rule=Host(`$DOMAIN`)"
- "traefik.http.routers.haproxy.middlewares=ipwhitelist"
networks:
chains:
driver: bridge
ipam:
config:
- subnet: 192.168.0.1/27

View File

@@ -1,7 +0,0 @@
FROM haproxy:alpine
USER root
RUN apk add --no-cache curl bash jq
USER haproxy
CMD ["haproxy", "-f", "/usr/local/etc/haproxy/haproxy.cfg"]

View File

@@ -14,12 +14,12 @@ RPT=$4
# RPT=8545
# Run curl with appropriate options
curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"eth_syncing","params": [],"id":1}' https://$HAPROXY_SERVER_NAME:$RPT/$HAPROXY_PROXY_NAME 2>/dev/null | jq '.result' -r | grep -q false
curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"eth_syncing","params": [],"id":1}' http://$RIP:$RPT/avalanche 2>/dev/null | jq '.result' -r | grep -q false
exit1=$?
peers=$(curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"net_peerCount","params": [],"id":1}' https://$HAPROXY_SERVER_NAME:$RPT/$HAPROXY_PROXY_NAME 2>/dev/null | jq '.result' -r)
peers=$(curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"net_peerCount","params": [],"id":1}' http://$RIP:$RPT/avalanche 2>/dev/null | jq '.result' -r)
# If any of the above tests failed, then exit 1.
if [[ "$exit1" -ne 0 ]]; then exit 1; fi
if [[ `printf "%d" $peers` == "0" || `printf "%d" $peers` == "1" ]]; then exit 1; fi
exit 0
exit 0

View File

@@ -0,0 +1,25 @@
#!/bin/bash
# $1 = Virtual Service IP (VIP)
# $2 = Virtual Service Port (VPT)
# $3 = Real Server IP (RIP)
# $4 = Real Server Port (RPT)
# $5 = Check Source IP
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
VIP=$1
VPT=$2
RIP=$3
RPT=$4
# RPT=8545
# Run curl with appropriate options
curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"eth_syncing","params": [],"id":1}' http://$RIP:$RPT/erigon 2>/dev/null | jq '.result' -r | grep -q false
exit1=$?
peers=$(curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"net_peerCount","params": [],"id":1}' http://$RIP:$RPT/erigon 2>/dev/null | jq '.result' -r)
# If any of the above tests failed, then exit 1.
if [[ "$exit1" -ne 0 ]]; then exit 1; fi
if [[ `printf "%d" $peers` == "0" || `printf "%d" $peers` == "1" ]]; then exit 1; fi
exit 0

View File

@@ -0,0 +1,25 @@
#!/bin/bash
# $1 = Virtual Service IP (VIP)
# $2 = Virtual Service Port (VPT)
# $3 = Real Server IP (RIP)
# $4 = Real Server Port (RPT)
# $5 = Check Source IP
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
VIP=$1
VPT=$2
RIP=$3
RPT=$4
# RPT=8545
# Run curl with appropriate options
curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"eth_syncing","params": [],"id":1}' http://$RIP:$RPT/geth 2>/dev/null | jq '.result' -r | grep -q false
exit1=$?
peers=$(curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"net_peerCount","params": [],"id":1}' http://$RIP:$RPT/geth 2>/dev/null | jq '.result' -r)
# If any of the above tests failed, then exit 1.
if [[ "$exit1" -ne 0 ]]; then exit 1; fi
if [[ `printf "%d" $peers` == "0" || `printf "%d" $peers` == "1" ]]; then exit 1; fi
exit 0

View File

@@ -0,0 +1,25 @@
#!/bin/bash
# $1 = Virtual Service IP (VIP)
# $2 = Virtual Service Port (VPT)
# $3 = Real Server IP (RIP)
# $4 = Real Server Port (RPT)
# $5 = Check Source IP
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
VIP=$1
VPT=$2
RIP=$3
RPT=$4
# RPT=8545
# Run curl with appropriate options
curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"eth_syncing","params": [],"id":1}' http://$RIP:$RPT/goerli 2>/dev/null | jq '.result' -r | grep -q false
exit1=$?
peers=$(curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"net_peerCount","params": [],"id":1}' http://$RIP:$RPT/goerli 2>/dev/null | jq '.result' -r)
# If any of the above tests failed, then exit 1.
if [[ "$exit1" -ne 0 ]]; then exit 1; fi
if [[ `printf "%d" $peers` == "0" || `printf "%d" $peers` == "1" ]]; then exit 1; fi
exit 0

View File

@@ -1,25 +0,0 @@
#!/bin/bash
# $1 = Virtual Service IP (VIP)
# $2 = Virtual Service Port (VPT)
# $3 = Real Server IP (RIP)
# $4 = Real Server Port (RPT)
# $5 = Check Source IP
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
VIP=$1
VPT=$2
RIP=$3
RPT=$4
# RPT=8545
# Run curl with appropriate options
our_blockheight=$(curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params": [],"id":1}' https://$HAPROXY_SERVER_NAME:$RPT/$HAPROXY_PROXY_NAME 2>/dev/null | printf "%d" $(jq '.result' -r))
pokt_blockheight=$(curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params": [],"id":1}' https://poly-rpc.gateway.pokt.network 2>/dev/null | printf "%d" $(jq '.result' -r))
peers=$(curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"net_peerCount","params": [],"id":1}' https://$HAPROXY_SERVER_NAME:$RPT/$HAPROXY_PROXY_NAME 2>/dev/null | jq '.result' -r)
# If any of the above tests failed, then exit 1.
if [[ "$our_blockheight" -lt "$pokt_blockheight - 10" ]]; then exit 1; fi
if [[ `printf "%d" $peers` == "0" || `printf "%d" $peers` == "1" ]]; then exit 1; fi
exit 0

View File

@@ -0,0 +1,25 @@
#!/bin/bash
# $1 = Virtual Service IP (VIP)
# $2 = Virtual Service Port (VPT)
# $3 = Real Server IP (RIP)
# $4 = Real Server Port (RPT)
# $5 = Check Source IP
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
VIP=$1
VPT=$2
RIP=$3
RPT=$4
# RPT=8545
# Run curl with appropriate options
curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"eth_syncing","params": [],"id":1}' http://$RIP:$RPT/rinkeby 2>/dev/null | jq '.result' -r | grep -q false
exit1=$?
peers=$(curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"net_peerCount","params": [],"id":1}' http://$RIP:$RPT/rinkeby 2>/dev/null | jq '.result' -r)
# If any of the above tests failed, then exit 1.
if [[ "$exit1" -ne 0 ]]; then exit 1; fi
if [[ `printf "%d" $peers` == "0" || `printf "%d" $peers` == "1" ]]; then exit 1; fi
exit 0

View File

@@ -0,0 +1,25 @@
#!/bin/bash
# $1 = Virtual Service IP (VIP)
# $2 = Virtual Service Port (VPT)
# $3 = Real Server IP (RIP)
# $4 = Real Server Port (RPT)
# $5 = Check Source IP
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
VIP=$1
VPT=$2
RIP=$3
RPT=$4
# RPT=8545
# Run curl with appropriate options
curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"eth_syncing","params": [],"id":1}' http://$RIP:$RPT/ropsten 2>/dev/null | jq '.result' -r | grep -q false
exit1=$?
peers=$(curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"net_peerCount","params": [],"id":1}' http://$RIP:$RPT/ropsten 2>/dev/null | jq '.result' -r)
# If any of the above tests failed, then exit 1.
if [[ "$exit1" -ne 0 ]]; then exit 1; fi
if [[ `printf "%d" $peers` == "0" || `printf "%d" $peers` == "1" ]]; then exit 1; fi
exit 0

View File

@@ -1,43 +0,0 @@
version: '3.1'
services:
harmony-mainnet:
build: ./harmony/build
command: bash -c "/harmony.sh && /binary --log.dir /harmony/log --run explorer --run.shard 0 --dns.zone t.hmny.io --http.ip 0.0.0.0 --datadir /harmony"
sysctls:
net.core.somaxconn: 1024
# net.core.netdev_max_backlog: 65536
net.ipv4.tcp_tw_reuse: 1
net.ipv4.tcp_rmem: 4096 65536 16777216
net.ipv4.tcp_wmem: 4096 65536 16777216
# net.ipv4.tcp_mem: 65536 131072 262144
ulimits:
nproc: 65535
nofile:
soft: 65535
hard: 65535
expose:
- "9500"
- "9000"
- "6000"
- "30303"
volumes:
- ./harmony:/harmony/
- ./bootstrap_skript/harmony.sh:/harmony.sh
networks:
- chains
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.harmony-mainnet-stripprefix.stripprefix.prefixes=/harmony"
- "traefik.http.services.harmony-mainnet.loadbalancer.server.port=9500"
- "traefik.http.routers.harmony-mainnet.entrypoints=websecure"
- "traefik.http.routers.harmony-mainnet.tls.certresolver=myresolver"
- "traefik.http.routers.harmony-mainnet.rule=Host(`$DOMAIN`) && PathPrefix(`/harmony`)"
- "traefik.http.routers.harmony-mainnet.middlewares=harmony-mainnet-stripprefix, ipwhitelist"
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=9900"
- "prometheus-scrape.job_name=harmony-mainnet"
volumes:
harmony:

19
harmony/README_HARMONY.md Normal file
View File

@@ -0,0 +1,19 @@
Place validator.key and validator.pass into ./keyfiles
```
docker-compose up -d
```
Check if Bootstrap is working.
```
docker logs -f pokt_dokt_harmony-mainnet_1
```
Logs are at:
```
harmony/log
```
HARMONY QUERY
```
curl --location --request POST 'https://$DOMAIN/' --header 'Content-Type: application/json' --data-raw '{"jsonrpc": "2.0", "method": "hmy_latestHeader", "params": [], "id": 1}'
```
[HMY CLI Flags](https://docs.harmony.one/home/network/validators/node-setup/installing-updating/installing-node/using-binary#option-2-setup-using-flag-parsing)

95
harmony/harmony.conf Normal file
View File

@@ -0,0 +1,95 @@
Version = "2.5.0"
[BLSKeys]
KMSConfigFile = ""
KMSConfigSrcType = "shared"
KMSEnabled = false
KeyDir = "./.hmy/blskeys"
KeyFiles = []
MaxKeys = 10
PassEnabled = true
PassFile = ""
PassSrcType = "auto"
SavePassphrase = false
[DNSSync]
Client = true
LegacySyncing = false
Port = 6000
Server = true
ServerPort = 6000
Zone = "t.hmny.io"
[General]
DataDir = "./"
EnablePruneBeaconChain = true
IsArchival = false
IsBackup = false
IsBeaconArchival = false
IsOffline = false
NoStaking = false
NodeType = "validator"
ShardID = -1
[HTTP]
AuthPort = 9501
Enabled = true
IP = "127.0.0.1"
Port = 9500
RosettaEnabled = false
RosettaPort = 9700
[Log]
FileName = "harmony.log"
Folder = "./latest"
RotateCount = 0
RotateMaxAge = 0
RotateSize = 100
Verbosity = 3
[Log.VerbosePrints]
Config = true
[Network]
BootNodes = ["/dnsaddr/bootstrap.t.hmny.io"]
NetworkType = "mainnet"
[P2P]
DiscConcurrency = 0
IP = "0.0.0.0"
KeyFile = "./.hmykey"
MaxConnsPerIP = 10
Port = 9000
[Pprof]
Enabled = false
Folder = "./profiles"
ListenAddr = "127.0.0.1:6060"
ProfileDebugValues = [0]
ProfileIntervals = [600]
ProfileNames = []
[RPCOpt]
DebugEnabled = false
RateLimterEnabled = true
RequestsPerSecond = 1000
[Sync]
Concurrency = 6
DiscBatch = 8
DiscHardLowCap = 6
DiscHighCap = 128
DiscSoftLowCap = 8
Downloader = false
Enabled = false
InitStreams = 8
MinPeers = 6
[TxPool]
BlacklistFile = "./.hmy/blacklist.txt"
[WS]
AuthPort = 9801
Enabled = true
IP = "127.0.0.1"
Port = 9800

View File

@@ -1,81 +0,0 @@
version: '3.1'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: always
ports:
- "443:443"
- "127.0.0.1:8080:8080"
expose:
- "8082"
command:
- "--api=true"
- "--api.insecure=true"
- "--api.dashboard=true"
- "--log.level=DEBUG"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.websecure.address=:443"
- "--entryPoints.metrics.address=:8082"
- "--metrics.prometheus.entryPoint=metrics"
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
# TESTING
# - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
- "--certificatesresolvers.myresolver.acme.email=$MAIL"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
volumes:
- "./traefik/letsencrypt:/letsencrypt"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
labels:
- "traefik.enable=true"
haproxy:
build: haproxy
volumes:
- ./haproxy:/usr/local/etc/haproxy
expose:
- "8404"
- "80"
ports:
- "127.0.0.1:80:80"
restart: always
labels:
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8404"
- "prometheus-scrape.job_name=haproxy"
- "prometheus-scrape.metrics_path=/metrics"
pocket:
build: pokt
ports:
- "127.0.0.1:8081:8081"
- "26657:26656"
expose:
- 26656
- 26660
- 8081
- 8083
environment:
- POCKET_CORE_KEY=$POCKET_CORE_KEY
- POCKET_CORE_PASSPHRASE=$POCKET_CORE_PASSPHRASE
- POCKET_SNAPSHOT=$POCKET_SNAPSHOT
volumes:
- pocket:/home/app/.pocket/data
- pocket-addrbook:/home/app/.pocket/addrbook
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.services.pocket.loadbalancer.server.port=8081"
- "traefik.http.routers.pocket.entrypoints=websecure"
- "traefik.http.routers.pocket.tls.certresolver=myresolver"
- "traefik.http.routers.pocket.rule=Host(`$DOMAIN`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8083"
- "prometheus-scrape.job_name=pocket"
### VOLUMES
volumes:
pocket:
pocket-addrbook:

View File

@@ -1,147 +0,0 @@
version: '3.1'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: always
ports:
- "443:443"
- "127.0.0.1:8080:8080"
expose:
- "8082"
command:
- "--api=true"
- "--api.insecure=true"
- "--api.dashboard=true"
- "--log.level=DEBUG"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.websecure.address=:443"
- "--entryPoints.metrics.address=:8082"
- "--metrics.prometheus.entryPoint=metrics"
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
# TESTING
# - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
- "--certificatesresolvers.myresolver.acme.email=$MAIL"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
volumes:
- "./traefik/letsencrypt:/letsencrypt"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
labels:
- "traefik.enable=true"
### POKT
pocket-lt-1:
build: pokt
ports:
- "127.0.0.1:8081:8081"
- "26656:26656"
expose:
- 26656
- 26660
- 8081
- 8083
#command: pocket start --simulateRelay
environment:
- POCKET_CORE_KEY=$POKT_LT_1_POCKET_CORE_KEY
- POCKET_CORE_PASSPHRASE=$POKT_LT_1_POCKET_CORE_PASSPHRASE
- POCKET_SNAPSHOT=$POCKET_SNAPSHOT
volumes:
- pocket-lt-1:/home/app/.pocket/data
- pocket-lt-1-addrbook:/home/app/.pocket/addrbook
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.services.pocket-lt-1.loadbalancer.server.port=8081"
- "traefik.http.routers.pocket-lt-1.entrypoints=websecure"
- "traefik.http.routers.pocket-lt-1.tls.certresolver=myresolver"
- "traefik.http.routers.pocket-lt-1.rule=Host(`$POKT_LT_1_DOMAIN`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8083"
- "prometheus-scrape.job_name=pocket-lt-1"
pocket-lt-2:
build: pokt
ports:
- "127.0.0.1:8082:8081"
- "26657:26656"
expose:
- 26656
- 26660
- 8081
- 8083
#command: pocket start --simulateRelay
environment:
- POCKET_CORE_KEY=$POKT_LT_2_POCKET_CORE_KEY
- POCKET_CORE_PASSPHRASE=$POKT_LT_2_POCKET_CORE_PASSPHRASE
- POCKET_SNAPSHOT=$POCKET_SNAPSHOT
volumes:
- pocket-lt-2:/home/app/.pocket/data
- pocket-lt-2-addrbook:/home/app/.pocket/addrbook
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.services.pocket-lt-2.loadbalancer.server.port=8081"
- "traefik.http.routers.pocket-lt-2.entrypoints=websecure"
- "traefik.http.routers.pocket-lt-2.tls.certresolver=myresolver"
- "traefik.http.routers.pocket-lt-2.rule=Host(`$POKT_LT_2_DOMAIN`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8083"
- "prometheus-scrape.job_name=pocket-lt-2"
# pocket-lt-3:
# build: pokt
# ports:
# - "127.0.0.1:8082:8081"
# - "26657:26656"
# expose:
# - 26656
# - 26660
# - 8081
# - 8083
# #command: pocket start --simulateRelay
# environment:
# - POCKET_CORE_KEY=$POKT_LT_3_POCKET_CORE_KEY
# - POCKET_CORE_PASSPHRASE=$POKT_LT_3_POCKET_CORE_PASSPHRASE
# - POCKET_SNAPSHOT=$POCKET_SNAPSHOT
# volumes:
# - pocket-lt-3:/home/app/.pocket/data
# - pocket-lt-3-addrbook:/home/app/.pocket/addrbook
# restart: unless-stopped
# labels:
# - "traefik.enable=true"
# - "traefik.http.services.pocket-lt-3.loadbalancer.server.port=8081"
# - "traefik.http.routers.pocket-lt-3.entrypoints=websecure"
# - "traefik.http.routers.pocket-lt-3.tls.certresolver=myresolver"
# - "traefik.http.routers.pocket-lt-3.rule=Host(`$POKT_LT_3_DOMAIN`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
# - "prometheus-scrape.enabled=true"
# - "prometheus-scrape.port=8083"
# - "prometheus-scrape.job_name=pocket-lt-3"
haproxy:
build: haproxy
volumes:
- ./haproxy:/usr/local/etc/haproxy
expose:
- "8404"
- "80"
ports:
- "127.0.0.1:80:80"
restart: always
labels:
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8404"
- "prometheus-scrape.job_name=haproxy"
- "prometheus-scrape.metrics_path=/metrics"
### VOLUMES
volumes:
pocket-lt-1:
pocket-lt-1-addrbook:
pocket-lt-2:
pocket-lt-2-addrbook:
# pocket-lt-3:
# pocket-lt-3-addrbook:

View File

@@ -1,13 +0,0 @@
FROM poktnetwork/pocket-core:RC-0.9.1.3
COPY --chown=1005:1001 config.json /home/app/.pocket/config/config.json
COPY --chown=1005:1001 chains.json /home/app/.pocket/config/chains.json
COPY --chown=1005:1001 bootstrap.sh /home/app/.pocket/bootstrap.sh
RUN mkdir /home/app/.pocket/addrbook
RUN mkdir /home/app/.pocket/data
RUN chown -R 1005:1001 /home/app/.pocket/data
ENV POCKET_MAIN_SEEDS=03b74fa3c68356bb40d58ecc10129479b159a145@seed1.mainnet.pokt.network:20656,64c91701ea98440bc3674fdb9a99311461cdfd6f@seed2.mainnet.pokt.network:21656,0057ee693f3ce332c4ffcb499ede024c586ae37b@seed3.mainnet.pokt.network:22856,9fd99b89947c6af57cd0269ad01ecb99960177cd@seed4.mainnet.pokt.network:23856,f2a4d0ec9d50ea61db18452d191687c899c3ca42@seed5.mainnet.pokt.network:24856,f2a9705924e8d0e11fed60484da2c3d22f7daba8@seed6.mainnet.pokt.network:25856,582177fd65dd03806eeaa2e21c9049e653672c7e@seed7.mainnet.pokt.network:26856,2ea0b13ab823986cfb44292add51ce8677b899ad@seed8.mainnet.pokt.network:27856,a5f4a4cd88db9fd5def1574a0bffef3c6f354a76@seed9.mainnet.pokt.network:28856,d4039bd71d48def9f9f61f670c098b8956e52a08@seed10.mainnet.pokt.network:29856,5c133f07ed296bb9e21e3e42d5f26e0f7d2b2832@poktseed100.chainflow.io:26656,361b1936d3fbe516628ebd6a503920fc4fc0f6a7@seed.pokt.rivet.cloud:26656
CMD ["bash", "/home/app/.pocket/bootstrap.sh", "&&", "pocket", "start", "--seeds", "03b74fa3c68356bb40d58ecc10129479b159a145@seed1.mainnet.pokt.network:20656,64c91701ea98440bc3674fdb9a99311461cdfd6f@seed2.mainnet.pokt.network:21656,0057ee693f3ce332c4ffcb499ede024c586ae37b@seed3.mainnet.pokt.network:22856,9fd99b89947c6af57cd0269ad01ecb99960177cd@seed4.mainnet.pokt.network:23856,f2a4d0ec9d50ea61db18452d191687c899c3ca42@seed5.mainnet.pokt.network:24856,f2a9705924e8d0e11fed60484da2c3d22f7daba8@seed6.mainnet.pokt.network:25856,582177fd65dd03806eeaa2e21c9049e653672c7e@seed7.mainnet.pokt.network:26856,2ea0b13ab823986cfb44292add51ce8677b899ad@seed8.mainnet.pokt.network:27856,a5f4a4cd88db9fd5def1574a0bffef3c6f354a76@seed9.mainnet.pokt.network:28856,d4039bd71d48def9f9f61f670c098b8956e52a08@seed10.mainnet.pokt.network:29856,5c133f07ed296bb9e21e3e42d5f26e0f7d2b2832@poktseed100.chainflow.io:26656,361b1936d3fbe516628ebd6a503920fc4fc0f6a7@seed.pokt.rivet.cloud:26656", "--mainnet"]

View File

@@ -1,10 +0,0 @@
#!/bin/sh
if [ ! -f /home/app/.pocket/data/setupdone ]
then
mkdir -p /home/app/.pocket/data
echo "wget -q -O - '$POCKET_SNAPSHOT' | tar -xvz -C /home/app/.pocket/data/"
wget -q -O - $POCKET_SNAPSHOT | tar -xvz -C /home/app/.pocket/data/
touch /home/app/.pocket/data/setupdone
fi

View File

@@ -1,58 +0,0 @@
[
{
"id": "0001",
"url": "http://localhost:8081"
},
{
"id": "0004",
"url": "http://haproxy/bsc"
},
{
"id": "0005",
"url": "http://haproxy/fuse"
},
{
"id": "0009",
"url": "http://haproxy/polygon"
},
{
"id": "0021",
"url": "http://haproxy/mainnet"
},
{
"id": "0022",
"url": "http://haproxy/erigon"
},
{
"id": "0023",
"url": "http://haproxy/ropsten"
},
{
"id": "0025",
"url": "http://haproxy/rinkeby"
},
{
"id": "0026",
"url": "http://haproxy/goerli"
},
{
"id": "0027",
"url": "http://haproxy/xdai"
},
{
"id": "0028",
"url": "http://haproxy/erigon"
},
{
"id": "0040",
"url": "http://haproxy/harmony"
},
{
"id": "0049",
"url": "http://haproxy/fantom"
},
{
"id": "0006",
"url": "http://haproxy/solana"
}
]

View File

@@ -59,7 +59,7 @@
"Seeds": "",
"PersistentPeers": "",
"UPNP": false,
"AddrBook": "addrbook/addrbook.json",
"AddrBook": "config/addrbook.json",
"AddrBookStrict": false,
"MaxNumInboundPeers": 14,
"MaxNumOutboundPeers": 7,
@@ -130,6 +130,7 @@
"data_dir": "/home/app/.pocket",
"genesis_file": "genesis.json",
"chains_name": "chains.json",
"session_db_name": "session",
"evidence_db_name": "pocket_evidence",
"tendermint_uri": "tcp://localhost:26657",
"keybase_name": "pocket-keybase",
@@ -140,7 +141,7 @@
"json_sort_relay_responses": true,
"remote_cli_url": "http://localhost:8081",
"user_agent": "",
"validator_cache_size": 40000,
"validator_cache_size": 10000,
"application_cache_size": 10000,
"rpc_timeout": 30000,
"pocket_prometheus_port": "8083",
@@ -150,8 +151,6 @@
"ctx_cache_size": 20,
"abci_logging": false,
"show_relay_errors": true,
"disable_tx_events": true,
"iavl_cache_size": 5000000,
"chains_hot_reload": false
"disable_tx_events": true
}
}

View File

@@ -1,34 +0,0 @@
version: '3.1'
services:
bor:
build:
args:
UPSTREAM_VERSION: v0.2.14
context: ./polygon/bor
dockerfile: Dockerfile
environment:
- SNAPSHOT_URL=https://matic-blockchain-snapshots.s3-accelerate.amazonaws.com/matic-mainnet/bor-archive-node-snapshot-2022-03-17.tar.gz
- BOOTSTRAP=1
- ARCHIVE=1
volumes:
- "bor-archive_data:/datadir"
ports:
- "40303:40303"
- "40303:40303/udp"
depends_on:
- heimdallr
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.bor-stripprefix.stripprefix.prefixes=/polygon-archive"
- "traefik.http.services.bor.loadbalancer.server.port=8545"
- "traefik.http.routers.bor.entrypoints=websecure"
- "traefik.http.routers.bor.tls.certresolver=myresolver"
- "traefik.http.routers.bor.rule=Host(`$DOMAIN`) && PathPrefix(`/polygon-archive`)"
- "traefik.http.routers.bor.middlewares=bor-stripprefix, ipwhitelist"
networks:
- chains
volumes:
bor-archive_data:

View File

@@ -1,52 +0,0 @@
version: '3.1'
services:
rabbitmq:
container_name: rabbitmq
image: "rabbitmq:3-alpine"
expose:
- "5672"
restart: unless-stopped
heimdalld:
build: &ref_0
args:
UPSTREAM_VERSION: v0.2.8
context: ./polygon/heimdall
dockerfile: Dockerfile
volumes:
- "heimdall_data:/root/.heimdalld"
ports:
- "26656:26656"
- "127.0.0.1:26657:26657"
depends_on:
- rabbitmq
- geth-mainnet
environment:
- MONIKER=StakeSquid
- SNAPSHOT_URL=https://matic-blockchain-snapshots.s3-accelerate.amazonaws.com/matic-mainnet/heimdall-snapshot-2022-10-17.tar.gz
- BOOTSTRAP=1
- "ETH1_RPC_URL=http://geth-mainnet:8545/"
restart: unless-stopped
networks:
- chains
heimdallr:
environment:
- REST_SERVER=1
- "ETH1_RPC_URL=http://geth-mainnet:8545/"
build: *ref_0
volumes:
- "heimdall_data:/root/.heimdalld"
expose:
- "1317"
depends_on:
- heimdalld
- geth-mainnet
restart: unless-stopped
networks:
- chains
volumes:
heimdall_data:

View File

@@ -1,37 +0,0 @@
version: '3.1'
services:
bor:
build:
args:
UPSTREAM_VERSION: v0.2.14
context: ./polygon/bor
dockerfile: Dockerfile
sysctls:
net.ipv4.tcp_slow_start_after_idle: 0
net.ipv4.tcp_no_metrics_save: 1
environment:
- SNAPSHOT_URL=https://matic-blockchain-snapshots.s3-accelerate.amazonaws.com/matic-mainnet/bor-fullnode-snapshot-2022-10-10.tar.gz
- BOOTSTRAP=1
- ARCHIVE=0
volumes:
- "bor_data:/datadir"
ports:
- "40303:40303"
- "40303:40303/udp"
depends_on:
- heimdallr
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.bor-stripprefix.stripprefix.prefixes=/polygon"
- "traefik.http.services.bor.loadbalancer.server.port=8545"
- "traefik.http.routers.bor.entrypoints=websecure"
- "traefik.http.routers.bor.tls.certresolver=myresolver"
- "traefik.http.routers.bor.rule=Host(`$DOMAIN`) && PathPrefix(`/polygon`)"
- "traefik.http.routers.bor.middlewares=bor-stripprefix, ipwhitelist"
networks:
- chains
volumes:
bor_data:

View File

@@ -1,28 +0,0 @@
# Build Bor in a stock Go builder container
FROM golang:1.16-alpine as builder
# Install packages we need
RUN apk add --no-cache make gcc musl-dev linux-headers git
# Make a folder to work in
RUN mkdir /bor
# Grab UPSTREAM_VERSION from Build Args
ARG UPSTREAM_VERSION
# Clone the repo to that folder
RUN git clone --branch ${UPSTREAM_VERSION} https://github.com/maticnetwork/bor.git /bor
# Build Bor
RUN cd /bor && make bor
# Pull Bor into a second stage deploy alpine container
FROM alpine:latest
RUN apk add --no-cache ca-certificates curl jq
COPY --from=builder /bor/build/bin/bor /usr/local/bin/
# Set entrypoint
COPY ./scripts/entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod u+x /usr/local/bin/entrypoint.sh
ENTRYPOINT [ "/usr/local/bin/entrypoint.sh" ]

View File

@@ -1,60 +0,0 @@
#!/bin/sh
# exit script on any error
set -e
# Set Bor Home Directory
BOR_HOME=/datadir
# Check for genesis file and download or update it if needed
if [ ! -f "${BOR_HOME}/genesis.json" ];
then
echo "setting up initial configurations"
cd ${BOR_HOME}
echo "downloading launch genesis file"
wget https://raw.githubusercontent.com/maticnetwork/launch/master/mainnet-v1/sentry/sentry/bor/genesis.json
echo "initializing bor with genesis file"
bor --datadir ${BOR_HOME} init ${BOR_HOME}/genesis.json
else
# Check if genesis file needs updating
cd ${BOR_HOME}
GREPSTRING=$(grep londonBlock genesis.json | wc -l) # v0-2-13 Update
if [ ${GREPSTRING} == 0 ];
then
echo "Updating Genesis File"
wget https://raw.githubusercontent.com/maticnetwork/launch/master/mainnet-v1/sentry/sentry/bor/genesis.json
bor --datadir ${BOR_HOME} init ${BOR_HOME}/genesis.json
fi
fi
if [ "${BOOTSTRAP}" == 1 ] && [ -n "${SNAPSHOT_URL}" ] && [ ! -f "${BOR_HOME}/bootstrapped" ];
then
echo "downloading snapshot from ${SNAPSHOT_URL}"
mkdir -p ${BOR_HOME}/bor/chaindata
wget --tries=0 -O - "${SNAPSHOT_URL}" | tar -xz -C ${BOR_HOME}/bor/chaindata && touch ${BOR_HOME}/bootstrapped
fi
READY=$(curl -s http://heimdalld:26657/status | jq '.result.sync_info.catching_up')
while [[ "${READY}" != "false" ]];
do
echo "Waiting for heimdalld to catch up."
sleep 30
READY=$(curl -s heimdalld:26657/status | jq '.result.sync_info.catching_up')
done
if [ "${ARCHIVE}" == 1 ];
then
exec bor --port=40303 --maxpeers=${MAXPEERS:-200} --datadir=/datadir --networkid=137 --syncmode=full --gcmode=archive \
--ipcpath ${BOR_HOME}/bor.ipc --bor.heimdall=http://heimdallr:1317 \
--txpool.accountslots=16 --txpool.globalslots=131072 --txpool.accountqueue=64 --txpool.globalqueue=131072 \
--txpool.lifetime='1h30m0s' --miner.gaslimit=200000000 --miner.gastarget=20000000 --miner.gasprice '30000000000' \
--http --http.addr=0.0.0.0 --http.port=8545 --http.api=eth,net,web3,txpool,bor --http.corsdomain="*" --http.vhosts="*" \
--ws --ws.addr=0.0.0.0 --ws.port=8545 --ws.api=eth,net,web3,txpool,bor --ws.origins="*"
else
exec bor --port=40303 --maxpeers=${MAXPEERS:-200} --datadir=/datadir --networkid=137 --syncmode=full \
--ipcpath ${BOR_HOME}/bor.ipc --bor.heimdall=http://heimdallr:1317 \
--txpool.accountslots=16 --txpool.globalslots=131072 --txpool.accountqueue=64 --txpool.globalqueue=131072 \
--txpool.lifetime='1h30m0s' --miner.gaslimit=200000000 --miner.gastarget=20000000 --miner.gasprice '30000000000' \
--http --http.addr=0.0.0.0 --http.port=8545 --http.api=eth,net,web3,txpool,bor --http.corsdomain="*" --http.vhosts="*" \
--ws --ws.addr=0.0.0.0 --ws.port=8545 --ws.api=eth,net,web3,txpool,bor --ws.origins="*"
fi

View File

@@ -1,31 +0,0 @@
# Build Bor in a stock Go builder container
FROM golang:1.19-alpine as builder
# Install packages we need
RUN apk add --no-cache make g++ gcc musl-dev linux-headers git
# Grab ERIGON_VERSION from Build Args
ARG ERIGON_VERSION
# Clone the repo to that folder
RUN git clone --recurse-submodules -j8 https://github.com/maticnetwork/erigon.git
# change into repo
WORKDIR ./erigon
# checkout version
RUN git checkout ${ERIGON_VERSION}
# Build Bor
RUN make erigon
# Pull Bor into a second stage deploy alpine container
FROM alpine:latest
RUN apk add --no-cache ca-certificates curl jq libstdc++ libgcc
COPY --from=builder /go/erigon/build/bin/erigon /usr/local/bin/
# Set entrypoint
COPY ./scripts/entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod u+x /usr/local/bin/entrypoint.sh
ENTRYPOINT [ "/usr/local/bin/entrypoint.sh" ]

View File

@@ -1,37 +0,0 @@
#!/bin/sh
# exit script on any error
set -e
# Set Bor Home Directory
ERIGON_HOME=/datadir
if [ "${BOOTSTRAP}" == 1 ] && [ -n "${SNAPSHOT_URL}" ] && [ ! -f "${ERIGON_HOME}/bootstrapped" ];
then
echo "downloading snapshot from ${SNAPSHOT_URL}"
mkdir -p ${ERIGON_HOME}
wget --tries=0 -O - "${SNAPSHOT_URL}" | tar -xz -C ${ERIGON_HOME} && touch ${ERIGON_HOME}/bootstrapped
fi
READY=$(curl -s http://heimdalld:26657/status | jq '.result.sync_info.catching_up')
while [[ "${READY}" != "false" ]];
do
echo "Waiting for heimdalld to catch up."
sleep 30
READY=$(curl -s heimdalld:26657/status | jq '.result.sync_info.catching_up')
done
# add snap.keepblocks=true as mentioned on https://snapshot.polygon.technology/
exec erigon \
--chain=bor-mainnet \
--bor.heimdall=http://heimdallr:1317 \
--datadir=${ERIGON_HOME} \
--http --http.addr="0.0.0.0" --http.port="8545" --http.compression --http.vhosts="*" --http.corsdomain="*" --http.api="eth,debug,net,trace,web3,erigon,bor" \
--ws --ws.compression \
--snap.keepblocks=true \
--snapshots="true" \
--torrent.upload.rate="1250mb" --torrent.download.rate="1250mb" \
--metrics --metrics.addr=0.0.0.0 --metrics.port=6060 \
--pprof --pprof.addr=0.0.0.0 --pprof.port=6061

View File

@@ -1,28 +0,0 @@
# Build and Install Heimdall in a stock Go builder container
FROM golang:1.17-alpine
# Install packages we need
RUN apk add --no-cache make gcc musl-dev linux-headers git
# create go src directory and clone heimdall
RUN mkdir -p /root/heimdall
# Grab UPSTREAM_VERSION from Build Args
ARG UPSTREAM_VERSION
# Clone hemidall release into folder
RUN git clone --branch ${UPSTREAM_VERSION} https://github.com/maticnetwork/heimdall.git /root/heimdall
# change work directory
WORKDIR /root/heimdall
# GOBIN required for go install
ENV GOBIN $GOPATH/bin
# Make and Install Heimdall
RUN make install
# Set entrypoint
COPY ./scripts/entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod u+x /usr/local/bin/entrypoint.sh
ENTRYPOINT [ "/usr/local/bin/entrypoint.sh" ]

View File

@@ -1,50 +0,0 @@
#!/bin/sh
# exit script on any error
set -e
# Set Heimdall Home Directory
HEIMDALLD_HOME=/root/.heimdalld
if [ ! -f "$HEIMDALLD_HOME/config/config.toml" ];
then
echo "setting up initial configurations"
heimdalld init
cd $HEIMDALLD_HOME/config
echo "removing autogenerated genesis file"
rm genesis.json
echo "downloading launch genesis file"
wget https://raw.githubusercontent.com/maticnetwork/launch/master/mainnet-v1/without-sentry/heimdall/config/genesis.json
echo "overwriting toml config lines"
# config.toml
# CORS
sed -i "s#^cors_allowed_origins.*#cors_allowed_origins = [\"*\"]#" config.toml
# SEEDS
sed -i "s#^seeds.*#seeds = \"${BOOTNODES:-"f4f605d60b8ffaaf15240564e58a81103510631c@159.203.9.164:26656,4fb1bc820088764a564d4f66bba1963d47d82329@44.232.55.71:26656,2eadba4be3ce47ac8db0a3538cb923b57b41c927@35.199.4.13:26656,3b23b20017a6f348d329c102ddc0088f0a10a444@35.221.13.28:26656,25f5f65a09c56e9f1d2d90618aa70cd358aa68da@35.230.116.151:26656"}\"#" config.toml
# heimdall-config.toml
# BOR
sed -i "s#^bor_rpc_url.*#bor_rpc_url = \"http://bor:8545\"#" heimdall-config.toml
# ETH1
sed -i "s#^eth_rpc_url.*#eth_rpc_url = \"${ETH1_RPC_URL}\"#" heimdall-config.toml
# RABBITMQ
sed -i "s#^amqp_url.*#amqp_url = \"amqp://guest:guest@rabbitmq:5672\"#" heimdall-config.toml
fi
if [ "${BOOTSTRAP}" == 1 ] && [ -n "${SNAPSHOT_URL}" ] && [ ! -f "$HEIMDALLD_HOME/bootstrapped" ];
then
echo "downloading snapshot from ${SNAPSHOT_URL}"
mkdir -p ${HEIMDALLD_HOME}/data
wget -c "${SNAPSHOT_URL}" -O - | tar -xz -C ${HEIMDALLD_HOME}/data && touch ${HEIMDALLD_HOME}/bootstrapped
fi
if [ -n "$REST_SERVER" ];
then
EXEC="heimdalld rest-server --chain-id=137 --laddr=tcp://0.0.0.0:1317 --max-open=1000 --node=tcp://heimdalld:26657 --trust-node=true"
else
EXEC="heimdalld start --moniker=$MONIKER --fast_sync --p2p.laddr=tcp://0.0.0.0:26656 --p2p.upnp=false --pruning=syncable --rpc.laddr=tcp://0.0.0.0:26657 --with-tendermint=true"
fi
exec ${EXEC}

View File

@@ -13,13 +13,29 @@ rule_files:
# A scrape configuration containing exactly one endpoint to scrape.
scrape_configs:
- job_name: 'nodeexporter'
scrape_interval: 5s
static_configs:
- targets: ['nodeexporter:9100']
- job_name: 'cadvisor'
scrape_interval: 5s
static_configs:
- targets: ['cadvisor:8080']
- job_name: 'prometheus'
scrape_interval: 10s
static_configs:
- targets: ['localhost:9090']
- job_name: 'service_discovery'
file_sd_configs:
- files:
- '/prometheus-docker-sd/docker-targets.json'
- job_name: 'harmony-mainnet'
scrape_interval: 10s
honor_labels: true
static_configs:
- targets: ['harmony-mainnet:9900']
- job_name: 'traefik'
scrape_interval: 10s
honor_labels: true
static_configs:
- targets: ['traefik:8082']

View File

@@ -0,0 +1,69 @@
global:
scrape_interval: 15s
evaluation_interval: 15s
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
external_labels:
monitor: 'docker-host-alpha'
# Load and evaluate rules in this file every 'evaluation_interval' seconds.
rule_files:
- "alert.rules"
# A scrape configuration containing exactly one endpoint to scrape.
scrape_configs:
- job_name: 'nodeexporter'
scrape_interval: 5s
static_configs:
- targets: ['nodeexporter:9100']
- job_name: 'cadvisor'
scrape_interval: 5s
static_configs:
- targets: ['cadvisor:8080']
- job_name: 'prometheus'
scrape_interval: 10s
static_configs:
- targets: ['localhost:9090']
- job_name: 'pushgateway'
scrape_interval: 10s
honor_labels: true
static_configs:
- targets: ['pushgateway:9091']
- job_name: 'pocket-lt-1'
scrape_interval: 10s
honor_labels: true
static_configs:
- targets: ['pocket-lt-1:8083']
- targets: ['pocket-lt-1:26660']
- job_name: 'pocket-lt-2'
scrape_interval: 10s
honor_labels: true
static_configs:
- targets: ['pocket-lt-2:8083']
- targets: ['pocket-lt-2:26660']
- job_name: 'pocket-lt-3'
scrape_interval: 10s
honor_labels: true
static_configs:
- targets: ['pocket-lt-3:8083']
- targets: ['pocket-lt-3:26660']
- job_name: 'pocket-lt-4'
scrape_interval: 10s
honor_labels: true
static_configs:
- targets: ['pocket-lt-4:8083']
- targets: ['pocket-lt-4:26660']
- job_name: 'traefik'
scrape_interval: 10s
honor_labels: true
static_configs:
- targets: ['traefik:8082']

View File

@@ -0,0 +1,85 @@
global:
scrape_interval: 15s
evaluation_interval: 15s
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
external_labels:
monitor: 'docker-host-alpha'
# Load and evaluate rules in this file every 'evaluation_interval' seconds.
rule_files:
- "alert.rules"
# A scrape configuration containing exactly one endpoint to scrape.
scrape_configs:
- job_name: 'nodeexporter'
scrape_interval: 5s
static_configs:
- targets: ['nodeexporter:9100']
- job_name: 'cadvisor'
scrape_interval: 5s
static_configs:
- targets: ['cadvisor:8080']
- job_name: 'prometheus'
scrape_interval: 10s
static_configs:
- targets: ['localhost:9090']
- job_name: 'pushgateway'
scrape_interval: 10s
honor_labels: true
static_configs:
- targets: ['pushgateway:9091']
- job_name: 'traefik'
scrape_interval: 10s
honor_labels: true
static_configs:
- targets: ['traefik:8082']
- job_name: 'geth-mainnet'
scrape_interval: 10s
static_configs:
- targets: ['geth-mainnet:6060']
relabel_configs:
- source_labels: [__address__]
action: replace
regex: (.*)
replacement: $1
target_label: geth_mainnet
- job_name: 'geth-goerli'
scrape_interval: 10s
static_configs:
- targets: ['geth-goerli:6060']
relabel_configs:
- source_labels: [__address__]
action: replace
regex: (.*)
replacement: $1
target_label: geth_goerli
- job_name: 'geth-rinkeby'
scrape_interval: 10s
static_configs:
- targets: ['geth-rinkeby:6060']
relabel_configs:
- source_labels: [__address__]
action: replace
regex: (.*)
replacement: $1
target_label: geth_rinkeby
- job_name: 'geth-ropsten'
scrape_interval: 10s
static_configs:
- targets: ['geth-ropsten:6060']
relabel_configs:
- source_labels: [__address__]
action: replace
regex: (.*)
replacement: $1
target_label: geth_ropsten

55
prometheus/prometheus.yml Normal file
View File

@@ -0,0 +1,55 @@
global:
scrape_interval: 15s
evaluation_interval: 15s
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
external_labels:
monitor: 'docker-host-alpha'
# Load and evaluate rules in this file every 'evaluation_interval' seconds.
rule_files:
- "alert.rules"
# A scrape configuration containing exactly one endpoint to scrape.
scrape_configs:
- job_name: 'nodeexporter'
scrape_interval: 5s
static_configs:
- targets: ['nodeexporter:9100']
- job_name: 'cadvisor'
scrape_interval: 5s
static_configs:
- targets: ['cadvisor:8080']
- job_name: 'prometheus'
scrape_interval: 10s
static_configs:
- targets: ['localhost:9090']
- job_name: 'pushgateway'
scrape_interval: 10s
honor_labels: true
static_configs:
- targets: ['pushgateway:9091']
- job_name: 'pocket-fr-1'
scrape_interval: 10s
honor_labels: true
static_configs:
- targets: ['pocket-fr-1:8083']
- targets: ['pocket-fr-1:26660']
- job_name: 'pocket-fr-2'
scrape_interval: 10s
honor_labels: true
static_configs:
- targets: ['pocket-fr-2:8083']
- targets: ['pocket-fr-2:26660']
- job_name: 'traefik'
scrape_interval: 10s
honor_labels: true
static_configs:
- targets: ['traefik:8082']

View File

@@ -1,29 +0,0 @@
version: '3.1'
services:
prysm:
image: prysmaticlabs/prysm-beacon-chain:stable
ports:
- "127.0.0.1:3500:3500"
- "13000:13000"
- "12000:12000/udp"
command:
[
"--datadir=/data",
"--jwt-secret=/jwtsecret",
"--rpc-host=0.0.0.0",
"--grpc-gateway-host=0.0.0.0",
"--monitoring-host=0.0.0.0",
"--execution-endpoint=http://$EXECUTION_CLIENT:8551",
"--accept-terms-of-use"
]
networks:
- chains
volumes:
- "prysm_data:/data"
- ".jwtsecret:/jwtsecret"
restart: unless-stopped
stop_grace_period: 1m
volumes:
prysm_data:

View File

@@ -1,48 +0,0 @@
version: '3.1'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: always
expose:
- "8082"
ports:
- "443:443"
- "127.0.0.1:8080:8080"
command:
- "--api=true"
- "--api.insecure=true"
- "--api.dashboard=true"
- "--log.level=DEBUG"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--providers.file.filename=/dynamic_config.yml"
- "--entrypoints.websecure.address=:443"
- "--entryPoints.metrics.address=:8082"
- "--metrics.prometheus.entryPoint=metrics"
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
# TESTING
# - "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
- "--certificatesresolvers.myresolver.acme.email=$MAIL"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
volumes:
- "./traefik/letsencrypt:/letsencrypt"
- "./traefik/config/dynamic_config.yml:/dynamic_config.yml"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
networks:
- chains
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=$WHITELIST"
- "prometheus-scrape.enabled=true"
- "prometheus-scrape.port=8082"
- "prometheus-scrape.job_name=traefik"
networks:
chains:
driver: bridge
ipam:
config:
- subnet: 192.168.0.1/27

View File

@@ -1,13 +0,0 @@
tls:
options:
default:
minVersion: VersionTLS12
cipherSuites:
# Recommended ciphers for TLSv1.2
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
# Recommended ciphers for TLSv1.3
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305

18
util/prepare.sh Executable file
View File

@@ -0,0 +1,18 @@
#!/bin/bash
source .env
export DOMAIN=$RPC_DOMAIN
chown -R root:root chains bootstrap_skript
originalfile="chains/chains_mainnet.json"
tmpfile=$(mktemp)
cp --attributes-only --preserve $originalfile $tmpfile
cat $originalfile | envsubst > $tmpfile && mv $tmpfile $originalfile
originalfile="chains/chains_testnet.json"
tmpfile=$(mktemp)
cp --attributes-only --preserve $originalfile $tmpfile
cat $originalfile | envsubst > $tmpfile && mv $tmpfile $originalfile
chown -R 1005:1001 chains bootstrap_skript pokt

22
util/relay.sh Normal file
View File

@@ -0,0 +1,22 @@
#!/bin/bash
# Only geth right now
declare -A chain_arr
chain_arr[goerli]="0026"
chain_arr[rinkeby]="0025"
chain_arr[ropsten]="0023"
chain_arr[mainnet]="0021"
chain_arr[harmony]="040"
chain_arr[xdai]="0027"
chain_arr[erigon-archival-trace]="0028"
chain_arr[erigon-mainnet]="0021"
chain_arr[erigon-archive]="0022"
for i in ${!chain_arr[@]}; do
echo curl ${i} ${chain_arr[${i}]}
curl -s -X POST --data '{"relay_network_id":"'${chain_arr[${i}]}'","payload":{"data":"{\"jsonrpc\":\"2.0\",\"method\":\"eth_syncing\",\"params\":[],\"id\":1}","method":"POST","path":"","headers":{}}}' http://127.0.0.1:8081/v1/client/sim | awk "{print $2}"
done
POKT="0001"
curl -X POST --data '{"relay_network_id":"'$POKT'","payload":{"data":"{}","method":"POST","path":"v1/query/height","headers":{}}}' http://localhost:8081/v1/client/sim
echo \n

16
util/test_relay.sh Normal file
View File

@@ -0,0 +1,16 @@
#!/bin/bash
# Only geth right now
declare -A chain_arr
chain_arr[goerli]="0020"
chain_arr[rinkeby]="0022"
chain_arr[ropsten]="0023"
for i in ${!chain_arr[@]}; do
echo curl ${i} ${chain_arr[${i}]}
curl -s -X POST --data '{"relay_network_id":"'${chain_arr[${i}]}'","payload":{"data":"{\"jsonrpc\":\"2.0\",\"method\":\"eth_syncing\",\"params\":[],\"id\":1}","method":"POST","path":"","headers":{}}}' http://127.0.0.1:8081/v1/client/sim | awk "{print $2}"
done
POKT="0002"
curl -X POST --data '{"relay_network_id":"'$POKT'","payload":{"data":"{}","method":"POST","path":"v1/query/height","headers":{}}}' http://localhost:8081/v1/client/sim
echo \n

View File

@@ -1,87 +0,0 @@
version: '3.1'
# Client https://github.com/NethermindEth/nethermind
# Nethermind container as in https://github.com/gnosischain/documentation/blob/a46e0964c7e4f75bed0ff02f7ae157c4417f60bd/docs/node/execution-layer-validator.md#setup-as-archive-node
# Beaconchain container as in https://github.com/gnosischain/lighthouse-launch
services:
xdai-archive:
hostname: xdai-archive
container_name: xdai-archive
image: nethermindeth/nethermind:trace-db
restart: always
stop_grace_period: 1m
command: '--JsonRpc.Enabled true --JsonRpc.Host 0.0.0.0 --Metrics.Enabled true --TraceStore.Enabled true --TraceStore.BlocksToKeep 0 --TraceStore.TraceTypes Trace,Rewards'
ports:
- '30303:30303/tcp' # p2p
- '30303:30303/udp' # p2p
- '127.0.0.1:8545:8545'
- '127.0.0.1:9091:9091'
networks:
- chains
volumes:
- nethermind_db:/nethermind/nethermind_db
- nethermind_keystore:/nethermind/keystore
- nethermind_logs:/nethermind/logs
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
environment:
- NETHERMIND_CONFIG=xdai_archive
- NETHERMIND_JSONRPCCONFIG_ENGINEENABLEDMODULES=[Eth,AccountAbstraction,Subscribe,TxPool,Web3,Personal,Proof,Net,Parity,Health,Trace]
- NETHERMIND_METRICSCONFIG_EXPOSEPORT=9091
- NETHERMIND_NETWORKCONFIG_MAXACTIVEPEERS=150
logging:
options:
max-size: "1000m"
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.xdai-archive-stripprefix.stripprefix.prefixes=/xdai-archive"
- "traefik.http.services.xdai-archive.loadbalancer.server.port=8545"
- "traefik.http.routers.xdai-archive.entrypoints=websecure"
- "traefik.http.routers.xdai-archive.tls.certresolver=myresolver"
- "traefik.http.routers.xdai-archive.rule=Host(`$DOMAIN`) && PathPrefix(`/xdai-archive`)"
- "traefik.http.routers.xdai-archive.middlewares=xdai-archive-stripprefix, ipwhitelist"
xdai-beacon:
image: sigp/lighthouse:v3.2.1
hostname: lighthouse-xdai
restart: always
stop_grace_period: 1m
command: |
lighthouse beacon_node
--network gnosis
--checkpoint-sync-url https://rpc-gbc.gnosischain.com/
--discovery-port 12000
--port 13000
--eth1-endpoints $XDAI_RPC_URL
--datadir /home/.eth2/beaconchaindata
--http-address 0.0.0.0
--http
--enr-address $PUBLIC_IP
--enr-udp-port 12000
--target-peers $TARGET_PEERS
--metrics
--metrics-address 0.0.0.0
--metrics-allow-origin *
--debug-level info
ports:
# HTTPPORT
# - 5052
# P2P
- '12000:12000/udp'
- '13000:13000'
networks:
- chains
volumes:
- lighthouse_xdai:/home/.eth2/beaconchaindata
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "1"
volumes:
nethermind_db:
nethermind_keystore:
nethermind_logs:
lighthouse_xdai:

View File

@@ -1,30 +0,0 @@
version: '3.1'
services:
xdai:
image: nethermind/nethermind:1.12.7
expose:
- "8545"
- "40444"
ports:
- "40444:40444"
- "40444:40444/udp"
volumes:
- xdai:/nethermind_db/xdai
- ./xdai/xdai.cfg:/xdai.cfg
- ./xdai/xdai.json:/xdai.json
networks:
- chains
command: "--config /xdai.cfg"
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.xdai-stripprefix.stripprefix.prefixes=/xdai"
- "traefik.http.services.xdai.loadbalancer.server.port=8545"
- "traefik.http.routers.xdai.entrypoints=websecure"
- "traefik.http.routers.xdai.tls.certresolver=myresolver"
- "traefik.http.routers.xdai.rule=Host(`$DOMAIN`) && PathPrefix(`/xdai`)"
- "traefik.http.routers.xdai.middlewares=xdai-stripprefix, ipwhitelist"
volumes:
xdai: