diff --git a/upcoming/noble/amd64/eth-node-besu-testnet/0.0.1-1/eth-node-besu-testnet.sps b/upcoming/noble/amd64/eth-node-besu-testnet/0.0.1-1/eth-node-besu-testnet.sps index 88b1ed965..55d38705f 100644 --- a/upcoming/noble/amd64/eth-node-besu-testnet/0.0.1-1/eth-node-besu-testnet.sps +++ b/upcoming/noble/amd64/eth-node-besu-testnet/0.0.1-1/eth-node-besu-testnet.sps @@ -1,6 +1,6 @@ name = "eth-node-besu-testnet" bin_package = "eth-node-besu" -binary = "/usr/lib/eth-node-besu-testnet/run-service.sh" +binary = "/usr/lib/eth-node-besu-testnet/run-besu-service.sh" user = { name = "eth-node-besu-testnet", group = true, create = { home = false } } runtime_dir = { mode = "750" } # Service Fields @@ -42,9 +42,8 @@ WorkingDirectory=/var/lib/eth-node-testnet/besu """ ## hack to actually use system.d but let debcrafter manage the user creation add_files = [ - "debian/scripts/run-service.sh /usr/lib/eth-node-besu-testnet/", + "debian/scripts/run-besu-service.sh /usr/lib/eth-node-besu-testnet/", "debian/scripts/run-besu.sh /usr/lib/eth-node-besu-testnet/bin/", - # "debian/conf/besu-testnet.conf /etc/eth-node-besu-testnet/", "debian/tmp/eth-node-besu-testnet.service /lib/systemd/system/", ] provides = ["eth-node-testnet-el-service"] @@ -52,8 +51,13 @@ conflicts = ["eth-node-testnet-el-service"] depends=["eth-node-testnet-config", "eth-node-testnet"] summary = "service file for eth-node-besu for network: testnet" -# [extra_groups."eth-node-testnet"] -# create = true +[[plug]] +run_as_user = "root" +register_cmd = ["bash", "-c", +"adduser --system --quiet --group eth-node-testnet && mkdir -p /var/lib/eth-node-testnet && chown eth-node-testnet:eth-node-testnet /var/lib/eth-node-testnet && mkdir -p /var/lib/eth-node-testnet/besu && chown eth-node-besu-testnet:eth-node-besu-testnet /var/lib/eth-node-testnet/besu"] +unregister_cmd = ["echo", "hello_world > /dev/null"] + + [config."besu-testnet.conf"] format = "plain" @@ -137,11 +141,5 @@ default = "$BASE_CONFIG_EL_RPC_PORT" priority = "low" summary = "Set the RPC HTTP port" -[[plug]] -run_as_user = "root" -register_cmd = ["bash", "-c", -"adduser --system --quiet --group eth-node-testnet && mkdir -p /var/lib/eth-node-testnet && chown eth-node-testnet:eth-node-testnet /var/lib/eth-node-testnet && mkdir -p /var/lib/eth-node-testnet/besu && chown eth-node-besu-testnet:eth-node-besu-testnet /var/lib/eth-node-testnet/besu"] -unregister_cmd = ["echo", "hello_world > /dev/null"] - diff --git a/upcoming/noble/amd64/eth-node-besu-testnet/0.0.1-1/pkg-builder-verify.toml b/upcoming/noble/amd64/eth-node-besu-testnet/0.0.1-1/pkg-builder-verify.toml index 94f1eb13e..460fc9f65 100644 --- a/upcoming/noble/amd64/eth-node-besu-testnet/0.0.1-1/pkg-builder-verify.toml +++ b/upcoming/noble/amd64/eth-node-besu-testnet/0.0.1-1/pkg-builder-verify.toml @@ -5,6 +5,6 @@ package_hash=[ # { hash="3c4029ca33e6f26976012c3cab2dc68f46ce30f8", name= "eth-node-besu-testnet_0.0.1-1.dsc"}, { hash="b35f46d5fb424aee57b5d666e61b2eff83543aad", name= "eth-node-besu-testnet_0.0.1.orig.tar.gz"}, # { hash="bf82dcf8ae59dc94c3dbb41f5e0df8b5d15934cd", name= "eth-node-besu-testnet_0.0.1-1.debian.tar.xz"}, - { hash="54a1a34a1e392d2012c72ac702c5dcbbd5888f05", name= "eth-node-besu-testnet_0.0.1-1_all.deb"}, + { hash="26921e33d083f7604e069e878709b6b75581d530", name= "eth-node-besu-testnet_0.0.1-1_all.deb"}, ] \ No newline at end of file diff --git a/upcoming/noble/amd64/eth-node-besu-testnet/0.0.1-1/src/debian/rules b/upcoming/noble/amd64/eth-node-besu-testnet/0.0.1-1/src/debian/rules index 81250b99f..09f8d1e29 100644 --- a/upcoming/noble/amd64/eth-node-besu-testnet/0.0.1-1/src/debian/rules +++ b/upcoming/noble/amd64/eth-node-besu-testnet/0.0.1-1/src/debian/rules @@ -11,5 +11,5 @@ override_dh_dwz: override_dh_prep: mkdir debian/tmp cp debian/eth-node-besu-testnet.eth-node-besu-testnet.service debian/tmp/eth-node-besu-testnet.service - chmod a+x debian/scripts/run-service.sh + chmod a+x debian/scripts/run-besu-service.sh chmod a+x debian/scripts/run-besu.sh \ No newline at end of file diff --git a/upcoming/noble/amd64/eth-node-besu-testnet/0.0.1-1/src/debian/scripts/run-service.sh b/upcoming/noble/amd64/eth-node-besu-testnet/0.0.1-1/src/debian/scripts/run-besu-service.sh similarity index 70% rename from upcoming/noble/amd64/eth-node-besu-testnet/0.0.1-1/src/debian/scripts/run-service.sh rename to upcoming/noble/amd64/eth-node-besu-testnet/0.0.1-1/src/debian/scripts/run-besu-service.sh index 0c4be7331..00303b5f3 100644 --- a/upcoming/noble/amd64/eth-node-besu-testnet/0.0.1-1/src/debian/scripts/run-service.sh +++ b/upcoming/noble/amd64/eth-node-besu-testnet/0.0.1-1/src/debian/scripts/run-besu-service.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -/bin/bash /usr/lib/eth-node-besu-testnet/bin/run-besu.sh \ +exec /usr/lib/eth-node-besu-testnet/bin/run-besu.sh \ --conf-file /etc/eth-node-testnet/conf.d/testnet.conf \ --conf-file /etc/eth-node-besu-testnet/besu-testnet.conf \ No newline at end of file diff --git a/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/eth-node-teku-testnet.sps b/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/eth-node-teku-testnet.sps index 169bbe035..c9981c1f2 100644 --- a/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/eth-node-teku-testnet.sps +++ b/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/eth-node-teku-testnet.sps @@ -1,26 +1,145 @@ name = "eth-node-teku-testnet" -bin_package = "eth-node-config-testnet-teku" -binary = "/usr/lib/eth-node-config-testnet/bin/run-teku.sh" -conf_param = "--conf-file" -user = { group = true, create = { home = false } } +bin_package = "eth-node-teku" +binary = "/usr/lib/eth-node-teku-testnet/run-teku-service.sh" +user = { name = "eth-node-teku-testnet", group = true, create = { home = false } } runtime_dir = { mode = "750" } +# Service Fields +after = "multi-user.target" +service_type = "simple" extra_service_config = """ +# no need to specify, these come from debcrafter +# User=eth-node-teku-testnet +# NoNewPrivileges=true +# ProtectHome=true +# PrivateTmp=true +# PrivateDevices=true + +# additional flags not specified by debcrafter +CapabilityBoundingSet= +IPAddressDeny=none +LockPersonality=true +PrivateIPC=true +PrivateUsers=true +ProtectClock=true +ProtectControlGroups=true +ProtectHostname=true +ProtectKernelLogs=true +ProtectKernelModules=true +ProtectKernelTunables=true +ProtectProc=invisible +ReadWritePaths=/var/lib/eth-node-testnet/teku +ReadOnlyPaths=/var/lib/eth-node-testnet +RemoveIPC=true +RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX AF_NETLINK + +RestrictNamespaces=true +RestrictRealtime=true +RestrictSUIDSGID=true +SystemCallArchitectures=native +SystemCallFilter=@system-service +UMask=0077 +WorkingDirectory=/var/lib/eth-node-testnet/teku """ ## hack to actually use system.d but let debcrafter manage the user creation -add_files = ["debian/lib/systemd/system/eth-node-teku-testnet.service /lib/systemd/system/"] +add_files = [ + "debian/scripts/run-teku-service.sh /usr/lib/eth-node-teku-testnet/", + "debian/scripts/run-teku.sh /usr/lib/eth-node-teku-testnet/bin/", + "debian/tmp/eth-node-teku-testnet.service /lib/systemd/system/", +] provides = ["eth-node-testnet-cl-service"] conflicts = ["eth-node-testnet-cl-service"] -depends=["eth-node-config-testnet-teku", "eth-node-testnet-config", "eth-node-testnet"] -summary = "systemd service files for eth-node-teku using eth-node-config-testnet-teku and eth-node-testnet-config" - -# TODO debcrafter should do this -# [config."vars"] -# format = "plain" - -# [config."vars.toml".ivars.base_dir] -# type = "path" -# file_type = "dir" -# create = { mode = 755, owner = "$service", group = "$service" } -# default = "/var/lib/eth-node-testnet/besu" -# priority = "low" -# summary = "Node working directory" \ No newline at end of file +depends=["eth-node-testnet-config", "eth-node-testnet"] +summary = "service file for eth-node-teku for network: testnet" + +[[plug]] +run_as_user = "root" +register_cmd = ["bash", "-c", +"adduser --system --quiet --group eth-node-testnet && mkdir -p /var/lib/eth-node-testnet && chown eth-node-testnet:eth-node-testnet /var/lib/eth-node-testnet && mkdir -p /var/lib/eth-node-testnet/teku && chown eth-node-teku-testnet:eth-node-teku-testnet /var/lib/eth-node-testnet/teku"] +unregister_cmd = ["echo", "hello_world > /dev/null"] + +[config."teku-testnet.conf"] +format = "plain" + +[config."teku-testnet.conf".ivars."TEKU_CLI_EE_ENDPOINT"] +type = "string" +default = "$BASE_CONFIG_ENDPOINT_URL" +priority = "low" +summary = "URL for Execution Engine node." + +[config."teku-testnet.conf".ivars."TEKU_CLI_EE_JWT_SECRET_FILE"] +type = "string" +default = "$BASE_CONFIG_SECRETS_FILE" +priority = "low" +summary = "Location of the file specifying the hex-encoded 256-bit secret key to be used for verifying/generating JWT tokens." + +[config."teku-testnet.conf".ivars."TEKU_CLI_CHECKPOINT_SYNC_URL"] +type = "string" +default = "" +priority = "low" +summary = "The Checkpointz server that will be used to bootstrap this node." + +[config."teku-testnet.conf".ivars."TEKU_CLI_DATA_BASE_PATH"] +type = "string" +default = "$BASE_CONFIG_DATA_DIR/teku" +priority = "low" +summary = "Path to the base directory for storage. Default: $HOME/.local/share/teku." + +[config."teku-testnet.conf".ivars."TEKU_CLI_NETWORK"] +type = "string" +default = "$BASE_CONFIG_CUSTOM_NETWORK_TESTNET_DIR/config.yaml" +priority = "low" +summary = "Represents which network to use. Default: mainnet." + +[config."teku-testnet.conf".ivars."TEKU_CLI_P2P_DISCOVERY_BOOTNODES"] +type = "string" +default = "$BASE_CONFIG_CUSTOM_NETWORK_BOOTNODES_ENR" +priority = "low" +summary = "List of ENRs of the bootnodes." + +[config."teku-testnet.conf".ivars."TEKU_CLI_GENESIS_STATE"] +type = "string" +default = "$BASE_CONFIG_CUSTOM_NETWORK_GENESIS_STATE" +priority = "low" +summary = "The genesis state. This value should be a file or URL pointing to an SSZ-encoded finalized checkpoint state." + +[config."teku-testnet.conf".ivars."TEKU_CLI_IGNORE_WEAK_SUBJECTIVITY_PERIOD_ENABLED"] +type = "string" +default = "true" +priority = "low" +summary = "Allows syncing outside of the weak subjectivity period. Default: false." + +[config."teku-testnet.conf".ivars."TEKU_CLI_REST_API_CORS_ORIGINS"] +type = "string" +default = "" +priority = "low" +summary = "Comma-separated list of origins to allow, or * to allow any origin. Default: []." + +[config."teku-testnet.conf".ivars."TEKU_CLI_REST_API_DOCS_ENABLED"] +type = "string" +default = "" +priority = "low" +summary = "Enable swagger-docs and swagger-ui endpoints. Default: false." + +[config."teku-testnet.conf".ivars."TEKU_CLI_REST_API_ENABLED"] +type = "string" +default = "true" +priority = "low" +summary = "Enables Beacon Rest API. Default: null." + +[config."teku-testnet.conf".ivars."TEKU_CLI_REST_API_HOST_ALLOWLIST"] +type = "string" +default = "" +priority = "low" +summary = "Comma-separated list of hostnames to allow, or * to allow any host. Default: [127.0.0.1, localhost]." + +[config."teku-testnet.conf".ivars."TEKU_CLI_REST_API_INTERFACE"] +type = "string" +default = "" +priority = "low" +summary = "Interface of Beacon Rest API. Default: 127.0.0.1." + +[config."teku-testnet.conf".ivars."TEKU_CLI_REST_API_PORT"] +type = "string" +default = "$BASE_CONFIG_CL_RPC_PORT" +priority = "low" +summary = "Port number of Beacon Rest API." diff --git a/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/pkg-builder-verify.toml b/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/pkg-builder-verify.toml index dd89bc28a..22cd129a2 100644 --- a/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/pkg-builder-verify.toml +++ b/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/pkg-builder-verify.toml @@ -5,6 +5,6 @@ package_hash=[ # { hash="228f338fa408c43acb1f08da4bb14062d38b7812", name= "eth-node-teku-testnet_0.0.1-1.dsc"}, { hash="b35f46d5fb424aee57b5d666e61b2eff83543aad", name= "eth-node-teku-testnet_0.0.1.orig.tar.gz"}, # { hash="11da8cbe542c6445efd8d67fa5adfc00ecfd84cd", name= "eth-node-teku-testnet_0.0.1-1.debian.tar.xz"}, - { hash="27fac205423c95a4aa435fcea570c6eeee1bf2c0", name= "eth-node-teku-testnet_0.0.1-1_all.deb"}, + { hash="b8dd1f93ce968a47a453adf20dcf3db391da3245", name= "eth-node-teku-testnet_0.0.1-1_all.deb"}, ] \ No newline at end of file diff --git a/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/src/debian/eth-node-teku-testnet.postinst b/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/src/debian/eth-node-teku-testnet.postinst deleted file mode 100644 index cb272ef52..000000000 --- a/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/src/debian/eth-node-teku-testnet.postinst +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -set -e - -. /usr/share/debconf/confmodule - -declare -A CONFIG - -adduser --system --quiet --group eth-node-teku-testnet -mkdir -p /var/lib/eth-node-testnet/teku -chown eth-node-teku-testnet:eth-node-teku-testnet /var/lib/eth-node-testnet/teku - -jwt_file=/etc/eth-node-testnet/jwt.hex -if [ ! -f "$jwt_file" ]; then - openssl rand -hex 32 | tr -d "\n" | tee "$jwt_file" >/dev/null -fi - -if [ "$1" = triggered -a "$service_was_running" '!=' 0 ]; -then - deb-systemd-invoke restart eth-node-testnet-service-teku -fi - -if [ "$1" '!=' triggered ]; -then - dpkg-trigger eth-node-testnet-service-teku-config-changed - -fi -#DEBHELPER# - -exit 0 diff --git a/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/src/debian/lib/systemd/system/eth-node-teku-testnet.service b/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/src/debian/lib/systemd/system/eth-node-teku-testnet.service deleted file mode 100644 index 4b9782fef..000000000 --- a/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/src/debian/lib/systemd/system/eth-node-teku-testnet.service +++ /dev/null @@ -1,40 +0,0 @@ -[Unit] -Description=eth-node-teku-testnet service - -[Service] -CapabilityBoundingSet= -ExecStart=/bin/bash /usr/lib/eth-node-config-testnet-teku/bin/run-teku.sh \ - --conf-file /etc/eth-node-testnet/conf.d/testnet.conf \ - --conf-file /etc/eth-node-testnet/teku/conf.d/teku-testnet.conf -IPAddressDeny=none -LockPersonality=true -NoNewPrivileges=true -PrivateDevices=true -PrivateIPC=true -PrivateTmp=true -PrivateUsers=true -ProtectClock=true -ProtectControlGroups=true -ProtectHome=true -ProtectHostname=true -ProtectKernelLogs=true -ProtectKernelModules=true -ProtectKernelTunables=true -ProtectProc=invisible -ProtectSystem=strict -ReadWritePaths=/var/lib/eth-node-testnet/teku -ReadOnlyPaths=/var/lib/eth-node-testnet -RemoveIPC=true -RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX AF_NETLINK -RestrictNamespaces=true -RestrictRealtime=true -RestrictSUIDSGID=true -SystemCallArchitectures=native -SystemCallFilter=@system-service -# SystemCallFilter=~@privileged @resources @obsolete -UMask=0077 -User=eth-node-teku-testnet -WorkingDirectory=/var/lib/eth-node-testnet/teku - -[Install] -WantedBy=multi-user.target diff --git a/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/src/debian/rules b/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/src/debian/rules index 46c98465b..b79fa1774 100644 --- a/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/src/debian/rules +++ b/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/src/debian/rules @@ -7,3 +7,9 @@ export SOURCE_DATE_EPOCH=1720044000 dh $@ override_dh_dwz: + +override_dh_prep: + mkdir debian/tmp + cp debian/eth-node-teku-testnet.eth-node-teku-testnet.service debian/tmp/eth-node-teku-testnet.service + chmod a+x debian/scripts/run-teku-service.sh + chmod a+x debian/scripts/run-teku.sh \ No newline at end of file diff --git a/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/src/debian/scripts/run-teku-service.sh b/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/src/debian/scripts/run-teku-service.sh new file mode 100644 index 000000000..2c3da7405 --- /dev/null +++ b/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/src/debian/scripts/run-teku-service.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + + +exec /usr/lib/eth-node-teku-testnet/bin/run-teku.sh \ + --conf-file /etc/eth-node-testnet/conf.d/testnet.conf \ + --conf-file /etc/eth-node-teku-testnet/teku-testnet.conf \ No newline at end of file diff --git a/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/src/debian/scripts/run-teku.sh b/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/src/debian/scripts/run-teku.sh new file mode 100644 index 000000000..1097aaac5 --- /dev/null +++ b/upcoming/noble/amd64/eth-node-teku-testnet/0.0.1-1/src/debian/scripts/run-teku.sh @@ -0,0 +1,185 @@ +#!/usr/bin/env bash + +set -e + +display_help() { + echo "Usage: $0 [OPTIONS]" + echo "" + echo "Options:" + echo " --conf-file FILE, -e FILE Path to .conf formatted configuration file." + echo " --help, -h Displays this help text and exits." + echo " --version, -v Displays the version and exits." + exit 0 +} + +display_version() { + local version=$(basename "$(dirname "$(realpath "$0")")") + echo "$0 version $version" + exit 0 +} + +CONFIG_FILES=() +HELP=false +VERSION=false + +while [[ "$#" -gt 0 ]]; do + case $1 in + --conf-file|-e) + CONFIG_FILES+=("$2") + shift 2 + ;; + --help|-h) + HELP=true + shift + ;; + --version|-v) + VERSION=true + shift + ;; + *) + echo "Error: Unknown option $1" + display_help + ;; + esac +done + +if [ "$HELP" = true ]; then + display_help +fi + +if [ "$VERSION" = true ]; then + display_version +fi + +if [[ ${#CONFIG_FILES[@]} -eq 0 ]]; then + echo "Error: At least one --conf-file option is required" + display_help +fi + +for CONFIG_FILE in "${CONFIG_FILES[@]}"; do + if [[ -f "$CONFIG_FILE" ]]; then + echo "Starting with configuration from $CONFIG_FILE" + source "$CONFIG_FILE" + else + echo "Error: Configuration file $CONFIG_FILE not found." + exit 1 + fi +done + +OPTIONS="" + +append_option() { + local option=$1 + local value=$2 + if [ -n "$value" ]; then + OPTIONS="$OPTIONS $option $value" + fi +} + +append_flag(){ + local option=$1 + local value=$2 + if [ "$value" = "true" ]; then + OPTIONS="$OPTIONS $option" + fi +} + +append_option "--checkpoint-sync-url" "$TEKU_CLI_CHECKPOINT_SYNC_URL" +append_option "--eth1-deposit-contract-address" "$TEKU_CLI_ETH1_DEPOSIT_CONTRACT_ADDRESS" +append_option "--genesis-state" "$TEKU_CLI_GENESIS_STATE" +append_option "--ignore-weak-subjectivity-period-enabled" "$TEKU_CLI_IGNORE_WEAK_SUBJECTIVITY_PERIOD_ENABLED" +append_option "--initial-state" "$TEKU_CLI_INITIAL_STATE" +append_option "--network" "$TEKU_CLI_NETWORK" +append_option "--p2p-advertised-ip" "$TEKU_CLI_P2P_ADVERTISED_IP" +append_option "--p2p-advertised-port" "$TEKU_CLI_P2P_ADVERTISED_PORT" +append_option "--p2p-advertised-udp-port" "$TEKU_CLI_P2P_ADVERTISED_UDP_PORT" +append_option "--p2p-direct-peers" "$TEKU_CLI_P2P_DIRECT_PEERS" +append_option "--p2p-discovery-bootnodes" "$TEKU_CLI_P2P_DISCOVERY_BOOTNODES" +append_option "--p2p-discovery-enabled" "$TEKU_CLI_P2P_DISCOVERY_ENABLED" +append_option "--p2p-discovery-site-local-addresses-enabled" "$TEKU_CLI_P2P_DISCOVERY_SITE_LOCAL_ADDRESSES_ENABLED" +append_option "--p2p-enabled" "$TEKU_CLI_P2P_ENABLED" +append_option "--p2p-interface" "$TEKU_CLI_P2P_INTERFACE" +append_option "--p2p-nat-method" "$TEKU_CLI_P2P_NAT_METHOD" +append_option "--p2p-peer-lower-bound" "$TEKU_CLI_P2P_PEER_LOWER_BOUND" +append_option "--p2p-peer-upper-bound" "$TEKU_CLI_P2P_PEER_UPPER_BOUND" +append_option "--p2p-port" "$TEKU_CLI_P2P_PORT" +append_option "--p2p-private-key-file" "$TEKU_CLI_P2P_PRIVATE_KEY_FILE" +append_option "--p2p-static-peers" "$TEKU_CLI_P2P_STATIC_PEERS" +append_option "--doppelganger-detection-enabled" "$TEKU_CLI_DOPPELGANGER_DETECTION_ENABLED" +append_option "--exit-when-no-validator-keys-enabled" "$TEKU_CLI_EXIT_WHEN_NO_VALIDATOR_KEYS_ENABLED" +append_option "--shut-down-when-validator-slashed-enabled" "$TEKU_CLI_SHUT_DOWN_WHEN_VALIDATOR_SLASHED_ENABLED" +append_option "--validator-is-local-slashing-protection-synchronized-enabled" "$TEKU_CLI_VALIDATOR_IS_LOCAL_SLASHING_PROTECTION_SYNCHRONIZED_ENABLED" +append_option "--validator-keys" "$TEKU_CLI_VALIDATOR_KEYS" +append_option "--validators-builder-registration-default-enabled" "$TEKU_CLI_VALIDATORS_BUILDER_REGISTRATION_DEFAULT_ENABLED" +append_option "--validators-early-attestations-enabled" "$TEKU_CLI_VALIDATORS_EARLY_ATTESTATIONS_ENABLED" +append_option "--validators-external-signer-keystore" "$TEKU_CLI_VALIDATORS_EXTERNAL_SIGNER_KEYSTORE" +append_option "--validators-external-signer-keystore-password-file" "$TEKU_CLI_VALIDATORS_EXTERNAL_SIGNER_KEYSTORE_PASSWORD_FILE" +append_option "--validators-external-signer-public-keys" "$TEKU_CLI_VALIDATORS_EXTERNAL_SIGNER_PUBLIC_KEYS" +append_option "--validators-external-signer-slashing-protection-enabled" "$TEKU_CLI_VALIDATORS_EXTERNAL_SIGNER_SLASHING_PROTECTION_ENABLED" +append_option "--validators-external-signer-timeout" "$TEKU_CLI_VALIDATORS_EXTERNAL_SIGNER_TIMEOUT" +append_option "--validators-external-signer-truststore" "$TEKU_CLI_VALIDATORS_EXTERNAL_SIGNER_TRUSTSTORE" +append_option "--validators-external-signer-truststore-password-file" "$TEKU_CLI_VALIDATORS_EXTERNAL_SIGNER_TRUSTSTORE_PASSWORD_FILE" +append_option "--validators-external-signer-url" "$TEKU_CLI_VALIDATORS_EXTERNAL_SIGNER_URL" +append_option "--validators-graffiti" "$TEKU_CLI_VALIDATORS_GRAFFITI" +append_option "--validators-graffiti-client-append-format" "$TEKU_CLI_VALIDATORS_GRAFFITI_CLIENT_APPEND_FORMAT" +append_option "--validators-graffiti-file" "$TEKU_CLI_VALIDATORS_GRAFFITI_FILE" +append_option "--validators-keystore-locking-enabled" "$TEKU_CLI_VALIDATORS_KEYSTORE_LOCKING_ENABLED" +append_option "--validators-performance-tracking-mode" "$TEKU_CLI_VALIDATORS_PERFORMANCE_TRACKING_MODE" +append_option "--validators-proposer-blinded-blocks-enabled" "$TEKU_CLI_VALIDATORS_PROPOSER_BLINDED_BLOCKS_ENABLED" +append_option "--validators-proposer-config" "$TEKU_CLI_VALIDATORS_PROPOSER_CONFIG" +append_option "--validators-proposer-config-refresh-enabled" "$TEKU_CLI_VALIDATORS_PROPOSER_CONFIG_REFRESH_ENABLED" +append_option "--validators-proposer-default-fee-recipient" "$TEKU_CLI_VALIDATORS_PROPOSER_DEFAULT_FEE_RECIPIENT" +append_option "--builder-bid-compare-factor" "$TEKU_CLI_BUILDER_BID_COMPARE_FACTOR" +append_option "--builder-endpoint" "$TEKU_CLI_BUILDER_ENDPOINT" +append_option "--builder-set-user-agent-header" "$TEKU_CLI_BUILDER_SET_USER_AGENT_HEADER" +append_option "--deposit-snapshot-enabled" "$TEKU_CLI_DEPOSIT_SNAPSHOT_ENABLED" +append_option "--ee-endpoint" "$TEKU_CLI_EE_ENDPOINT" +append_option "--ee-jwt-claim-id" "$TEKU_CLI_EE_JWT_CLAIM_ID" +append_option "--ee-jwt-secret-file" "$TEKU_CLI_EE_JWT_SECRET_FILE" +append_option "--eth1-deposit-contract-max-request-size" "$TEKU_CLI_ETH1_DEPOSIT_CONTRACT_MAX_REQUEST_SIZE" +append_option "--eth1-endpoint" "$TEKU_CLI_ETH1_ENDPOINTS" +append_option "--exchange-capabilities-monitoring-enabled" "$TEKU_CLI_EXCHANGE_CAPABILITIES_MONITORING_ENABLED" +append_option "--data-beacon-path" "$TEKU_CLI_DATA_BEACON_PATH" +append_option "--data-path" "$TEKU_CLI_DATA_BASE_PATH" +append_option "--data-storage-archive-frequency" "$TEKU_CLI_DATA_STORAGE_ARCHIVE_FREQUENCY" +append_option "--data-storage-mode" "$TEKU_CLI_DATA_STORAGE_MODE" +append_option "--data-storage-non-canonical-blocks-enabled" "$TEKU_CLI_DATA_STORAGE_NON_CANONICAL_BLOCKS_ENABLED" +append_option "--data-validator-path" "$TEKU_CLI_DATA_VALIDATOR_PATH" +append_option "--reconstruct-historic-states" "$TEKU_CLI_RECONSTRUCT_HISTORIC_STATES" +append_option "--beacon-liveness-tracking-enabled" "$TEKU_CLI_BEACON_LIVENESS_TRACKING_ENABLED" +append_option "--rest-api-cors-origins" "$TEKU_CLI_REST_API_CORS_ORIGINS" +append_option "--rest-api-docs-enabled" "$TEKU_CLI_REST_API_DOCS_ENABLED" +append_option "--rest-api-enabled" "$TEKU_CLI_REST_API_ENABLED" +append_option "--rest-api-host-allowlist" "$TEKU_CLI_REST_API_HOST_ALLOWLIST" +append_option "--rest-api-interface" "$TEKU_CLI_REST_API_INTERFACE" +append_option "--rest-api-port" "$TEKU_CLI_REST_API_PORT" +append_option "--validator-api-bearer-file" "$TEKU_CLI_VALIDATOR_API_BEARER_FILE" +append_option "--validator-api-cors-origins" "$TEKU_CLI_VALIDATOR_API_CORS_ORIGINS" +append_option "--validator-api-docs-enabled" "$TEKU_CLI_VALIDATOR_API_DOCS_ENABLED" +append_option "--validator-api-enabled" "$TEKU_CLI_VALIDATOR_API_ENABLED" +append_option "--validator-api-host-allowlist" "$TEKU_CLI_VALIDATOR_API_HOST_ALLOWLIST" +append_option "--validator-api-interface" "$TEKU_CLI_VALIDATOR_API_INTERFACE" +append_option "--validator-api-keystore-file" "$TEKU_CLI_VALIDATOR_API_KEYSTORE_FILE" +append_option "--validator-api-keystore-password-file" "$TEKU_CLI_VALIDATOR_API_KEYSTORE_PASSWORD_FILE" +append_option "--validator-api-port" "$TEKU_CLI_VALIDATOR_API_PORT" +append_option "--ws-checkpoint" "$TEKU_CLI_WS_CHECKPOINT" +append_option "--logging" "$TEKU_CLI_LOGGING" +append_option "--log-color-enabled" "$TEKU_CLI_LOG_COLOR_ENABLED" +append_option "--log-destination" "$TEKU_CLI_LOG_DESTINATION" +append_option "--log-file" "$TEKU_CLI_LOG_FILE" +append_option "--log-file-name-pattern" "$TEKU_CLI_LOG_FILE_NAME_PATTERN" +append_option "--log-include-events-enabled" "$TEKU_CLI_LOG_INCLUDE_EVENTS_ENABLED" +append_option "--log-include-validator-duties-enabled" "$TEKU_CLI_LOG_INCLUDE_VALIDATOR_DUTIES_ENABLED" +append_option "--metrics-block-timing-tracking-enabled" "$TEKU_CLI_METRICS_BLOCK_TIMING_TRACKING_ENABLED" +append_option "--metrics-categories" "$TEKU_CLI_METRICS_CATEGORIES" +append_option "--metrics-enabled" "$TEKU_CLI_METRICS_ENABLED" +append_option "--metrics-host-allowlist" "$TEKU_CLI_METRICS_HOST_ALLOWLIST" +append_option "--metrics-interface" "$TEKU_CLI_METRICS_INTERFACE" +append_option "--metrics-port" "$TEKU_CLI_METRICS_PORT" +append_option "--metrics-publish-endpoint" "$TEKU_CLI_METRICS_PUBLISH_ENDPOINT" +append_option "--metrics-publish-interval" "$TEKU_CLI_METRICS_PUBLISH_INTERVAL" + + +echo "Using Options: $OPTIONS" + +exec teku $OPTIONS \ No newline at end of file