Compare commits
228 Commits
erigon-pol
...
bsc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
96c90dee4b | ||
|
|
121c44446c | ||
|
|
6785eec7c6 | ||
|
|
a5aacfd4d9 | ||
|
|
3859c921ac | ||
|
|
7b0dae1272 | ||
|
|
34d27c0bfb | ||
|
|
5f3f9cd471 | ||
|
|
82fee8d3d6 | ||
|
|
f610486fcb | ||
|
|
367fe7e355 | ||
|
|
1f6e128144 | ||
|
|
bfe6db1eda | ||
|
|
ee90c39c29 | ||
|
|
f960e2a87c | ||
|
|
d6264c93bd | ||
|
|
2c8788a373 | ||
|
|
1c81b55c1b | ||
|
|
b202565599 | ||
|
|
68d4f07d67 | ||
|
|
51c432ae78 | ||
|
|
34ad7988b4 | ||
|
|
3eda933c49 | ||
|
|
91f49a9fef | ||
|
|
6bd308e0f9 | ||
|
|
4d129c0e46 | ||
|
|
c1b3cc99ad | ||
|
|
79ab34fc17 | ||
|
|
b3dd63d00a | ||
|
|
d9369f4f9a | ||
|
|
42f9a262c9 | ||
|
|
f83ed0170f | ||
|
|
a27a6be96f | ||
|
|
6296e14282 | ||
|
|
14483ea8a2 | ||
|
|
d8d5c6e436 | ||
|
|
b359aec426 | ||
|
|
05f4e2acb7 | ||
|
|
e21e48b8eb | ||
|
|
a734ac1171 | ||
|
|
4f422e48a1 | ||
|
|
1331b184d5 | ||
|
|
ff3e1b47c8 | ||
|
|
2cf4bac577 | ||
|
|
d29348e5fc | ||
|
|
b9c9379ba1 | ||
|
|
893ec05e73 | ||
|
|
67b0026430 | ||
|
|
4608233b1e | ||
|
|
05f67d7e59 | ||
|
|
c81945a6eb | ||
|
|
127fcd1d6f | ||
|
|
888251469f | ||
|
|
d3b529bc58 | ||
|
|
dac6a5c0eb | ||
|
|
05554dedbf | ||
|
|
b71bbcd45d | ||
|
|
83ef8d47ad | ||
|
|
32e474347f | ||
|
|
47667f1aeb | ||
|
|
297dd6dddb | ||
|
|
126daf767f | ||
|
|
6093e279ea | ||
|
|
7df451b58c | ||
|
|
25cf170ed6 | ||
|
|
7eb466e383 | ||
|
|
59cdc5eba2 | ||
|
|
7f25960c5a | ||
|
|
e6098398c6 | ||
|
|
d27fc8d269 | ||
|
|
7ea656b6c2 | ||
|
|
1d272cdc75 | ||
|
|
1713f8b759 | ||
|
|
3c8c624c10 | ||
|
|
6b18040473 | ||
|
|
4bff8010e6 | ||
|
|
c99af9a7ca | ||
|
|
ed8188db80 | ||
|
|
f311c54be4 | ||
|
|
4cd11a6c79 | ||
|
|
c5a77a8e3a | ||
|
|
2f4178daba | ||
|
|
69770762f3 | ||
|
|
b9ab440ef4 | ||
|
|
5639cf70b3 | ||
|
|
749e9ccc22 | ||
|
|
9718b6645e | ||
|
|
cc926af991 | ||
|
|
db7e7a51b5 | ||
|
|
3f3e19a675 | ||
|
|
a4faf06b74 | ||
|
|
1b14565870 | ||
|
|
2b24b182c8 | ||
|
|
019e9db840 | ||
|
|
91cec100f9 | ||
|
|
06a09c9dfb | ||
|
|
fbf7c7406d | ||
|
|
3bccfa038e | ||
|
|
e07f2359dd | ||
|
|
54558d6e5a | ||
|
|
b1dfc66c5f | ||
|
|
d61180a5cd | ||
|
|
23ee7b3fe4 | ||
|
|
be9a775de5 | ||
|
|
e5fd725e3e | ||
|
|
258e67da0b | ||
|
|
93c4f95ac8 | ||
|
|
099f6347c7 | ||
|
|
478b9bba91 | ||
|
|
4af8f8fb51 | ||
|
|
5cb05a7a2c | ||
|
|
d807c66150 | ||
|
|
b3b08b22b3 | ||
|
|
ccedf8d7e7 | ||
|
|
d56b59e47a | ||
|
|
e896bc69be | ||
|
|
8ec9a3156b | ||
|
|
ded282998c | ||
|
|
86b739b61b | ||
|
|
3c51faa5d4 | ||
|
|
2076f71dd5 | ||
|
|
af666cbdd7 | ||
|
|
340e443f0e | ||
|
|
30b0fa26be | ||
|
|
5073933208 | ||
|
|
7c0b95e47f | ||
|
|
6206373f04 | ||
|
|
da9569ba97 | ||
|
|
d2fd3e8a2e | ||
|
|
6e8be0bee5 | ||
|
|
1ec1148786 | ||
|
|
5e63e8589b | ||
|
|
4904b09f8c | ||
|
|
9202948739 | ||
|
|
c57a8396c9 | ||
|
|
8dcae76a80 | ||
|
|
33c9df931c | ||
|
|
39ed18953e | ||
|
|
43c8ca8872 | ||
|
|
df007ec024 | ||
|
|
70bd91277b | ||
|
|
c5cbde2d42 | ||
|
|
8cb58bc0cf | ||
|
|
591f305077 | ||
|
|
d4dd7c1049 | ||
|
|
324f92294f | ||
|
|
472b208ad3 | ||
|
|
a711631f84 | ||
|
|
f5a7bf912e | ||
|
|
d202032ee1 | ||
|
|
f20640c36e | ||
|
|
496136edeb | ||
|
|
351246021b | ||
|
|
9120c4b029 | ||
|
|
b1e7d3b6b5 | ||
|
|
901694f4a6 | ||
|
|
62edb08bd6 | ||
|
|
eacf6535b2 | ||
|
|
6491889c1b | ||
|
|
aeb6e72139 | ||
|
|
a521e0c258 | ||
|
|
e12f2267f5 | ||
|
|
44f277b77d | ||
|
|
510f7db452 | ||
|
|
012c6b6c9e | ||
|
|
a28bacd70d | ||
|
|
7200666d17 | ||
|
|
2d51371e40 | ||
|
|
baa59c67b9 | ||
|
|
0d0e15ee22 | ||
|
|
79599d9ae6 | ||
|
|
6e41db128a | ||
|
|
59addb79f4 | ||
|
|
bf367928ec | ||
|
|
7638132e52 | ||
|
|
2b6bc0909f | ||
|
|
e632c866b0 | ||
|
|
82093d60e8 | ||
|
|
d05a5e51ed | ||
|
|
5e10b5b69f | ||
|
|
cedc18d11d | ||
|
|
81b375a398 | ||
|
|
e55eb4b439 | ||
|
|
a2a0d2ba8b | ||
|
|
763ce51530 | ||
|
|
47d2863f1e | ||
|
|
c69a6bf08b | ||
|
|
84236b8de7 | ||
|
|
c36e81aaeb | ||
|
|
2b3cb73b48 | ||
|
|
4c05514207 | ||
|
|
1210ec6cf8 | ||
|
|
7050872fc8 | ||
|
|
c0ea42376d | ||
|
|
3788c55941 | ||
|
|
e8d7fe3c0d | ||
|
|
0c6a55b773 | ||
|
|
751f3db3cb | ||
|
|
ba1b091257 | ||
|
|
619b8245cd | ||
|
|
0747c10839 | ||
|
|
cf195e161d | ||
|
|
27392854d4 | ||
|
|
a0f6ed6dc5 | ||
|
|
8865df89e5 | ||
|
|
f43985edb9 | ||
|
|
e901b88030 | ||
|
|
a407f96e11 | ||
|
|
2c03e48d48 | ||
|
|
a932bd8e3b | ||
|
|
3b25d87098 | ||
|
|
a732bac611 | ||
|
|
2607864a10 | ||
|
|
9d5f4298c3 | ||
|
|
d32a161681 | ||
|
|
53753a8c8c | ||
|
|
723979e176 | ||
|
|
565a765c71 | ||
|
|
050d82021c | ||
|
|
605321e12c | ||
|
|
1afae2e6e6 | ||
|
|
59a7c17436 | ||
|
|
32478b158f | ||
|
|
8b00b96450 | ||
|
|
ea10406e71 | ||
|
|
a418d0e1e2 | ||
|
|
b7e2f76e58 | ||
|
|
7c1e67b70d |
@@ -1,8 +1,4 @@
|
|||||||
### Docs
|
### Docs
|
||||||
|
|
||||||
TODO:
|
|
||||||
|
|
||||||
auto-generate .jwtsecret for beacon-execution connection
|
|
||||||
Fix wireguard chains network for pocket-frontends
|
|
||||||
|
|
||||||
[Pocket Validator](README_POKT.md) </br>
|
[Pocket Validator](README_POKT.md) </br>
|
||||||
|
[Harmony Validator](harmony/README_HARMONY.md)
|
||||||
@@ -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:
|
|
||||||
@@ -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": ""
|
|
||||||
}
|
|
||||||
7
bootstrap_skript/pokt_mainnet.sh
Executable file
7
bootstrap_skript/pokt_mainnet.sh
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/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
|
||||||
@@ -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 = ""
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"id": "0001",
|
"id": "0001",
|
||||||
"url": "http://localhost:8081"
|
"url": "http://haproxy/pokt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "0004",
|
"id": "0004",
|
||||||
@@ -46,13 +46,5 @@
|
|||||||
{
|
{
|
||||||
"id": "0040",
|
"id": "0040",
|
||||||
"url": "http://haproxy/harmony"
|
"url": "http://haproxy/harmony"
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "0049",
|
|
||||||
"url": "http://haproxy/fantom"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "0006",
|
|
||||||
"url": "http://haproxy/solana"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
18
chains/chains_testnet.json
Normal file
18
chains/chains_testnet.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "0020",
|
||||||
|
"url": "http://haproxy/goerli"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0022",
|
||||||
|
"url": "http://haproxy/rinkeby"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0023",
|
||||||
|
"url": "http://haproxy/ropsten"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "0002",
|
||||||
|
"url": "http://haproxy/pokttest"
|
||||||
|
}
|
||||||
|
]
|
||||||
434
docker-compose-rpc.yml
Normal file
434
docker-compose-rpc.yml
Normal 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
|
||||||
@@ -3,27 +3,27 @@ version: '3.1'
|
|||||||
services:
|
services:
|
||||||
|
|
||||||
binance-smart-chain:
|
binance-smart-chain:
|
||||||
image: dysnix/bsc:v1.1.11
|
image: dysnix/bsc
|
||||||
expose:
|
expose:
|
||||||
- "8545"
|
- "8545"
|
||||||
- "8546"
|
- "8546"
|
||||||
- "30303"
|
- "30303"
|
||||||
volumes:
|
volumes:
|
||||||
- bsc_data:/datadir
|
- /root/bsc-datadir/server1/data-seed:/datadir
|
||||||
- ./bsc/config.toml:/config.toml
|
- /root/bsc-config/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"
|
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
|
restart: unless-stopped
|
||||||
networks:
|
networks:
|
||||||
- chains
|
- chains
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=$WHITELIST"
|
||||||
- "traefik.http.middlewares.bsc-stripprefix.stripprefix.prefixes=/bsc"
|
- "traefik.http.middlewares.bsc-stripprefix.stripprefix.prefixes=/bsc"
|
||||||
- "traefik.http.services.bsc.loadbalancer.server.port=8545"
|
- "traefik.http.services.bsc.loadbalancer.server.port=8545"
|
||||||
- "traefik.http.routers.bsc.entrypoints=websecure"
|
- "traefik.http.routers.bsc.entrypoints=websecure"
|
||||||
- "traefik.http.routers.bsc.tls.certresolver=myresolver"
|
- "traefik.http.routers.bsc.tls.certresolver=myresolver"
|
||||||
- "traefik.http.routers.bsc.rule=Host(`$DOMAIN`) && PathPrefix(`/bsc`)"
|
- "traefik.http.routers.bsc.rule=Host(`$DOMAIN`) && PathPrefix(`/bsc`)"
|
||||||
- "traefik.http.routers.bsc.middlewares=bsc-stripprefix, ipwhitelist"
|
- "traefik.http.routers.bsc.middlewares=avalanche-stripprefix, ipwhitelist"
|
||||||
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
bsc_data:
|
|
||||||
|
|
||||||
20
docker-compose.haproxy.yml
Normal file
20
docker-compose.haproxy.yml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
version: '3.1'
|
||||||
|
|
||||||
|
services:
|
||||||
|
|
||||||
|
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"
|
||||||
|
|
||||||
126
docker-compose.harmony.yml
Normal file
126
docker-compose.harmony.yml
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
version: '3.1'
|
||||||
|
|
||||||
|
services:
|
||||||
|
harmony-mainnet:
|
||||||
|
build: ./harmony/build
|
||||||
|
command: bash -c "/harmony.sh && /binary --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
|
||||||
|
- ./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:
|
||||||
|
|
||||||
96
docker-compose.mon-client.yml
Normal file
96
docker-compose.mon-client.yml
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
version: '3.1'
|
||||||
|
|
||||||
|
services:
|
||||||
|
|
||||||
|
### 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=$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"
|
||||||
|
|
||||||
|
### VOLUMES
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
prometheus_data:
|
||||||
|
|
||||||
@@ -23,7 +23,6 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- $SERVERPORT:$SERVERPORT/udp
|
- $SERVERPORT:$SERVERPORT/udp
|
||||||
- 127.0.0.1:3000:3000
|
- 127.0.0.1:3000:3000
|
||||||
- 127.0.0.1:5050:5000
|
|
||||||
sysctls:
|
sysctls:
|
||||||
- net.ipv4.conf.all.src_valid_mark=1
|
- net.ipv4.conf.all.src_valid_mark=1
|
||||||
- net.ipv4.ip_forward=1
|
- net.ipv4.ip_forward=1
|
||||||
@@ -44,17 +43,12 @@ services:
|
|||||||
labels:
|
labels:
|
||||||
org.label-schema.group: "monitoring"
|
org.label-schema.group: "monitoring"
|
||||||
network_mode: "service:wireguard"
|
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:
|
volumes:
|
||||||
database:
|
|
||||||
grafana_data:
|
grafana_data:
|
||||||
@@ -29,9 +29,7 @@ services:
|
|||||||
sysctls:
|
sysctls:
|
||||||
- net.ipv4.conf.all.src_valid_mark=1
|
- net.ipv4.conf.all.src_valid_mark=1
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
|
||||||
- chains
|
|
||||||
- monitoring
|
|
||||||
|
|
||||||
### MONITORING
|
### MONITORING
|
||||||
|
|
||||||
@@ -39,7 +37,7 @@ services:
|
|||||||
image: prom/prometheus:v2.30.3
|
image: prom/prometheus:v2.30.3
|
||||||
container_name: prometheus
|
container_name: prometheus
|
||||||
volumes:
|
volumes:
|
||||||
- ./prometheus/prometheus-autodiscover.yml:/etc/prometheus/prometheus.yml:ro
|
- ./prometheus/prometheus.autodiscover.yml:/etc/prometheus/prometheus.yml:ro
|
||||||
- prometheus_data:/prometheus:rw
|
- prometheus_data:/prometheus:rw
|
||||||
- prometheus-docker-sd:/prometheus-docker-sd:ro
|
- prometheus-docker-sd:/prometheus-docker-sd:ro
|
||||||
command:
|
command:
|
||||||
@@ -50,12 +48,11 @@ services:
|
|||||||
- '--storage.tsdb.retention.time=200h'
|
- '--storage.tsdb.retention.time=200h'
|
||||||
- '--web.enable-lifecycle'
|
- '--web.enable-lifecycle'
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
network_mode: "service:wireguard"
|
||||||
labels:
|
labels:
|
||||||
org.label-schema.group: "monitoring"
|
org.label-schema.group: "monitoring"
|
||||||
depends_on:
|
depends_on:
|
||||||
- prometheus-docker-sd
|
|
||||||
- wireguard
|
- wireguard
|
||||||
network_mode: "service:wireguard"
|
|
||||||
|
|
||||||
prometheus-docker-sd:
|
prometheus-docker-sd:
|
||||||
image: "stucky/prometheus-docker-sd:latest"
|
image: "stucky/prometheus-docker-sd:latest"
|
||||||
@@ -80,12 +77,7 @@ services:
|
|||||||
expose:
|
expose:
|
||||||
- 9100
|
- 9100
|
||||||
labels:
|
labels:
|
||||||
- "prometheus-scrape.enabled=true"
|
org.label-schema.group: "monitoring"
|
||||||
- "prometheus-scrape.port=9100"
|
|
||||||
- "prometheus-scrape.job_name=nodeexporter"
|
|
||||||
- "org.label-schema.group=monitoring"
|
|
||||||
networks:
|
|
||||||
- monitoring
|
|
||||||
|
|
||||||
cadvisor:
|
cadvisor:
|
||||||
image: gcr.io/cadvisor/cadvisor:v0.42.0
|
image: gcr.io/cadvisor/cadvisor:v0.42.0
|
||||||
@@ -103,21 +95,10 @@ services:
|
|||||||
expose:
|
expose:
|
||||||
- 8080
|
- 8080
|
||||||
labels:
|
labels:
|
||||||
- "prometheus-scrape.enabled=true"
|
org.label-schema.group: "monitoring"
|
||||||
- "prometheus-scrape.port=8080"
|
|
||||||
- "prometheus-scrape.job_name=cadvisor"
|
|
||||||
- "org.label-schema.group=monitoring"
|
|
||||||
networks:
|
|
||||||
- monitoring
|
|
||||||
|
|
||||||
### VOLUMES
|
### VOLUMES
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
prometheus_data:
|
prometheus_data:
|
||||||
prometheus-docker-sd:
|
prometheus-docker-sd:
|
||||||
|
|
||||||
### NETWORK
|
|
||||||
|
|
||||||
networks:
|
|
||||||
monitoring:
|
|
||||||
driver: bridge
|
|
||||||
186
docker-compose.pokt-fr-1.yml
Normal file
186
docker-compose.pokt-fr-1.yml
Normal 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:
|
||||||
246
docker-compose.pokt-lt-1.yml
Normal file
246
docker-compose.pokt-lt-1.yml
Normal file
@@ -0,0 +1,246 @@
|
|||||||
|
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/prometheus-lt-1.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"
|
||||||
|
|
||||||
|
pushgateway:
|
||||||
|
image: prom/pushgateway:v1.4.2
|
||||||
|
container_name: pushgateway
|
||||||
|
restart: unless-stopped
|
||||||
|
expose:
|
||||||
|
- 9091
|
||||||
|
labels:
|
||||||
|
org.label-schema.group: "monitoring"
|
||||||
|
|
||||||
|
### POKT
|
||||||
|
pocket-lt-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_LT_1_POCKET_CORE_KEY
|
||||||
|
- POCKET_CORE_PASSPHRASE=$POKT_LT_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-lt-1:/home/app/.pocket
|
||||||
|
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}`)"
|
||||||
|
|
||||||
|
pocket-lt-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_LT_2_POCKET_CORE_KEY
|
||||||
|
- POCKET_CORE_PASSPHRASE=$POKT_LT_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-lt-2:/home/app/.pocket
|
||||||
|
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}`)"
|
||||||
|
|
||||||
|
pocket-lt-3:
|
||||||
|
image: poktnetwork/pocket-core:stagenet-latest
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:8083:8081"
|
||||||
|
- "26658: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_LT_3_POCKET_CORE_KEY
|
||||||
|
- POCKET_CORE_PASSPHRASE=$POKT_LT_3_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-lt-3:/home/app/.pocket
|
||||||
|
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}`)"
|
||||||
|
|
||||||
|
pocket-lt-4:
|
||||||
|
image: poktnetwork/pocket-core:stagenet-latest
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:8084:8081"
|
||||||
|
- "26659: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_LT_4_POCKET_CORE_KEY
|
||||||
|
- POCKET_CORE_PASSPHRASE=$POKT_LT_4_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-lt-4:/home/app/.pocket
|
||||||
|
restart: unless-stopped
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.services.pocket-lt-4.loadbalancer.server.port=8081"
|
||||||
|
- "traefik.http.routers.pocket-lt-4.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.pocket-lt-4.tls.certresolver=myresolver"
|
||||||
|
- "traefik.http.routers.pocket-lt-4.rule=Host(`$POKT_LT_4_DOMAIN`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
|
||||||
|
|
||||||
|
### VOLUMES
|
||||||
|
volumes:
|
||||||
|
pocket-lt-1:
|
||||||
|
pocket-lt-2:
|
||||||
|
pocket-lt-3:
|
||||||
|
pocket-lt-4:
|
||||||
|
prometheus_data:
|
||||||
@@ -29,7 +29,7 @@ services:
|
|||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
|
|
||||||
pocket-testnet:
|
pocket-testnet:
|
||||||
build: pokt
|
image: poktnetwork/pocket-core:stagenet-latest
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:8081:8081"
|
- "127.0.0.1:8081:8081"
|
||||||
- "26656:26656"
|
- "26656:26656"
|
||||||
@@ -37,11 +37,14 @@ services:
|
|||||||
- 26656
|
- 26656
|
||||||
- 8081
|
- 8081
|
||||||
- 8083
|
- 8083
|
||||||
|
command: pocket start --seeds=$POCKET_TEST_SEEDS --testnet
|
||||||
|
#command: pocket start --simulateRelay
|
||||||
environment:
|
environment:
|
||||||
- POCKET_CORE_KEY=$POCKET_CORE_KEY_TEST
|
- POCKET_CORE_KEY=$POCKET_CORE_KEY_TEST
|
||||||
- POCKET_CORE_PASSPHRASE=$POCKET_CORE_PASSPHRASE_TEST
|
- POCKET_CORE_PASSPHRASE=$POCKET_CORE_PASSPHRASE_TEST
|
||||||
volumes:
|
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
|
restart: unless-stopped
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
@@ -51,7 +54,7 @@ services:
|
|||||||
- "traefik.http.routers.pocket-testnet.rule=Host(`$TEST_DOMAIN_1`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
|
- "traefik.http.routers.pocket-testnet.rule=Host(`$TEST_DOMAIN_1`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
|
||||||
|
|
||||||
pocket-mainnet:
|
pocket-mainnet:
|
||||||
build: pokt
|
image: poktnetwork/pocket-core:stagenet-latest
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:8082:8081"
|
- "127.0.0.1:8082:8081"
|
||||||
- "26657:26656"
|
- "26657:26656"
|
||||||
@@ -59,13 +62,17 @@ services:
|
|||||||
- 26656
|
- 26656
|
||||||
- 8081
|
- 8081
|
||||||
- 8083
|
- 8083
|
||||||
|
command: /home/app/.pocket/pokt_mainnet.sh && pocket start --seeds=$POCKET_MAIN_SEEDS --mainnet
|
||||||
|
#command: pocket start --simulateRelay
|
||||||
environment:
|
environment:
|
||||||
- POCKET_SNAPSHOT=$POCKET_SNAPSHOT
|
- POCKET_SNAPSHOT=$POCKET_SNAPSHOT
|
||||||
- POCKET_CORE_KEY=$POCKET_CORE_KEY_MAINNET
|
- POCKET_CORE_KEY=$POCKET_CORE_KEY_MAINNET
|
||||||
- POCKET_CORE_PASSPHRASE=$POCKET_CORE_PASSPHRASE_MAINNET
|
- POCKET_CORE_PASSPHRASE=$POCKET_CORE_PASSPHRASE_MAINNET
|
||||||
volumes:
|
volumes:
|
||||||
- pocket-mainnet:/home/app/.pocket/data
|
- ./bootstrap_skript/pokt_mainnet.sh:/home/app/.pocket/pokt_mainnet.sh
|
||||||
- pocket-mainnet-config:/home/app/.pocket/config
|
- ./pokt/config.json:/home/app/.pocket/config/config.json
|
||||||
|
- ./chains/chains_mainnet.json:/home/app/.pocket/config/chains.json
|
||||||
|
- pocket-mainnet:/home/app/.pocket
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
@@ -157,6 +164,5 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
pocket-testnet:
|
pocket-testnet:
|
||||||
pocket-mainnet:
|
pocket-mainnet:
|
||||||
pocket-mainnet-config:
|
|
||||||
prometheus_data:
|
prometheus_data:
|
||||||
|
|
||||||
@@ -18,7 +18,6 @@ services:
|
|||||||
- "--log.level=DEBUG"
|
- "--log.level=DEBUG"
|
||||||
- "--providers.docker=true"
|
- "--providers.docker=true"
|
||||||
- "--providers.docker.exposedbydefault=false"
|
- "--providers.docker.exposedbydefault=false"
|
||||||
- "--providers.file.filename=/dynamic_config.yml"
|
|
||||||
- "--entrypoints.websecure.address=:443"
|
- "--entrypoints.websecure.address=:443"
|
||||||
- "--entryPoints.metrics.address=:8082"
|
- "--entryPoints.metrics.address=:8082"
|
||||||
- "--metrics.prometheus.entryPoint=metrics"
|
- "--metrics.prometheus.entryPoint=metrics"
|
||||||
@@ -29,16 +28,15 @@ services:
|
|||||||
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
|
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
|
||||||
volumes:
|
volumes:
|
||||||
- "./traefik/letsencrypt:/letsencrypt"
|
- "./traefik/letsencrypt:/letsencrypt"
|
||||||
- "./traefik/config/dynamic_config.yml:/dynamic_config.yml"
|
|
||||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||||
networks:
|
networks:
|
||||||
- chains
|
- chains
|
||||||
labels:
|
#labels:
|
||||||
- "traefik.enable=true"
|
# - "traefik.enable=true"
|
||||||
- "traefik.http.middlewares.ipwhitelist.ipwhitelist.sourcerange=$WHITELIST"
|
# - "prometheus-scrape.enabled=true"
|
||||||
- "prometheus-scrape.enabled=true"
|
# - "prometheus-scrape.port=8082"
|
||||||
- "prometheus-scrape.port=8082"
|
# - "prometheus-scrape.job_name=traefik"
|
||||||
- "prometheus-scrape.job_name=traefik"
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
chains:
|
chains:
|
||||||
@@ -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"]
|
|
||||||
@@ -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)
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
table, th, td {
|
|
||||||
border: 1px solid black;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table a
|
|
||||||
{
|
|
||||||
display:block;
|
|
||||||
text-decoration:none;
|
|
||||||
}
|
|
||||||
@@ -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>
|
|
||||||
@@ -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:
|
|
||||||
@@ -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:
|
|
||||||
- "bor-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.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:
|
|
||||||
93
erigon.yml
93
erigon.yml
@@ -1,93 +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
|
|
||||||
--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:
|
|
||||||
27
evmos.yml
27
evmos.yml
@@ -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:
|
|
||||||
28
fantom.yml
28
fantom.yml
@@ -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:
|
|
||||||
@@ -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" ]
|
|
||||||
@@ -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
|
|
||||||
50
fuse.yml
50
fuse.yml
@@ -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:
|
|
||||||
@@ -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:
|
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
"fiscalYearStartMonth": 0,
|
"fiscalYearStartMonth": 0,
|
||||||
"graphTooltip": 1,
|
"graphTooltip": 1,
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"iteration": 1662643544733,
|
"iteration": 1643017584439,
|
||||||
"links": [],
|
"links": [],
|
||||||
"liveNow": false,
|
"liveNow": false,
|
||||||
"panels": [
|
"panels": [
|
||||||
@@ -814,7 +814,6 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"datasource": {
|
"datasource": {
|
||||||
"type": "prometheus",
|
|
||||||
"uid": "$DS_PROMETHEUS"
|
"uid": "$DS_PROMETHEUS"
|
||||||
},
|
},
|
||||||
"fieldConfig": {
|
"fieldConfig": {
|
||||||
@@ -894,13 +893,7 @@
|
|||||||
"pluginVersion": "8.3.3",
|
"pluginVersion": "8.3.3",
|
||||||
"targets": [
|
"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",
|
"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,
|
"intervalFactor": 10,
|
||||||
"legendFormat": "{{ name }}",
|
"legendFormat": "{{ name }}",
|
||||||
"metric": "container_cpu_user_seconds_total",
|
"metric": "container_cpu_user_seconds_total",
|
||||||
@@ -1083,14 +1076,16 @@
|
|||||||
{
|
{
|
||||||
"datasource": {
|
"datasource": {
|
||||||
"type": "prometheus",
|
"type": "prometheus",
|
||||||
"uid": "$DS_PROMETHEUS"
|
"uid": "PECBB1E6D5756C6D7"
|
||||||
},
|
},
|
||||||
"exemplar": true,
|
"exemplar": true,
|
||||||
"expr": "sum by (name)(container_memory_usage_bytes{image!=\"\",container_label_org_label_schema_group=\"\"})",
|
"expr": "sum by (name)(container_memory_usage_bytes{image!=\"\",container_label_org_label_schema_group=\"\"})",
|
||||||
"hide": false,
|
|
||||||
"interval": "",
|
"interval": "",
|
||||||
|
"intervalFactor": 1,
|
||||||
"legendFormat": "{{ name }}",
|
"legendFormat": "{{ name }}",
|
||||||
"refId": "A"
|
"metric": "container_memory_usage",
|
||||||
|
"refId": "A",
|
||||||
|
"step": 1
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"title": "Container Memory Usage",
|
"title": "Container Memory Usage",
|
||||||
@@ -1383,9 +1378,9 @@
|
|||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"current": {
|
"current": {
|
||||||
"selected": true,
|
"selected": false,
|
||||||
"text": "rpc-de-01",
|
"text": "rpc-node",
|
||||||
"value": "rpc-de-01"
|
"value": "rpc-node"
|
||||||
},
|
},
|
||||||
"hide": 0,
|
"hide": 0,
|
||||||
"includeAll": false,
|
"includeAll": false,
|
||||||
@@ -1403,7 +1398,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"time": {
|
"time": {
|
||||||
"from": "now-15m",
|
"from": "now-2d",
|
||||||
"to": "now"
|
"to": "now"
|
||||||
},
|
},
|
||||||
"timepicker": {
|
"timepicker": {
|
||||||
@@ -1432,8 +1427,8 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"timezone": "browser",
|
"timezone": "browser",
|
||||||
"title": "chain container metrics",
|
"title": "Chain Container Metrics",
|
||||||
"uid": "vbznma07k",
|
"uid": "vbznma07k",
|
||||||
"version": 3,
|
"version": 25,
|
||||||
"weekStart": ""
|
"weekStart": ""
|
||||||
}
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -3231,7 +3231,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"timezone": "browser",
|
"timezone": "browser",
|
||||||
"title": "monitoring containers",
|
"title": "Monitoring Containers",
|
||||||
"uid": "JJznma0nk",
|
"uid": "JJznma0nk",
|
||||||
"version": 7,
|
"version": 7,
|
||||||
"weekStart": ""
|
"weekStart": ""
|
||||||
|
|||||||
@@ -14110,7 +14110,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"timezone": "browser",
|
"timezone": "browser",
|
||||||
"title": "nodeexporter metics",
|
"title": "Node Exporter Full",
|
||||||
"uid": "rYdddlPWk",
|
"uid": "rYdddlPWk",
|
||||||
"version": 67
|
"version": 67
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -5,21 +5,12 @@ datasources:
|
|||||||
type: prometheus
|
type: prometheus
|
||||||
access: proxy
|
access: proxy
|
||||||
orgId: 1
|
orgId: 1
|
||||||
url: http://10.13.13.5:9090
|
url: http://10.13.13.4:9090
|
||||||
basicAuth: false
|
basicAuth: false
|
||||||
isDefault: false
|
isDefault: false
|
||||||
editable: true
|
editable: true
|
||||||
|
|
||||||
- name: rpc-de-04
|
- name: rpc-de-02
|
||||||
type: prometheus
|
|
||||||
access: proxy
|
|
||||||
orgId: 1
|
|
||||||
url: http://10.13.13.7:9090
|
|
||||||
basicAuth: false
|
|
||||||
isDefault: false
|
|
||||||
editable: true
|
|
||||||
|
|
||||||
- name: rpc-fi-01
|
|
||||||
type: prometheus
|
type: prometheus
|
||||||
access: proxy
|
access: proxy
|
||||||
orgId: 1
|
orgId: 1
|
||||||
@@ -28,11 +19,20 @@ datasources:
|
|||||||
isDefault: false
|
isDefault: false
|
||||||
editable: true
|
editable: true
|
||||||
|
|
||||||
- name: rpc-fi-04
|
- name: rpc-fi-01
|
||||||
type: prometheus
|
type: prometheus
|
||||||
access: proxy
|
access: proxy
|
||||||
orgId: 1
|
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
|
basicAuth: false
|
||||||
isDefault: false
|
isDefault: false
|
||||||
editable: true
|
editable: true
|
||||||
@@ -54,3 +54,21 @@ datasources:
|
|||||||
basicAuth: false
|
basicAuth: false
|
||||||
isDefault: false
|
isDefault: false
|
||||||
editable: true
|
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
|
||||||
@@ -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
|
|
||||||
25
haproxy/avalanche-healthcheck.sh
Normal file
25
haproxy/avalanche-healthcheck.sh
Normal 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/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}' 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
|
||||||
25
haproxy/erigon-healthcheck.sh
Normal file
25
haproxy/erigon-healthcheck.sh
Normal 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
|
||||||
25
haproxy/geth-healthcheck.sh
Normal file
25
haproxy/geth-healthcheck.sh
Normal 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
|
||||||
25
haproxy/goerli-healthcheck.sh
Normal file
25
haproxy/goerli-healthcheck.sh
Normal 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
|
||||||
25
haproxy/rinkeby-healthcheck.sh
Normal file
25
haproxy/rinkeby-healthcheck.sh
Normal 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
|
||||||
25
haproxy/ropsten-healthcheck.sh
Normal file
25
haproxy/ropsten-healthcheck.sh
Normal 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
|
||||||
43
harmony.yml
43
harmony.yml
@@ -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
19
harmony/README_HARMONY.md
Normal 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)
|
||||||
@@ -1,86 +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-de-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_DE_1_POCKET_CORE_KEY
|
|
||||||
- POCKET_CORE_PASSPHRASE=$POKT_DE_1_POCKET_CORE_PASSPHRASE
|
|
||||||
- POCKET_SNAPSHOT=$POCKET_SNAPSHOT
|
|
||||||
volumes:
|
|
||||||
- pocket-de-1:/home/app/.pocket/data
|
|
||||||
- pocket-de-1-addrbook:/home/app/.pocket/addrbook
|
|
||||||
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_DE_1_DOMAIN`) && Path(`/v1`, `/v1/client/{dispatch|relay|challenge|sim}`)"
|
|
||||||
- "prometheus-scrape.enabled=true"
|
|
||||||
- "prometheus-scrape.port=8083"
|
|
||||||
- "prometheus-scrape.job_name=pocket-de-1"
|
|
||||||
|
|
||||||
|
|
||||||
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-de-1:
|
|
||||||
pocket-de-1-addrbook:
|
|
||||||
|
|
||||||
@@ -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:
|
|
||||||
117
pocket-lt.yml
117
pocket-lt.yml
@@ -1,117 +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"
|
|
||||||
|
|
||||||
|
|
||||||
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:
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
FROM poktnetwork/pocket-core:RC-0.9.1.1
|
|
||||||
|
|
||||||
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=361b1936d3fbe516628ebd6a503920fc4fc0f6a7@seed.pokt.rivet.cloud:26656,03b74fa3c68356bb40d58ecc10129479b159a145@seed1.mainnet.pokt.network:20656,64c91701ea98440bc3674fdb9a99311461cdfd6f@seed2.mainnet.pokt.network:21656,0057ee693f3ce332c4ffcb499ede024c586ae37b@seed3.mainnet.pokt.network:22856,9fd99b89947c6af57cd0269ad01ecb99960177cd@seed4.mainnet.pokt.network:23856,1243026603e9073507a3157bc4de99da74a078fc@seed5.mainnet.pokt.network:24856,6282b55feaff460bb35820363f1eb26237cf5ac3@seed6.mainnet.pokt.network:25856,3640ee055889befbc912dd7d3ed27d6791139395@seed7.mainnet.pokt.network:26856,1951cded4489bf51af56f3dbdd6df55c1a952b1a@seed8.mainnet.pokt.network:27856,a5f4a4cd88db9fd5def1574a0bffef3c6f354a76@seed9.mainnet.pokt.network:28856,d4039bd71d48def9f9f61f670c098b8956e52a08@seed10.mainnet.pokt.network:29856,5c133f07ed296bb9e21e3e42d5f26e0f7d2b2832@poktseed100.chainflow.io:26656
|
|
||||||
|
|
||||||
CMD ["bash", "/home/app/.pocket/bootstrap.sh", "&&", "pocket", "start", "--seeds", "361b1936d3fbe516628ebd6a503920fc4fc0f6a7@seed.pokt.rivet.cloud:26656,03b74fa3c68356bb40d58ecc10129479b159a145@seed1.mainnet.pokt.network:20656,64c91701ea98440bc3674fdb9a99311461cdfd6f@seed2.mainnet.pokt.network:21656,0057ee693f3ce332c4ffcb499ede024c586ae37b@seed3.mainnet.pokt.network:22856,9fd99b89947c6af57cd0269ad01ecb99960177cd@seed4.mainnet.pokt.network:23856,1243026603e9073507a3157bc4de99da74a078fc@seed5.mainnet.pokt.network:24856,6282b55feaff460bb35820363f1eb26237cf5ac3@seed6.mainnet.pokt.network:25856,3640ee055889befbc912dd7d3ed27d6791139395@seed7.mainnet.pokt.network:26856,1951cded4489bf51af56f3dbdd6df55c1a952b1a@seed8.mainnet.pokt.network:27856,a5f4a4cd88db9fd5def1574a0bffef3c6f354a76@seed9.mainnet.pokt.network:28856,d4039bd71d48def9f9f61f670c098b8956e52a08@seed10.mainnet.pokt.network:29856,5c133f07ed296bb9e21e3e42d5f26e0f7d2b2832@poktseed100.chainflow.io:26656", "--mainnet"]
|
|
||||||
@@ -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
|
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
"Seeds": "",
|
"Seeds": "",
|
||||||
"PersistentPeers": "",
|
"PersistentPeers": "",
|
||||||
"UPNP": false,
|
"UPNP": false,
|
||||||
"AddrBook": "addrbook/addrbook.json",
|
"AddrBook": "config/addrbook.json",
|
||||||
"AddrBookStrict": false,
|
"AddrBookStrict": false,
|
||||||
"MaxNumInboundPeers": 14,
|
"MaxNumInboundPeers": 14,
|
||||||
"MaxNumOutboundPeers": 7,
|
"MaxNumOutboundPeers": 7,
|
||||||
@@ -130,6 +130,7 @@
|
|||||||
"data_dir": "/home/app/.pocket",
|
"data_dir": "/home/app/.pocket",
|
||||||
"genesis_file": "genesis.json",
|
"genesis_file": "genesis.json",
|
||||||
"chains_name": "chains.json",
|
"chains_name": "chains.json",
|
||||||
|
"session_db_name": "session",
|
||||||
"evidence_db_name": "pocket_evidence",
|
"evidence_db_name": "pocket_evidence",
|
||||||
"tendermint_uri": "tcp://localhost:26657",
|
"tendermint_uri": "tcp://localhost:26657",
|
||||||
"keybase_name": "pocket-keybase",
|
"keybase_name": "pocket-keybase",
|
||||||
@@ -140,9 +141,9 @@
|
|||||||
"json_sort_relay_responses": true,
|
"json_sort_relay_responses": true,
|
||||||
"remote_cli_url": "http://localhost:8081",
|
"remote_cli_url": "http://localhost:8081",
|
||||||
"user_agent": "",
|
"user_agent": "",
|
||||||
"validator_cache_size": 40000,
|
"validator_cache_size": 10000,
|
||||||
"application_cache_size": 10000,
|
"application_cache_size": 10000,
|
||||||
"rpc_timeout": 30000,
|
"rpc_timeout": 60000,
|
||||||
"pocket_prometheus_port": "8083",
|
"pocket_prometheus_port": "8083",
|
||||||
"prometheus_max_open_files": 3,
|
"prometheus_max_open_files": 3,
|
||||||
"max_claim_age_for_proof_retry": 32,
|
"max_claim_age_for_proof_retry": 32,
|
||||||
@@ -150,8 +151,6 @@
|
|||||||
"ctx_cache_size": 20,
|
"ctx_cache_size": 20,
|
||||||
"abci_logging": false,
|
"abci_logging": false,
|
||||||
"show_relay_errors": true,
|
"show_relay_errors": true,
|
||||||
"disable_tx_events": true,
|
"disable_tx_events": true
|
||||||
"iavl_cache_size": 5000000,
|
|
||||||
"chains_hot_reload": false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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:
|
|
||||||
@@ -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:
|
|
||||||
@@ -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:
|
|
||||||
@@ -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" ]
|
|
||||||
@@ -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
|
|
||||||
@@ -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" ]
|
|
||||||
@@ -1,33 +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}/bor/chaindata
|
|
||||||
wget --tries=0 -O - "${SNAPSHOT_URL}" | tar -xz -C ${ERIGON_HOME}/bor/chaindata && 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} \
|
|
||||||
--snap.keepblocks=true \
|
|
||||||
--metrics --metrics.addr=0.0.0.0 --metrics.port=6060 \
|
|
||||||
--pprof --pprof.addr=0.0.0.0 --pprof.port=6061
|
|
||||||
@@ -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" ]
|
|
||||||
@@ -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}
|
|
||||||
41
prometheus/prometheus-harmony.yml
Normal file
41
prometheus/prometheus-harmony.yml
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
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: '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']
|
||||||
75
prometheus/prometheus-lt-1.yml
Normal file
75
prometheus/prometheus-lt-1.yml
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
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: 'haproxy'
|
||||||
|
scrape_interval: 10s
|
||||||
|
honor_labels: true
|
||||||
|
static_configs:
|
||||||
|
- targets: ['haproxy:8404']
|
||||||
|
|
||||||
|
- 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']
|
||||||
85
prometheus/prometheus-rpc.yml
Normal file
85
prometheus/prometheus-rpc.yml
Normal 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
|
||||||
@@ -13,6 +13,15 @@ rule_files:
|
|||||||
|
|
||||||
# A scrape configuration containing exactly one endpoint to scrape.
|
# A scrape configuration containing exactly one endpoint to scrape.
|
||||||
scrape_configs:
|
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'
|
- job_name: 'prometheus'
|
||||||
scrape_interval: 10s
|
scrape_interval: 10s
|
||||||
55
prometheus/prometheus.yml
Normal file
55
prometheus/prometheus.yml
Normal 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']
|
||||||
29
prysm.yml
29
prysm.yml
@@ -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:
|
|
||||||
@@ -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
18
util/prepare.sh
Executable 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
22
util/relay.sh
Normal 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
16
util/test_relay.sh
Normal 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
|
||||||
30
xdai.yml
30
xdai.yml
@@ -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:
|
|
||||||
Reference in New Issue
Block a user