diff --git a/README.md b/README.md index 0aece73..60ce8a8 100644 --- a/README.md +++ b/README.md @@ -35,8 +35,8 @@ | Package | Link | | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | - | Codex | [`/ipfs/QmRobj7vPQ7qJBG42iD8c75SAoMkG1pr1YetYD5QHJNrdz`](http://my.dappnode/installer/public/%2Fipfs%2FQmRobj7vPQ7qJBG42iD8c75SAoMkG1pr1YetYD5QHJNrdz) | - | Codex with local Geth | [`/ipfs/QmVwJtetY98Y1mVwQ3ULwha1tiE49jVn3DQEFigdtbRjj6`](http://my.dappnode/installer/public/%2Fipfs%2FQmVwJtetY98Y1mVwQ3ULwha1tiE49jVn3DQEFigdtbRjj6) | + | Codex | [`/ipfs/QmZFLxyaJgiWojBP9Gvm491SHD9pjZsmW6iwt2nSsxZiBy`](http://my.dappnode/installer/public/%2Fipfs%2FQmZFLxyaJgiWojBP9Gvm491SHD9pjZsmW6iwt2nSsxZiBy) | + | Codex with local Geth | [`/ipfs/QmeuvYaHVDQsgAz6BP7AdvCu6ZMxHE5vftQ1ivcwkzd9BH`](http://my.dappnode/installer/public/%2Fipfs%2FQmeuvYaHVDQsgAz6BP7AdvCu6ZMxHE5vftQ1ivcwkzd9BH) | ## Todo diff --git a/codex-node/docker-entrypoint.sh b/codex-node/docker-entrypoint.sh index d21320f..440c251 100644 --- a/codex-node/docker-entrypoint.sh +++ b/codex-node/docker-entrypoint.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Environment variables from files +# Environment variables from files in form of foo=bar # If set to file path, read the file and export the variables # If set to directory path, read all files in the directory and export the variables if [[ -n "${ENV_PATH}" ]]; then @@ -9,11 +9,11 @@ if [[ -n "${ENV_PATH}" ]]; then set +a fi + # Parameters if [[ -z "${CODEX_NAT}" ]]; then if [[ "${NAT_IP_AUTO}" == "true" && -z "${NAT_PUBLIC_IP_AUTO}" ]]; then export CODEX_NAT="extip:$(hostname --ip-address)" - echo "Private: CODEX_NAT=${CODEX_NAT}" elif [[ -n "${NAT_PUBLIC_IP_AUTO}" ]]; then # Run for 60 seconds if fail WAIT=120 @@ -24,7 +24,6 @@ if [[ -z "${CODEX_NAT}" ]]; then # Check if exit code is 0 and returned value is not empty if [[ $? -eq 0 && -n "${IP}" ]]; then export CODEX_NAT="extip:${IP}" - echo "Public: CODEX_NAT=${CODEX_NAT}" break else # Sleep and check again @@ -46,16 +45,13 @@ fi # If marketplace is enabled from the testing environment, # The file has to be written before Codex starts. -for key in PRIV_KEY ETH_PRIVATE_KEY; do - keyfile="private.key" - if [[ -n "${!key}" ]]; then - [[ "${key}" == "PRIV_KEY" ]] && echo "PRIV_KEY variable is deprecated and will be removed in the next releases, please use ETH_PRIVATE_KEY instead!" - echo "${!key}" > "${keyfile}" - chmod 600 "${keyfile}" - export CODEX_ETH_PRIVATE_KEY="${keyfile}" - echo "Private key set" - fi -done +keyfile="private.key" +if [[ -n "${ETH_PRIVATE_KEY}" ]]; then + echo "${ETH_PRIVATE_KEY}" > "${keyfile}" + chmod 600 "${keyfile}" + export CODEX_ETH_PRIVATE_KEY="${keyfile}" + echo "Private key set" +fi # Set arguments if [[ "${MODE}" == "codex-node-with-marketplace" ]]; then @@ -67,21 +63,33 @@ else unset CODEX_ETH_PROVIDER fi -# Set network parameters -if [[ "${NETWORK}" == "testnet" ]]; then - bootstrap_nodes=( - --bootstrap-node=spr:CiUIAhIhAiJvIcA_ZwPZ9ugVKDbmqwhJZaig5zKyLiuaicRcCGqLEgIDARo8CicAJQgCEiECIm8hwD9nA9n26BUoNuarCEllqKDnMrIuK5qJxFwIaosQ3d6esAYaCwoJBJ_f8zKRAnU6KkYwRAIgM0MvWNJL296kJ9gWvfatfmVvT-A7O2s8Mxp8l9c8EW0CIC-h-H-jBVSgFjg3Eny2u33qF7BDnWFzo7fGfZ7_qc9P - --bootstrap-node=spr:CiUIAhIhAyUvcPkKoGE7-gh84RmKIPHJPdsX5Ugm_IHVJgF-Mmu_EgIDARo8CicAJQgCEiEDJS9w-QqgYTv6CHzhGYog8ck92xflSCb8gdUmAX4ya78QoemesAYaCwoJBES39Q2RAnVOKkYwRAIgLi3rouyaZFS_Uilx8k99ySdQCP1tsmLR21tDb9p8LcgCIG30o5YnEooQ1n6tgm9fCT7s53k6XlxyeSkD_uIO9mb3 - --bootstrap-node=spr:CiUIAhIhA6_j28xa--PvvOUxH10wKEm9feXEKJIK3Z9JQ5xXgSD9EgIDARo8CicAJQgCEiEDr-PbzFr74--85TEfXTAoSb195cQokgrdn0lDnFeBIP0QzOGesAYaCwoJBK6Kf1-RAnVEKkcwRQIhAPUH5nQrqG4OW86JQWphdSdnPA98ErQ0hL9OZH9a4e5kAiBBZmUl9KnhSOiDgU3_hvjXrXZXoMxhGuZ92_rk30sNDA - --bootstrap-node=spr:CiUIAhIhA7E4DEMer8nUOIUSaNPA4z6x0n9Xaknd28Cfw9S2-cCeEgIDARo8CicAJQgCEiEDsTgMQx6vydQ4hRJo08DjPrHSf1dqSd3bwJ_D1Lb5wJ4Qt_CesAYaCwoJBEDhWZORAnVYKkYwRAIgFNzhnftocLlVHJl1onuhbSUM7MysXPV6dawHAA0DZNsCIDRVu9gnPTH5UkcRXLtt7MLHCo4-DL-RCMyTcMxYBXL0 - --bootstrap-node=spr:CiUIAhIhAzZn3JmJab46BNjadVnLNQKbhnN3eYxwqpteKYY32SbOEgIDARo8CicAJQgCEiEDNmfcmYlpvjoE2Np1Wcs1ApuGc3d5jHCqm14phjfZJs4QrvWesAYaCwoJBKpA-TaRAnViKkcwRQIhANuMmZDD2c25xzTbKSirEpkZYoxbq-FU_lpI0K0e4mIVAiBfQX4yR47h1LCnHznXgDs6xx5DLO5q3lUcicqUeaqGeg - --bootstrap-node=spr:CiUIAhIhAgybmRwboqDdUJjeZrzh43sn5mp8jt6ENIb08tLn4x01EgIDARo8CicAJQgCEiECDJuZHBuioN1QmN5mvOHjeyfmanyO3oQ0hvTy0ufjHTUQh4ifsAYaCwoJBI_0zSiRAnVsKkcwRQIhAJCb_z0E3RsnQrEePdJzMSQrmn_ooHv6mbw1DOh5IbVNAiBbBJrWR8eBV6ftzMd6ofa5khNA2h88OBhMqHCIzSjCeA - --bootstrap-node=spr:CiUIAhIhAntGLadpfuBCD9XXfiN_43-V3L5VWgFCXxg4a8uhDdnYEgIDARo8CicAJQgCEiECe0Ytp2l-4EIP1dd-I3_jf5XcvlVaAUJfGDhry6EN2dgQsIufsAYaCwoJBNEmoCiRAnV2KkYwRAIgXO3bzd5VF8jLZG8r7dcLJ_FnQBYp1BcxrOvovEa40acCIDhQ14eJRoPwJ6GKgqOkXdaFAsoszl-HIRzYcXKeb7D9 - ) +# Bootstrap node from URL +BOOTSTRAP_NODE_FROM_URL="${BOOTSTRAP_NODE_FROM_URL:-https://spr.codex.storage/${NETWORK}}" + +if [[ -n "${BOOTSTRAP_NODE_FROM_URL}" ]]; then + WAIT=${BOOTSTRAP_NODE_FROM_URL_WAIT:-300} + SECONDS=0 + SLEEP=1 + # Run and retry if fail + while (( SECONDS < WAIT )); do + SPR=($(curl -s -f -m 5 "${BOOTSTRAP_NODE_FROM_URL}")) + # Check if exit code is 0 and returned value is not empty + if [[ $? -eq 0 && -n "${SPR}" ]]; then + for node in "${SPR[@]}"; do + bootstrap+="--bootstrap-node=$node " + done + set -- "$@" ${bootstrap} + break + else + # Sleep and check again + echo "Can't get SPR from ${BOOTSTRAP_NODE_FROM_URL} - Retry in $SLEEP seconds / $((WAIT - SECONDS))" + sleep $SLEEP + fi + done fi # Update arguments -set -- "$@" ${bootstrap_nodes[@]} ${EXTRA_OPTS} +set -- "$@" ${EXTRA_OPTS} # Check if the endpoint is synced if [[ -n "${CODEX_ETH_PROVIDER}" ]]; then @@ -143,11 +151,11 @@ if [[ "$@" == *"prover"* ]]; then fi # Show -echo "Codex parameters:" +echo -e "\nCodex run parameters:" vars=$(env | grep CODEX_) echo -e "${vars//CODEX_/ - CODEX_}" -echo -e " $@" +echo -e " - $@\n" # Run -echo "Run Codex node..." +echo "Run Codex node" exec "$@" diff --git a/geth/docker-entrypoint.sh b/geth/docker-entrypoint.sh index 1b9b86c..632bcd2 100644 --- a/geth/docker-entrypoint.sh +++ b/geth/docker-entrypoint.sh @@ -2,7 +2,7 @@ # Network if [ "${NETWORK}" = "testnet" ]; then - export GETH_BOOTNODES=enode://cff0c44c62ecd6e00d72131f336bb4e4968f2c1c1abeca7d4be2d35f818608b6d8688b6b65a18f1d57796eaca32fd9d08f15908a88afe18c1748997235ea6fe7@159.223.243.50:40010,enode://ea331eaa8c5150a45b793b3d7c17db138b09f7c9dd7d881a1e2e17a053e0d2600e0a8419899188a87e6b91928d14267949a7e6ec18bfe972f3a14c5c2fe9aecb@68.183.245.13:40030,enode://4a7303b8a72db91c7c80c8fb69df0ffb06370d7f5fe951bcdc19107a686ba61432dc5397d073571433e8fc1f8295127cabbcbfd9d8464b242b7ad0dcd35e67fc@174.138.127.95:40020,enode://36f25e91385206300d04b95a2f8df7d7a792db0a76bd68f897ec7749241b5fdb549a4eecfab4a03c36955d1242b0316b47548b87ad8291794ab6d3fecda3e85b@64.225.89.147:40040,enode://2e14e4a8092b67db76c90b0a02d97d88fc2bb9df0e85df1e0a96472cdfa06b83d970ea503a9bc569c4112c4c447dbd1e1f03cf68471668ba31920ac1d05f85e3@170.64.249.54:40050,enode://6eeb3b3af8bef5634b47b573a17477ea2c4129ab3964210afe3b93774ce57da832eb110f90fbfcfa5f7adf18e55faaf2393d2e94710882d09d0204a9d7bc6dd2@143.244.205.40:40060,enode://6ba0e8b5d968ca8eb2650dd984cdcf50acc01e4ea182350e990191aadd79897801b79455a1186060aa3818a6bc4496af07f0912f7af53995a5ddb1e53d6f31b5@209.38.160.40:40070 + export GETH_BOOTNODES=enode://cff0c44c62ecd6e00d72131f336bb4e4968f2c1c1abeca7d4be2d35f818608b6d8688b6b65a18f1d57796eaca32fd9d08f15908a88afe18c1748997235ea6fe7@159.223.243.50:40010,enode://4a7303b8a72db91c7c80c8fb69df0ffb06370d7f5fe951bcdc19107a686ba61432dc5397d073571433e8fc1f8295127cabbcbfd9d8464b242b7ad0dcd35e67fc@174.138.127.95:40020,enode://ea331eaa8c5150a45b793b3d7c17db138b09f7c9dd7d881a1e2e17a053e0d2600e0a8419899188a87e6b91928d14267949a7e6ec18bfe972f3a14c5c2fe9aecb@68.183.245.13:40030 fi # Show diff --git a/setup-wizard.yml b/setup-wizard.yml index 906bced..96d97b5 100644 --- a/setup-wizard.yml +++ b/setup-wizard.yml @@ -37,7 +37,7 @@ fields: service: codex-node title: ETH_PRIVATE_KEY description: >- - Ethereum private key which will be saved to a file and passed as a value for `CODEX_ETH_PRIVATE_KEY` variable. + Ethereum private key which will be saved to a file which will be passed as a value for `CODEX_ETH_PRIVATE_KEY` variable. secret: true pattern: "^0x[a-fA-F0-9]{64}$" patternErrorMessage: Must be a valid private key (0x1fd16a...)