diff --git a/linea/besu/linea-mainnet-besu-pruned-bonsai.yml b/linea/besu/linea-mainnet-besu-pruned-bonsai.yml
index 09a748eb..ec569894 100644
--- a/linea/besu/linea-mainnet-besu-pruned-bonsai.yml
+++ b/linea/besu/linea-mainnet-besu-pruned-bonsai.yml
@@ -57,6 +57,10 @@ services:
- --Xeth-capability-max=67
- --data-path=/opt/besu/database
- --data-storage-format=BONSAI
+ - --engine-host-allowlist=*
+ - --engine-jwt-secret=/jwtsecret
+ - --engine-rpc-enabled=true
+ - --engine-rpc-port=8551
- --fast-sync-min-peers=1
- --host-allowlist=*
- --metrics-enabled=true
@@ -83,6 +87,7 @@ services:
volumes:
- ${LINEA_MAINNET_BESU_PRUNED_BONSAI_DATA:-linea-mainnet-besu-pruned-bonsai}:/opt/besu/database
- ./linea/mainnet:/config
+ - .jwtsecret:/jwtsecret:ro
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
@@ -108,8 +113,44 @@ services:
- ${NO_SSL:+traefik.http.routers.linea-mainnet-besu-pruned-bonsai-ws.rule=(Path(`/linea-mainnet`) || Path(`/linea-mainnet/`)) && Headers(`Upgrade`, `websocket`)}
- traefik.http.routers.linea-mainnet-besu-pruned-bonsai-ws.middlewares=linea-mainnet-besu-pruned-bonsai-stripprefix, ipallowlist
+ linea-mainnet-node:
+ build:
+ context: ./linea
+ dockerfile: maru.Dockerfile
+ args:
+ MARU_IMAGE: ${LINEA_MAINNET_MARU_IMAGE:-consensys/maru}
+ MARU_VERSION: ${LINEA_MAINNET_MARU_VERSION:-bcfdb43}
+ ports:
+ - 19816:19816
+ - 19816:19816/udp
+ expose:
+ - 8080
+ environment:
+ - EL_HOST=linea-mainnet
+ - IP=${IP}
+ - L1_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}
+ - P2P_PORT=19816
+ entrypoint: [/bin/bash, -c]
+ command:
+ - |
+ envsubst < /config/maru/config.toml.template > /config.toml
+ exec java -Dlog4j2.configurationFile=/config/maru/log4j.xml -jar /opt/consensys/maru/maru.jar --config=/config.toml --maru-genesis-file=/config/maru/genesis.json "$@"
+ restart: unless-stopped
+ networks:
+ - chains
+ volumes:
+ - ${LINEA_MAINNET_BESU_PRUNED_BONSAI__MARU_DATA:-linea-mainnet-besu-pruned-bonsai_maru}:/opt/maru/data
+ - ./linea/mainnet:/config
+ - .jwtsecret:/jwtsecret:ro
+ logging: *logging-defaults
+ labels:
+ - prometheus-scrape.enabled=true
+ - prometheus-scrape.port=9090
+ - prometheus-scrape.path=/debug/metrics/prometheus
+
volumes:
linea-mainnet-besu-pruned-bonsai:
+ linea-mainnet-besu-pruned-bonsai_maru:
x-upstreams:
- id: $${ID}
diff --git a/linea/besu/linea-sepolia-besu-pruned-bonsai.yml b/linea/besu/linea-sepolia-besu-pruned-bonsai.yml
index 3535ae05..b56ffe77 100644
--- a/linea/besu/linea-sepolia-besu-pruned-bonsai.yml
+++ b/linea/besu/linea-sepolia-besu-pruned-bonsai.yml
@@ -57,6 +57,10 @@ services:
- --Xeth-capability-max=67
- --data-path=/opt/besu/database
- --data-storage-format=BONSAI
+ - --engine-host-allowlist=*
+ - --engine-jwt-secret=/jwtsecret
+ - --engine-rpc-enabled=true
+ - --engine-rpc-port=8551
- --fast-sync-min-peers=1
- --host-allowlist=*
- --metrics-enabled=true
@@ -83,6 +87,7 @@ services:
volumes:
- ${LINEA_SEPOLIA_BESU_PRUNED_BONSAI_DATA:-linea-sepolia-besu-pruned-bonsai}:/opt/besu/database
- ./linea/sepolia:/config
+ - .jwtsecret:/jwtsecret:ro
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
@@ -108,8 +113,44 @@ services:
- ${NO_SSL:+traefik.http.routers.linea-sepolia-besu-pruned-bonsai-ws.rule=(Path(`/linea-sepolia`) || Path(`/linea-sepolia/`)) && Headers(`Upgrade`, `websocket`)}
- traefik.http.routers.linea-sepolia-besu-pruned-bonsai-ws.middlewares=linea-sepolia-besu-pruned-bonsai-stripprefix, ipallowlist
+ linea-sepolia-node:
+ build:
+ context: ./linea
+ dockerfile: maru.Dockerfile
+ args:
+ MARU_IMAGE: ${LINEA_SEPOLIA_MARU_IMAGE:-consensys/maru}
+ MARU_VERSION: ${LINEA_SEPOLIA_MARU_VERSION:-bcfdb43}
+ ports:
+ - 19691:19691
+ - 19691:19691/udp
+ expose:
+ - 8080
+ environment:
+ - EL_HOST=linea-sepolia
+ - IP=${IP}
+ - L1_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
+ - P2P_PORT=19691
+ entrypoint: [/bin/bash, -c]
+ command:
+ - |
+ envsubst < /config/maru/config.toml.template > /config.toml
+ exec java -Dlog4j2.configurationFile=/config/maru/log4j.xml -jar /opt/consensys/maru/maru.jar --config=/config.toml --maru-genesis-file=/config/maru/genesis.json "$@"
+ restart: unless-stopped
+ networks:
+ - chains
+ volumes:
+ - ${LINEA_SEPOLIA_BESU_PRUNED_BONSAI__MARU_DATA:-linea-sepolia-besu-pruned-bonsai_maru}:/opt/maru/data
+ - ./linea/sepolia:/config
+ - .jwtsecret:/jwtsecret:ro
+ logging: *logging-defaults
+ labels:
+ - prometheus-scrape.enabled=true
+ - prometheus-scrape.port=9090
+ - prometheus-scrape.path=/debug/metrics/prometheus
+
volumes:
linea-sepolia-besu-pruned-bonsai:
+ linea-sepolia-besu-pruned-bonsai_maru:
x-upstreams:
- id: $${ID}
diff --git a/linea/erigon3/linea-mainnet-erigon3-archive-trace.yml b/linea/erigon3/linea-mainnet-erigon3-archive-trace.yml
index 49fe51c5..e7dcc8e1 100644
--- a/linea/erigon3/linea-mainnet-erigon3-archive-trace.yml
+++ b/linea/erigon3/linea-mainnet-erigon3-archive-trace.yml
@@ -61,6 +61,7 @@ services:
- --bootnodes=enode://069800db9e6e0ec9cadca670994ef1aea2cfd3d88133e63ecadbc1cdbd1a5847b09838ee08d8b5f02a9c32ee13abeb4d4104bb5514e5322c9d7ee19f41ff3e51@3.132.73.210:31002,enode://a8e03a71eab12ec4b47bb6e19169d8e4dc7a58373a2476969bbe463f2dded6003037fa4dd5f71e15027f7fc8d7340956fbbefed67ddd116ac19a7f74da034b61@3.132.73.210:31003,enode://97706526cf79df9d930003644f9156805f6c8bd964fc79e083444f7014ce10c9bdd2c5049e63b58040dca1d4c82ebef970822198cf0714de830cff4111534ff1@18.223.198.165:31004,enode://24e1c654a801975a96b7f54ebd7452ab15777fc635c1db25bdbd4425fdb04e7f4768e9e838a87ab724320a765e41631d5d37758c933ad0e8668693558125c8aa@18.223.198.165:31000,enode://27010891d960f73d272a553f72b6336c6698db3ade98d631f09c764e57674a797be5ebc6829ddbb65ab564f439ebc75215d20aa98b6f351d12ea623e7d139ac3@3.132.73.210:31001,enode://228e1b8a4931e46f383e30721dac21fb8fb4e5e1b32c870e13b25478c82db3dc1cd9e7ceb93d302a766466b55638cc9c5cbfc43aa48fa41ced19baf365951f76@3.1.142.64:31002,enode://c22eb0d40fc3ad5ea710aeddea906567778166bfe18c157955e8c39b23a46c45db18a0fa2ba07f2b64c81178a8c796aec2a29151533920ead06fcdfc6d8d03c6@47.128.192.57:31004,enode://8ce733abe39fd7ae0a278b9893f85c1193c611a3886168690dd843435460f22cc4d61f9e8d0ace7f5905836a665319a31cccdaacdada2acc69972c382ecce7db@3.1.142.64:31003,enode://b7c1b2bed65a855f7a2104aac9a14674dfdf018fdac763415b373b29ce18cdb81d36328ba4e5c9f12629f3a50c3e8f9ee048f22dbdbe93a82813da89c6b81334@51.20.235.126:31004,enode://95270e0550848a72fb141cf27f1c4ea10714edde365b411dc0fa06c81c0f282ce155eb9fa472b6b8bb9ee98395eeaf4c5a7b02a01fe58b37ea98ba152eda4c37@13.50.94.193:31000,enode://72013391755f24f08567b932feeeec4c893c06e0b1fb480890c83bf87fd277ad86a5ab9cb586db9ae9970371a2f8cb0c96f6c9f69045abca0fb801db7f047138@51.20.235.126:31001
- --datadir=/root/.local/share/erigon
- --db.size.limit=600GB
+ - --externalcl=true
- --http
- --http.addr=0.0.0.0
- --http.api=eth,erigon,web3,net,debug,trace,txpool,admin,ots
@@ -90,6 +91,7 @@ services:
volumes:
- ${LINEA_MAINNET_ERIGON3_ARCHIVE_TRACE_DATA:-linea-mainnet-erigon3-archive-trace}:/root/.local/share/erigon
- ./linea/mainnet:/config
+ - .jwtsecret:/jwtsecret:ro
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
@@ -106,8 +108,44 @@ services:
- traefik.http.routers.linea-mainnet-erigon3-archive-trace.middlewares=linea-mainnet-erigon3-archive-trace-stripprefix, ipallowlist
shm_size: 2gb
+ linea-mainnet-erigon3-archive-node:
+ build:
+ context: ./linea
+ dockerfile: maru.Dockerfile
+ args:
+ MARU_IMAGE: ${LINEA_MAINNET_MARU_IMAGE:-consensys/maru}
+ MARU_VERSION: ${LINEA_MAINNET_MARU_VERSION:-bcfdb43}
+ ports:
+ - 15060:15060
+ - 15060:15060/udp
+ expose:
+ - 8080
+ environment:
+ - EL_HOST=linea-mainnet-erigon3-archive
+ - IP=${IP}
+ - L1_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}
+ - P2P_PORT=15060
+ entrypoint: [/bin/bash, -c]
+ command:
+ - |
+ envsubst < /config/maru/config.toml.template > /config.toml
+ exec java -Dlog4j2.configurationFile=/config/maru/log4j.xml -jar /opt/consensys/maru/maru.jar --config=/config.toml --maru-genesis-file=/config/maru/genesis.json "$@"
+ restart: unless-stopped
+ networks:
+ - chains
+ volumes:
+ - ${LINEA_MAINNET_ERIGON3_ARCHIVE_TRACE__MARU_DATA:-linea-mainnet-erigon3-archive-trace_maru}:/opt/maru/data
+ - ./linea/mainnet:/config
+ - .jwtsecret:/jwtsecret:ro
+ logging: *logging-defaults
+ labels:
+ - prometheus-scrape.enabled=true
+ - prometheus-scrape.port=9090
+ - prometheus-scrape.path=/debug/metrics/prometheus
+
volumes:
linea-mainnet-erigon3-archive-trace:
+ linea-mainnet-erigon3-archive-trace_maru:
x-upstreams:
- id: $${ID}
diff --git a/linea/erigon3/linea-mainnet-erigon3-minimal-trace.yml b/linea/erigon3/linea-mainnet-erigon3-minimal-trace.yml
index 24c245fd..76ee0d5b 100644
--- a/linea/erigon3/linea-mainnet-erigon3-minimal-trace.yml
+++ b/linea/erigon3/linea-mainnet-erigon3-minimal-trace.yml
@@ -61,6 +61,7 @@ services:
- --bootnodes=enode://069800db9e6e0ec9cadca670994ef1aea2cfd3d88133e63ecadbc1cdbd1a5847b09838ee08d8b5f02a9c32ee13abeb4d4104bb5514e5322c9d7ee19f41ff3e51@3.132.73.210:31002,enode://a8e03a71eab12ec4b47bb6e19169d8e4dc7a58373a2476969bbe463f2dded6003037fa4dd5f71e15027f7fc8d7340956fbbefed67ddd116ac19a7f74da034b61@3.132.73.210:31003,enode://97706526cf79df9d930003644f9156805f6c8bd964fc79e083444f7014ce10c9bdd2c5049e63b58040dca1d4c82ebef970822198cf0714de830cff4111534ff1@18.223.198.165:31004,enode://24e1c654a801975a96b7f54ebd7452ab15777fc635c1db25bdbd4425fdb04e7f4768e9e838a87ab724320a765e41631d5d37758c933ad0e8668693558125c8aa@18.223.198.165:31000,enode://27010891d960f73d272a553f72b6336c6698db3ade98d631f09c764e57674a797be5ebc6829ddbb65ab564f439ebc75215d20aa98b6f351d12ea623e7d139ac3@3.132.73.210:31001,enode://228e1b8a4931e46f383e30721dac21fb8fb4e5e1b32c870e13b25478c82db3dc1cd9e7ceb93d302a766466b55638cc9c5cbfc43aa48fa41ced19baf365951f76@3.1.142.64:31002,enode://c22eb0d40fc3ad5ea710aeddea906567778166bfe18c157955e8c39b23a46c45db18a0fa2ba07f2b64c81178a8c796aec2a29151533920ead06fcdfc6d8d03c6@47.128.192.57:31004,enode://8ce733abe39fd7ae0a278b9893f85c1193c611a3886168690dd843435460f22cc4d61f9e8d0ace7f5905836a665319a31cccdaacdada2acc69972c382ecce7db@3.1.142.64:31003,enode://b7c1b2bed65a855f7a2104aac9a14674dfdf018fdac763415b373b29ce18cdb81d36328ba4e5c9f12629f3a50c3e8f9ee048f22dbdbe93a82813da89c6b81334@51.20.235.126:31004,enode://95270e0550848a72fb141cf27f1c4ea10714edde365b411dc0fa06c81c0f282ce155eb9fa472b6b8bb9ee98395eeaf4c5a7b02a01fe58b37ea98ba152eda4c37@13.50.94.193:31000,enode://72013391755f24f08567b932feeeec4c893c06e0b1fb480890c83bf87fd277ad86a5ab9cb586db9ae9970371a2f8cb0c96f6c9f69045abca0fb801db7f047138@51.20.235.126:31001
- --datadir=/root/.local/share/erigon
- --db.size.limit=600GB
+ - --externalcl=true
- --http
- --http.addr=0.0.0.0
- --http.api=eth,erigon,web3,net,debug,trace,txpool,admin,ots
@@ -91,6 +92,7 @@ services:
volumes:
- ${LINEA_MAINNET_ERIGON3_MINIMAL_TRACE_DATA:-linea-mainnet-erigon3-minimal-trace}:/root/.local/share/erigon
- ./linea/mainnet:/config
+ - .jwtsecret:/jwtsecret:ro
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
@@ -107,8 +109,44 @@ services:
- traefik.http.routers.linea-mainnet-erigon3-minimal-trace.middlewares=linea-mainnet-erigon3-minimal-trace-stripprefix, ipallowlist
shm_size: 2gb
+ linea-mainnet-erigon3-minimal-node:
+ build:
+ context: ./linea
+ dockerfile: maru.Dockerfile
+ args:
+ MARU_IMAGE: ${LINEA_MAINNET_MARU_IMAGE:-consensys/maru}
+ MARU_VERSION: ${LINEA_MAINNET_MARU_VERSION:-bcfdb43}
+ ports:
+ - 19000:19000
+ - 19000:19000/udp
+ expose:
+ - 8080
+ environment:
+ - EL_HOST=linea-mainnet-erigon3-minimal
+ - IP=${IP}
+ - L1_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}
+ - P2P_PORT=19000
+ entrypoint: [/bin/bash, -c]
+ command:
+ - |
+ envsubst < /config/maru/config.toml.template > /config.toml
+ exec java -Dlog4j2.configurationFile=/config/maru/log4j.xml -jar /opt/consensys/maru/maru.jar --config=/config.toml --maru-genesis-file=/config/maru/genesis.json "$@"
+ restart: unless-stopped
+ networks:
+ - chains
+ volumes:
+ - ${LINEA_MAINNET_ERIGON3_MINIMAL_TRACE__MARU_DATA:-linea-mainnet-erigon3-minimal-trace_maru}:/opt/maru/data
+ - ./linea/mainnet:/config
+ - .jwtsecret:/jwtsecret:ro
+ logging: *logging-defaults
+ labels:
+ - prometheus-scrape.enabled=true
+ - prometheus-scrape.port=9090
+ - prometheus-scrape.path=/debug/metrics/prometheus
+
volumes:
linea-mainnet-erigon3-minimal-trace:
+ linea-mainnet-erigon3-minimal-trace_maru:
x-upstreams:
- id: $${ID}
diff --git a/linea/erigon3/linea-mainnet-erigon3-pruned-trace.yml b/linea/erigon3/linea-mainnet-erigon3-pruned-trace.yml
index 22df05c2..b7ef75f8 100644
--- a/linea/erigon3/linea-mainnet-erigon3-pruned-trace.yml
+++ b/linea/erigon3/linea-mainnet-erigon3-pruned-trace.yml
@@ -61,6 +61,7 @@ services:
- --bootnodes=enode://069800db9e6e0ec9cadca670994ef1aea2cfd3d88133e63ecadbc1cdbd1a5847b09838ee08d8b5f02a9c32ee13abeb4d4104bb5514e5322c9d7ee19f41ff3e51@3.132.73.210:31002,enode://a8e03a71eab12ec4b47bb6e19169d8e4dc7a58373a2476969bbe463f2dded6003037fa4dd5f71e15027f7fc8d7340956fbbefed67ddd116ac19a7f74da034b61@3.132.73.210:31003,enode://97706526cf79df9d930003644f9156805f6c8bd964fc79e083444f7014ce10c9bdd2c5049e63b58040dca1d4c82ebef970822198cf0714de830cff4111534ff1@18.223.198.165:31004,enode://24e1c654a801975a96b7f54ebd7452ab15777fc635c1db25bdbd4425fdb04e7f4768e9e838a87ab724320a765e41631d5d37758c933ad0e8668693558125c8aa@18.223.198.165:31000,enode://27010891d960f73d272a553f72b6336c6698db3ade98d631f09c764e57674a797be5ebc6829ddbb65ab564f439ebc75215d20aa98b6f351d12ea623e7d139ac3@3.132.73.210:31001,enode://228e1b8a4931e46f383e30721dac21fb8fb4e5e1b32c870e13b25478c82db3dc1cd9e7ceb93d302a766466b55638cc9c5cbfc43aa48fa41ced19baf365951f76@3.1.142.64:31002,enode://c22eb0d40fc3ad5ea710aeddea906567778166bfe18c157955e8c39b23a46c45db18a0fa2ba07f2b64c81178a8c796aec2a29151533920ead06fcdfc6d8d03c6@47.128.192.57:31004,enode://8ce733abe39fd7ae0a278b9893f85c1193c611a3886168690dd843435460f22cc4d61f9e8d0ace7f5905836a665319a31cccdaacdada2acc69972c382ecce7db@3.1.142.64:31003,enode://b7c1b2bed65a855f7a2104aac9a14674dfdf018fdac763415b373b29ce18cdb81d36328ba4e5c9f12629f3a50c3e8f9ee048f22dbdbe93a82813da89c6b81334@51.20.235.126:31004,enode://95270e0550848a72fb141cf27f1c4ea10714edde365b411dc0fa06c81c0f282ce155eb9fa472b6b8bb9ee98395eeaf4c5a7b02a01fe58b37ea98ba152eda4c37@13.50.94.193:31000,enode://72013391755f24f08567b932feeeec4c893c06e0b1fb480890c83bf87fd277ad86a5ab9cb586db9ae9970371a2f8cb0c96f6c9f69045abca0fb801db7f047138@51.20.235.126:31001
- --datadir=/root/.local/share/erigon
- --db.size.limit=600GB
+ - --externalcl=true
- --http
- --http.addr=0.0.0.0
- --http.api=eth,erigon,web3,net,debug,trace,txpool,admin,ots
@@ -90,6 +91,7 @@ services:
volumes:
- ${LINEA_MAINNET_ERIGON3_PRUNED_TRACE_DATA:-linea-mainnet-erigon3-pruned-trace}:/root/.local/share/erigon
- ./linea/mainnet:/config
+ - .jwtsecret:/jwtsecret:ro
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
@@ -106,8 +108,44 @@ services:
- traefik.http.routers.linea-mainnet-erigon3-pruned-trace.middlewares=linea-mainnet-erigon3-pruned-trace-stripprefix, ipallowlist
shm_size: 2gb
+ linea-mainnet-erigon3-node:
+ build:
+ context: ./linea
+ dockerfile: maru.Dockerfile
+ args:
+ MARU_IMAGE: ${LINEA_MAINNET_MARU_IMAGE:-consensys/maru}
+ MARU_VERSION: ${LINEA_MAINNET_MARU_VERSION:-bcfdb43}
+ ports:
+ - 17622:17622
+ - 17622:17622/udp
+ expose:
+ - 8080
+ environment:
+ - EL_HOST=linea-mainnet-erigon3
+ - IP=${IP}
+ - L1_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}
+ - P2P_PORT=17622
+ entrypoint: [/bin/bash, -c]
+ command:
+ - |
+ envsubst < /config/maru/config.toml.template > /config.toml
+ exec java -Dlog4j2.configurationFile=/config/maru/log4j.xml -jar /opt/consensys/maru/maru.jar --config=/config.toml --maru-genesis-file=/config/maru/genesis.json "$@"
+ restart: unless-stopped
+ networks:
+ - chains
+ volumes:
+ - ${LINEA_MAINNET_ERIGON3_PRUNED_TRACE__MARU_DATA:-linea-mainnet-erigon3-pruned-trace_maru}:/opt/maru/data
+ - ./linea/mainnet:/config
+ - .jwtsecret:/jwtsecret:ro
+ logging: *logging-defaults
+ labels:
+ - prometheus-scrape.enabled=true
+ - prometheus-scrape.port=9090
+ - prometheus-scrape.path=/debug/metrics/prometheus
+
volumes:
linea-mainnet-erigon3-pruned-trace:
+ linea-mainnet-erigon3-pruned-trace_maru:
x-upstreams:
- id: $${ID}
diff --git a/linea/erigon3/linea-sepolia-erigon3-archive-trace.yml b/linea/erigon3/linea-sepolia-erigon3-archive-trace.yml
index 543d9617..7398af79 100644
--- a/linea/erigon3/linea-sepolia-erigon3-archive-trace.yml
+++ b/linea/erigon3/linea-sepolia-erigon3-archive-trace.yml
@@ -61,6 +61,7 @@ services:
- --bootnodes=enode://6f20afbe4397e51b717a7c1ad3095e79aee48c835eebd9237a3e8a16951ade1fe0e66e981e30ea269849fcb6ba03d838da37f524fabd2a557474194a2e2604fa@18.221.100.27:31002,enode://ce1e0d8e0500cb5c0ac56bdcdafb2d6320c3a2c5125b5ccf12f5dfc9b47ee74acbcafc32559017613136c9c36a0ce74ba4f83b7fb8244f099f3b15708d9d3129@3.23.75.47:31000,enode://1b026a5eb0ae74300f58987d235ef0e3a550df963345cb3574be3b0b54378bd11f14dfd515a8976f2c2d2826090e9507b8ccc24f896a9ffffffcabcfd996a733@3.129.120.128:31001
- --datadir=/root/.local/share/erigon
- --db.size.limit=600GB
+ - --externalcl=true
- --http
- --http.addr=0.0.0.0
- --http.api=eth,erigon,web3,net,debug,trace,txpool,admin,ots
@@ -90,6 +91,7 @@ services:
volumes:
- ${LINEA_SEPOLIA_ERIGON3_ARCHIVE_TRACE_DATA:-linea-sepolia-erigon3-archive-trace}:/root/.local/share/erigon
- ./linea/sepolia:/config
+ - .jwtsecret:/jwtsecret:ro
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
@@ -106,8 +108,44 @@ services:
- traefik.http.routers.linea-sepolia-erigon3-archive-trace.middlewares=linea-sepolia-erigon3-archive-trace-stripprefix, ipallowlist
shm_size: 2gb
+ linea-sepolia-erigon3-archive-node:
+ build:
+ context: ./linea
+ dockerfile: maru.Dockerfile
+ args:
+ MARU_IMAGE: ${LINEA_SEPOLIA_MARU_IMAGE:-consensys/maru}
+ MARU_VERSION: ${LINEA_SEPOLIA_MARU_VERSION:-bcfdb43}
+ ports:
+ - 17235:17235
+ - 17235:17235/udp
+ expose:
+ - 8080
+ environment:
+ - EL_HOST=linea-sepolia-erigon3-archive
+ - IP=${IP}
+ - L1_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
+ - P2P_PORT=17235
+ entrypoint: [/bin/bash, -c]
+ command:
+ - |
+ envsubst < /config/maru/config.toml.template > /config.toml
+ exec java -Dlog4j2.configurationFile=/config/maru/log4j.xml -jar /opt/consensys/maru/maru.jar --config=/config.toml --maru-genesis-file=/config/maru/genesis.json "$@"
+ restart: unless-stopped
+ networks:
+ - chains
+ volumes:
+ - ${LINEA_SEPOLIA_ERIGON3_ARCHIVE_TRACE__MARU_DATA:-linea-sepolia-erigon3-archive-trace_maru}:/opt/maru/data
+ - ./linea/sepolia:/config
+ - .jwtsecret:/jwtsecret:ro
+ logging: *logging-defaults
+ labels:
+ - prometheus-scrape.enabled=true
+ - prometheus-scrape.port=9090
+ - prometheus-scrape.path=/debug/metrics/prometheus
+
volumes:
linea-sepolia-erigon3-archive-trace:
+ linea-sepolia-erigon3-archive-trace_maru:
x-upstreams:
- id: $${ID}
diff --git a/linea/erigon3/linea-sepolia-erigon3-minimal-trace.yml b/linea/erigon3/linea-sepolia-erigon3-minimal-trace.yml
index 51c5bdc7..1c99e2b8 100644
--- a/linea/erigon3/linea-sepolia-erigon3-minimal-trace.yml
+++ b/linea/erigon3/linea-sepolia-erigon3-minimal-trace.yml
@@ -61,6 +61,7 @@ services:
- --bootnodes=enode://6f20afbe4397e51b717a7c1ad3095e79aee48c835eebd9237a3e8a16951ade1fe0e66e981e30ea269849fcb6ba03d838da37f524fabd2a557474194a2e2604fa@18.221.100.27:31002,enode://ce1e0d8e0500cb5c0ac56bdcdafb2d6320c3a2c5125b5ccf12f5dfc9b47ee74acbcafc32559017613136c9c36a0ce74ba4f83b7fb8244f099f3b15708d9d3129@3.23.75.47:31000,enode://1b026a5eb0ae74300f58987d235ef0e3a550df963345cb3574be3b0b54378bd11f14dfd515a8976f2c2d2826090e9507b8ccc24f896a9ffffffcabcfd996a733@3.129.120.128:31001
- --datadir=/root/.local/share/erigon
- --db.size.limit=600GB
+ - --externalcl=true
- --http
- --http.addr=0.0.0.0
- --http.api=eth,erigon,web3,net,debug,trace,txpool,admin,ots
@@ -91,6 +92,7 @@ services:
volumes:
- ${LINEA_SEPOLIA_ERIGON3_MINIMAL_TRACE_DATA:-linea-sepolia-erigon3-minimal-trace}:/root/.local/share/erigon
- ./linea/sepolia:/config
+ - .jwtsecret:/jwtsecret:ro
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
@@ -107,8 +109,44 @@ services:
- traefik.http.routers.linea-sepolia-erigon3-minimal-trace.middlewares=linea-sepolia-erigon3-minimal-trace-stripprefix, ipallowlist
shm_size: 2gb
+ linea-sepolia-erigon3-minimal-node:
+ build:
+ context: ./linea
+ dockerfile: maru.Dockerfile
+ args:
+ MARU_IMAGE: ${LINEA_SEPOLIA_MARU_IMAGE:-consensys/maru}
+ MARU_VERSION: ${LINEA_SEPOLIA_MARU_VERSION:-bcfdb43}
+ ports:
+ - 17410:17410
+ - 17410:17410/udp
+ expose:
+ - 8080
+ environment:
+ - EL_HOST=linea-sepolia-erigon3-minimal
+ - IP=${IP}
+ - L1_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
+ - P2P_PORT=17410
+ entrypoint: [/bin/bash, -c]
+ command:
+ - |
+ envsubst < /config/maru/config.toml.template > /config.toml
+ exec java -Dlog4j2.configurationFile=/config/maru/log4j.xml -jar /opt/consensys/maru/maru.jar --config=/config.toml --maru-genesis-file=/config/maru/genesis.json "$@"
+ restart: unless-stopped
+ networks:
+ - chains
+ volumes:
+ - ${LINEA_SEPOLIA_ERIGON3_MINIMAL_TRACE__MARU_DATA:-linea-sepolia-erigon3-minimal-trace_maru}:/opt/maru/data
+ - ./linea/sepolia:/config
+ - .jwtsecret:/jwtsecret:ro
+ logging: *logging-defaults
+ labels:
+ - prometheus-scrape.enabled=true
+ - prometheus-scrape.port=9090
+ - prometheus-scrape.path=/debug/metrics/prometheus
+
volumes:
linea-sepolia-erigon3-minimal-trace:
+ linea-sepolia-erigon3-minimal-trace_maru:
x-upstreams:
- id: $${ID}
diff --git a/linea/erigon3/linea-sepolia-erigon3-pruned-trace.yml b/linea/erigon3/linea-sepolia-erigon3-pruned-trace.yml
index 520eda75..05b43c37 100644
--- a/linea/erigon3/linea-sepolia-erigon3-pruned-trace.yml
+++ b/linea/erigon3/linea-sepolia-erigon3-pruned-trace.yml
@@ -61,6 +61,7 @@ services:
- --bootnodes=enode://6f20afbe4397e51b717a7c1ad3095e79aee48c835eebd9237a3e8a16951ade1fe0e66e981e30ea269849fcb6ba03d838da37f524fabd2a557474194a2e2604fa@18.221.100.27:31002,enode://ce1e0d8e0500cb5c0ac56bdcdafb2d6320c3a2c5125b5ccf12f5dfc9b47ee74acbcafc32559017613136c9c36a0ce74ba4f83b7fb8244f099f3b15708d9d3129@3.23.75.47:31000,enode://1b026a5eb0ae74300f58987d235ef0e3a550df963345cb3574be3b0b54378bd11f14dfd515a8976f2c2d2826090e9507b8ccc24f896a9ffffffcabcfd996a733@3.129.120.128:31001
- --datadir=/root/.local/share/erigon
- --db.size.limit=600GB
+ - --externalcl=true
- --http
- --http.addr=0.0.0.0
- --http.api=eth,erigon,web3,net,debug,trace,txpool,admin,ots
@@ -90,6 +91,7 @@ services:
volumes:
- ${LINEA_SEPOLIA_ERIGON3_PRUNED_TRACE_DATA:-linea-sepolia-erigon3-pruned-trace}:/root/.local/share/erigon
- ./linea/sepolia:/config
+ - .jwtsecret:/jwtsecret:ro
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
@@ -106,8 +108,44 @@ services:
- traefik.http.routers.linea-sepolia-erigon3-pruned-trace.middlewares=linea-sepolia-erigon3-pruned-trace-stripprefix, ipallowlist
shm_size: 2gb
+ linea-sepolia-erigon3-node:
+ build:
+ context: ./linea
+ dockerfile: maru.Dockerfile
+ args:
+ MARU_IMAGE: ${LINEA_SEPOLIA_MARU_IMAGE:-consensys/maru}
+ MARU_VERSION: ${LINEA_SEPOLIA_MARU_VERSION:-bcfdb43}
+ ports:
+ - 15620:15620
+ - 15620:15620/udp
+ expose:
+ - 8080
+ environment:
+ - EL_HOST=linea-sepolia-erigon3
+ - IP=${IP}
+ - L1_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
+ - P2P_PORT=15620
+ entrypoint: [/bin/bash, -c]
+ command:
+ - |
+ envsubst < /config/maru/config.toml.template > /config.toml
+ exec java -Dlog4j2.configurationFile=/config/maru/log4j.xml -jar /opt/consensys/maru/maru.jar --config=/config.toml --maru-genesis-file=/config/maru/genesis.json "$@"
+ restart: unless-stopped
+ networks:
+ - chains
+ volumes:
+ - ${LINEA_SEPOLIA_ERIGON3_PRUNED_TRACE__MARU_DATA:-linea-sepolia-erigon3-pruned-trace_maru}:/opt/maru/data
+ - ./linea/sepolia:/config
+ - .jwtsecret:/jwtsecret:ro
+ logging: *logging-defaults
+ labels:
+ - prometheus-scrape.enabled=true
+ - prometheus-scrape.port=9090
+ - prometheus-scrape.path=/debug/metrics/prometheus
+
volumes:
linea-sepolia-erigon3-pruned-trace:
+ linea-sepolia-erigon3-pruned-trace_maru:
x-upstreams:
- id: $${ID}
diff --git a/linea/mainnet/maru/config.toml.template b/linea/mainnet/maru/config.toml.template
new file mode 100644
index 00000000..17457ba2
--- /dev/null
+++ b/linea/mainnet/maru/config.toml.template
@@ -0,0 +1,54 @@
+# Uncomment the below [linea] section for finalized L2 block tag
+[linea]
+contract-address = "0xd19d4B5d358258f05D7B411E21A1460D11B0876F"
+l1-eth-api = { endpoint = "${L1_RPC}" }
+l1-polling-interval = "6 seconds"
+l1-highest-block-tag = "finalized"
+
+[persistence]
+data-path = "/opt/maru/data"
+private-key-path = "/opt/maru/private-key"
+
+[p2p]
+port = ${P2P_PORT} # Default port (can be same as discovery)
+ip-address = "0.0.0.0"
+static-peers = [
+ "/ip4/18.223.198.165/tcp/31005/p2p/16Uiu2HAmSJSpgBxVoMcRZ4u8CQbTgfPrbw6u7xH1BnMgwAQZAm91",
+ "/ip4/18.190.136.59/tcp/31006/p2p/16Uiu2HAm5DpcTYVLzZf45unDDrY9wYVbqeFnPo4CrpnF3tyXV3o8",
+ "/ip4/13.50.94.193/tcp/31003/p2p/16Uiu2HAmVcX8oB9KxmJdVAGybMyxuqtbY959i6uaew1agDBv9wk3",
+ "/ip4/3.1.142.64/tcp/31000/p2p/16Uiu2HAkuaxfz8ftqSSfG6hKG7B7MCUD9boXvawxKXz9eq7R6Tmi",
+ "/ip4/52.77.66.99/tcp/31001/p2p/16Uiu2HAmGNP9fqUnfCb5v8VAWczW12qmsEnYhNUw2v652Px9Kz5V"
+]
+reconnect-delay = "500ms"
+
+[p2p.discovery]
+port = ${P2P_PORT}
+advertise-ip = ${IP}
+
+[payload-validator]
+# Besu and Geth node as execution layer client
+engine-api-endpoint = { endpoint = "http://${EL_HOST}:8551", jwt-secret-path = "/jwtsecret" }
+eth-api-endpoint = { endpoint = "http://${EL_HOST}:8545" }
+payload-validation-enabled = false
+
+[observability]
+port = 9090
+jvm-metrics-enabled = true
+prometheus-metrics-enabled = true
+
+[api]
+port = 8080
+
+[syncing]
+peer-chain-height-polling-interval = "5s"
+el-sync-status-refresh-interval = "5s"
+sync-target-selection = "Highest"
+desync-tolerance = 0
+
+[syncing.download]
+block-range-request-timeout = "10s"
+blocks-batch-size = 10
+blocks-parallelism = 10
+max-retries = 5
+backoff-delay = "1s"
+use-unconditional-random-download-peer = false
\ No newline at end of file
diff --git a/linea/mainnet/maru/genesis.json b/linea/mainnet/maru/genesis.json
new file mode 100644
index 00000000..b7820e20
--- /dev/null
+++ b/linea/mainnet/maru/genesis.json
@@ -0,0 +1,20 @@
+{
+ "chainId": 59144,
+ "config": {
+ "0": {
+ "type": "difficultyAwareQbft",
+ "blockTimeSeconds": 1,
+ "postTtdConfig": {
+ "validatorSet": ["0x9f31730181441beb67b10efaed5773767ea959bc"],
+ "elFork": "Paris"
+ },
+ "terminalTotalDifficulty": 49575263
+ },
+ "1761213600": {
+ "type": "qbft",
+ "validatorSet": ["0x9f31730181441beb67b10efaed5773767ea959bc"],
+ "blockTimeSeconds": 1,
+ "elFork": "Shanghai"
+ }
+ }
+ }
\ No newline at end of file
diff --git a/linea/mainnet/maru/log4j.xml b/linea/mainnet/maru/log4j.xml
new file mode 100644
index 00000000..adeac6ad
--- /dev/null
+++ b/linea/mainnet/maru/log4j.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linea/maru.Dockerfile b/linea/maru.Dockerfile
new file mode 100644
index 00000000..8db71865
--- /dev/null
+++ b/linea/maru.Dockerfile
@@ -0,0 +1,5 @@
+ARG MARU_IMAGE=consensys/maru
+ARG MARU_VERSION=bcfdb4
+FROM ${MARU_IMAGE}:${MARU_VERSION}
+
+RUN apt-get update && apt-get install -y gettext && rm -rf /var/lib/apt/lists/*
\ No newline at end of file
diff --git a/linea/sepolia/maru.toml b/linea/sepolia/maru/config.toml.template
similarity index 53%
rename from linea/sepolia/maru.toml
rename to linea/sepolia/maru/config.toml.template
index 99a6e0a3..923546a1 100644
--- a/linea/sepolia/maru.toml
+++ b/linea/sepolia/maru/config.toml.template
@@ -1,29 +1,33 @@
-# IMPORTANT: No [qbft] section = follower node (not validator)
-
+# Uncomment the below [linea] section for finalized L2 block tag
[linea]
contract-address = "0xB218f8A4Bc926cF1cA7b3423c154a0D627Bdb7E5"
-l1-eth-api = { endpoint = "" }
+l1-eth-api = { endpoint = "${L1_RPC}" }
l1-polling-interval = "6 seconds"
l1-highest-block-tag = "finalized"
[persistence]
-data-path = "/opt/maru/data"
+data-path = "/opt/maru/data"
private-key-path = "/opt/maru/private-key"
[p2p]
-port = 9000 # Default port (can be same as discovery)
+port = ${P2P_PORT} # Default port (can be same as discovery)
ip-address = "0.0.0.0"
-static-peers = ["/ip4/3.129.120.128/tcp/31005/p2p/16Uiu2HAmR33t8RZiAHovuH9iH2UuUrajrbfyYowiYDAQo3D5Y9wg", "/ip4/3.129.120.128/tcp/31006/p2p/16Uiu2HAm9HB5oNmnmj8yY6T7dfhLVidVzYqa8QVDtEthkMr6b8tx"]
+static-peers = [
+ "/ip4/3.129.120.128/tcp/31005/p2p/16Uiu2HAmR33t8RZiAHovuH9iH2UuUrajrbfyYowiYDAQo3D5Y9wg",
+ "/ip4/3.129.120.128/tcp/31006/p2p/16Uiu2HAm9HB5oNmnmj8yY6T7dfhLVidVzYqa8QVDtEthkMr6b8tx"
+]
reconnect-delay = "500ms"
[p2p.discovery]
-port = 9000
-bootnodes = []
+port = ${P2P_PORT}
+advertise-ip = ${IP}
refresh-interval = "3s"
[payload-validator]
-engine-api-endpoint = { endpoint = "http://linea-besu:8550" } # Match Besu port!
-eth-api-endpoint = { endpoint = "http://linea-besu:8545" }
+# Besu and Geth node as execution layer client
+engine-api-endpoint = { endpoint = "http://${EL_HOST}:8551", jwt-secret-path = "/jwtsecret" }
+eth-api-endpoint = { endpoint = "http://${EL_HOST}:8545" }
+payload-validation-enabled = false
[observability]
port = 9090
diff --git a/linea/sepolia/maru-genesis.json b/linea/sepolia/maru/genesis.json
similarity index 100%
rename from linea/sepolia/maru-genesis.json
rename to linea/sepolia/maru/genesis.json
diff --git a/linea/sepolia/maru/log4j.xml b/linea/sepolia/maru/log4j.xml
new file mode 100644
index 00000000..adeac6ad
--- /dev/null
+++ b/linea/sepolia/maru/log4j.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file