From 25b9acb6a9a16d685d92862436f898a0022b8cdf Mon Sep 17 00:00:00 2001 From: Scott Buckel Date: Mon, 8 Dec 2025 12:40:45 -0500 Subject: [PATCH 1/3] Add ability to connect to preview --- .envrc | 13 +++++++++---- compose.yml | 4 +++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/.envrc b/.envrc index c642786..0c35b4c 100644 --- a/.envrc +++ b/.envrc @@ -1,8 +1,13 @@ # If your on windows use wsl / git bash / cygwin / msys2 with direnv -export CFG_PRESET=testnet-02 +export CFG_PRESET=preview +export MIDNIGHT_NODE_IMAGE="ghcr.io/midnight-ntwrk/midnight-node:0.18.0-rc.7" +#export BOOTNODES="/dnsaddr/bootnodes.preview.midnight.network" +#export BOOTNODES="/dns/bootnodes.preview.midnight.network" +#export ARGS="--bootnodes /dns/midnight-7-midnight-node-boot-07/tcp/30333/ws/p2p/12D3KooWK66i7dtGVNSwDh9tTeqov1q6LSdWsRLJvTyzTCaywYgK --bootnodes /dns/bootnodes.preview.midnight.network/tcp/30333/ws/p2p/12D3KooWK66i7dtGVNSwDh9tTeqov1q6LSdWsRLJvTyzTCaywYgK --tracing-targets=info --rpc-methods unsafe --unsafe-rpc-external --state-pruning archive --blocks-pruning archive --rpc-cors=all --tx-ban-seconds 18000 --no-prometheus --no-telemetry" +export ARGS="--bootnodes /dns/bootnode-1.preview.midnight.network/tcp/30333/ws/p2p/12D3KooWK66i7dtGVNSwDh9tTeqov1q6LSdWsRLJvTyzTCaywYgK --bootnodes /dns/bootnode-2.preview.midnight.network/tcp/30333/ws/p2p/12D3KooWHqFfXFwb7WW4jwR8pr4BEf562v5M6c8K3CXAJq4Wx6ym --tracing-targets=info --rpc-methods unsafe --unsafe-rpc-external --rpc-cors=all --tx-ban-seconds 18000 --no-prometheus --no-telemetry" -source ./.envrc.${CFG_PRESET} +#source ./.envrc.${CFG_PRESET} # This repository only accepts signed commits: @@ -35,7 +40,7 @@ export DB_SYNC_POSTGRES_CONNECTION_STRING="psql://$POSTGRES_USER:$POSTGRES_PASSW # To start with debug logs, add "-l debug" to APPEND_ARGS # To expose safe rpc method to the host port 9944, add "--unsafe-rpc-external" to APPEND_ARGS or --validator -export APPEND_ARGS="--allow-private-ip --pool-limit 10 --trie-cache-size 0 --prometheus-external --rpc-external --rpc-cors all" +#export APPEND_ARGS="--allow-private-ip --pool-limit 10 --trie-cache-size 0 --prometheus-external --rpc-external --rpc-cors all" # Validator Values: @@ -50,6 +55,6 @@ export NODE_KEY="$(cat ./midnight-node.privatekey)" # Partner chains config: # export CARDANO_NETWORK=preview -export CARDANO_IMAGE="ghcr.io/intersectmbo/cardano-node:10.2.1" +export CARDANO_IMAGE="ghcr.io/intersectmbo/cardano-node:10.5.3" export CARDANO_DATA_DIR=./cardano-data export CARDANO_CONFIG_DIR=./cardano-config/${CARDANO_NETWORK} diff --git a/compose.yml b/compose.yml index af88c53..be0e9df 100644 --- a/compose.yml +++ b/compose.yml @@ -27,10 +27,11 @@ services: - "9615:9615" # Prometheus - For monitoring, alerting and observability. environment: - APPEND_ARGS=${APPEND_ARGS} - - BOOTNODES=${BOOTNODES} - CFG_PRESET=${CFG_PRESET} - DB_SYNC_POSTGRES_CONNECTION_STRING=${DB_SYNC_POSTGRES_CONNECTION_STRING} - NODE_KEY=${NODE_KEY} + - CARDANO_SECURITY_PARAMETER=432 + - ARGS=${ARGS} healthcheck: test: [ "CMD", "curl", "-f", "http://localhost:9944/health" ] interval: 2s @@ -38,3 +39,4 @@ services: - ./data:/data - ./envs/${CFG_PRESET}/pc-chain-config.json:/pc-chain-config.json - midnight-data-testnet:/node + \ No newline at end of file From ef11ff956afba8a09dbe6206a9a73c4d5d30075b Mon Sep 17 00:00:00 2001 From: Scott Buckel Date: Fri, 30 Jan 2026 13:06:45 -0500 Subject: [PATCH 2/3] preprod fixes --- .envrc | 2 +- .envrc.preprod | 60 ++++++++++++++++++++++++++++++++++++++ compose-partner-chains.yml | 11 +++++++ compose.yml | 10 +++++-- 4 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 .envrc.preprod diff --git a/.envrc b/.envrc index 0c35b4c..29b789f 100644 --- a/.envrc +++ b/.envrc @@ -5,7 +5,7 @@ export MIDNIGHT_NODE_IMAGE="ghcr.io/midnight-ntwrk/midnight-node:0.18.0-rc.7" #export BOOTNODES="/dnsaddr/bootnodes.preview.midnight.network" #export BOOTNODES="/dns/bootnodes.preview.midnight.network" #export ARGS="--bootnodes /dns/midnight-7-midnight-node-boot-07/tcp/30333/ws/p2p/12D3KooWK66i7dtGVNSwDh9tTeqov1q6LSdWsRLJvTyzTCaywYgK --bootnodes /dns/bootnodes.preview.midnight.network/tcp/30333/ws/p2p/12D3KooWK66i7dtGVNSwDh9tTeqov1q6LSdWsRLJvTyzTCaywYgK --tracing-targets=info --rpc-methods unsafe --unsafe-rpc-external --state-pruning archive --blocks-pruning archive --rpc-cors=all --tx-ban-seconds 18000 --no-prometheus --no-telemetry" -export ARGS="--bootnodes /dns/bootnode-1.preview.midnight.network/tcp/30333/ws/p2p/12D3KooWK66i7dtGVNSwDh9tTeqov1q6LSdWsRLJvTyzTCaywYgK --bootnodes /dns/bootnode-2.preview.midnight.network/tcp/30333/ws/p2p/12D3KooWHqFfXFwb7WW4jwR8pr4BEf562v5M6c8K3CXAJq4Wx6ym --tracing-targets=info --rpc-methods unsafe --unsafe-rpc-external --rpc-cors=all --tx-ban-seconds 18000 --no-prometheus --no-telemetry" +export ARGS="--bootnodes /dns/bootnode-1.preview.midnight.network/tcp/30333/ws/p2p/12D3KooWK66i7dtGVNSwDh9tTeqov1q6LSdWsRLJvTyzTCaywYgK --bootnodes /dns/bootnode-2.preview.midnight.network/tcp/30333/ws/p2p/12D3KooWHqFfXFwb7WW4jwR8pr4BEf562v5M6c8K3CXAJq4Wx6ym --tracing-targets=info --rpc-methods unsafe --unsafe-rpc-external --rpc-cors=all --tx-ban-seconds 18000 --no-prometheus --telemetry-url 'wss://telemetry-test.devnet.midnight.network/submit 0'" #source ./.envrc.${CFG_PRESET} diff --git a/.envrc.preprod b/.envrc.preprod new file mode 100644 index 0000000..5b3ad10 --- /dev/null +++ b/.envrc.preprod @@ -0,0 +1,60 @@ +# If your on windows use wsl / git bash / cygwin / msys2 with direnv + +export CFG_PRESET=preprod +export MIDNIGHT_NODE_IMAGE="ghcr.io/midnight-ntwrk/midnight-node:0.20.0" +#export BOOTNODES="/dnsaddr/bootnodes.preview.midnight.network" +#export BOOTNODES="/dns/bootnodes.preview.midnight.network" +#export ARGS="--bootnodes /dns/midnight-7-midnight-node-boot-07/tcp/30333/ws/p2p/12D3KooWK66i7dtGVNSwDh9tTeqov1q6LSdWsRLJvTyzTCaywYgK --bootnodes /dns/bootnodes.preview.midnight.network/tcp/30333/ws/p2p/12D3KooWK66i7dtGVNSwDh9tTeqov1q6LSdWsRLJvTyzTCaywYgK --tracing-targets=info --rpc-methods unsafe --unsafe-rpc-external --state-pruning archive --blocks-pruning archive --rpc-cors=all --tx-ban-seconds 18000 --no-prometheus --no-telemetry" +export ARGS="--bootnodes /dns/bootnode-1.preprod.midnight.network/tcp/30333/ws/p2p/12D3KooWQxxUgq7ndPfAaCFNbAxtcKYxrAzTxDfRGNktF75SxdX5 --bootnodes /dns/bootnode-2.preprod.midnight.network/tcp/30333/ws/p2p/12D3KooWNrUBs22FfmgjqFMa9ZqKED2jnxwsXWw5E4q2XVwN35TJ --telemetry-url 'wss://telemetry.shielded.tools./submit 1' --state-pruning archive --blocks-pruning archive --rpc-cors=all --name=scotts_local_preprod_node" + +#source ./.envrc.${CFG_PRESET} + +# This repository only accepts signed commits: + +# point out to users at commit time that commits need to be signed, +# not once they've done many commits and are trying to push a PR: +git config --local commit.gpgSign true +git config --local tag.gpgSign true + +# docker on mac expects linux/arm64/v8 but currently we don't publish that build +if [[ "$(uname -s)" == "Darwin" ]] && [[ "$(uname -m)" == "arm64" ]]; then + export DOCKER_DEFAULT_PLATFORM=linux/arm64 +fi + +export POSTGRES_HOST="postgres" # TODO: replace with IP or host to postgres connection if not connecting to the docker one. +export POSTGRES_PORT="5432" +export POSTGRES_USER="postgres" + +# A random password is used for your safety. Docker (but not podman) exposes +# ports to the internet by default. This needs to be unguessable. +if [ ! -f postgres.password ]; then + uuidgen | tr -d '-' | head -c 16 > postgres.password +fi +export POSTGRES_PASSWORD="$(cat ./postgres.password)" + +export POSTGRES_DB="cexplorer" + +# We bring together the above variables into a database connection string: +export DB_SYNC_POSTGRES_CONNECTION_STRING="psql://${POSTGRES_USER}:$POSTGRES_PASSWORD@${POSTGRES_HOST}:$POSTGRES_PORT/$POSTGRES_DB" + + +# To start with debug logs, add "-l debug" to APPEND_ARGS +# To expose safe rpc method to the host port 9944, add "--unsafe-rpc-external" to APPEND_ARGS or --validator +#export APPEND_ARGS="--allow-private-ip --pool-limit 10 --trie-cache-size 0 --prometheus-external --rpc-external --rpc-cors all" + + +# Validator Values: +if [ ! -f node.privatekey ]; then + # generate node key like this: + DOCKER_DEFAULT_PLATFORM=linux/amd64 docker run --rm -it docker.io/parity/subkey:latest generate-node-key | sed -n '2p' > midnight-node.privatekey + # Use the second line of output for NODE_KEY (that's what sed -n '2p' does) +fi +export NODE_KEY="$(cat ./midnight-node.privatekey)" + +# +# Partner chains config: +# +export CARDANO_NETWORK=preprod +export CARDANO_IMAGE="ghcr.io/intersectmbo/cardano-node:10.5.3" +export CARDANO_DATA_DIR=./cardano-data-preprod +export CARDANO_CONFIG_DIR=./cardano-config/${CARDANO_NETWORK} diff --git a/compose-partner-chains.yml b/compose-partner-chains.yml index 4b73f4b..f18e510 100644 --- a/compose-partner-chains.yml +++ b/compose-partner-chains.yml @@ -42,8 +42,19 @@ services: - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DB=${POSTGRES_DB} - POSTGRES_USER=${POSTGRES_USER} + command: > + bash -c " + cp /tmp/server.crt /var/lib/postgresql/server.crt && + cp /tmp/server.key /var/lib/postgresql/server.key && + chown postgres:postgres /var/lib/postgresql/server.* && + chmod 600 /var/lib/postgresql/server.key && + chmod 644 /var/lib/postgresql/server.crt && + exec gosu postgres postgres -c ssl=on -c ssl_cert_file=/var/lib/postgresql/server.crt -c ssl_key_file=/var/lib/postgresql/server.key + " volumes: - postgres-data:/var/lib/postgresql/data + - ./postgres-tls/server.crt:/tmp/server.crt:ro + - ./postgres-tls/server.key:/tmp/server.key:ro ports: - "${POSTGRES_PORT}:${POSTGRES_PORT}" healthcheck: diff --git a/compose.yml b/compose.yml index be0e9df..bc7c8eb 100644 --- a/compose.yml +++ b/compose.yml @@ -30,13 +30,19 @@ services: - CFG_PRESET=${CFG_PRESET} - DB_SYNC_POSTGRES_CONNECTION_STRING=${DB_SYNC_POSTGRES_CONNECTION_STRING} - NODE_KEY=${NODE_KEY} - - CARDANO_SECURITY_PARAMETER=432 + - CARDANO_SECURITY_PARAMETER=2160 - ARGS=${ARGS} + - MC__FIRST_EPOCH_TIMESTAMP_MILLIS=1655769600000 + - MC__FIRST_EPOCH_NUMBER=4 + - MC__FIRST_SLOT_NUMBER=86400 + - MC__EPOCH_DURATION_MILLIS=432000000 + - MC__SLOT_DURATION_MILLIS=1000 healthcheck: test: [ "CMD", "curl", "-f", "http://localhost:9944/health" ] interval: 2s volumes: - ./data:/data - ./envs/${CFG_PRESET}/pc-chain-config.json:/pc-chain-config.json - - midnight-data-testnet:/node + # - midnight-data-testnet:/node + - ./chain-data:/node \ No newline at end of file From d80e4b7870b29b8789bcfc27c56dbeaa0c309416 Mon Sep 17 00:00:00 2001 From: Scott Buckel Date: Fri, 30 Jan 2026 13:07:02 -0500 Subject: [PATCH 3/3] preprod fixes --- postgres-tls/server.crt | 19 +++++++++++++++++++ postgres-tls/server.key | 28 ++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 postgres-tls/server.crt create mode 100644 postgres-tls/server.key diff --git a/postgres-tls/server.crt b/postgres-tls/server.crt new file mode 100644 index 0000000..5cd77b4 --- /dev/null +++ b/postgres-tls/server.crt @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDBzCCAe+gAwIBAgIUYVRklM9WcTfkUPnqwOgFAIXNM6UwDQYJKoZIhvcNAQEL +BQAwEzERMA8GA1UEAwwIcG9zdGdyZXMwHhcNMjYwMTMwMTc0NDE3WhcNMzYwMTI4 +MTc0NDE3WjATMREwDwYDVQQDDAhwb3N0Z3JlczCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAL1lcP36zmrUfLUVQs5QXifHW4SXCcHGz2QzTWJt40WnQyaz +6HysySPCJf6++oCZbGFvJn2FORH4u8uXDPfjs9wT726+D+An6dcNTLB+vm3SrEho +mD+wTolJGOodd+2wsaAjdMWEtBYm9FU/MB81a3oRj7JlMLA8YnWEKDt9VGpEv/r3 +3Trtv5vPXi7iFieMyqPF3LcEu3i3F4u2t6Lrl7hSsPuU1obdRZBfJ2KdmAgP8VPH +qvXksfOGMacfHl7zahKkvGr/mBj5ZtK621BBeZvwkDyodPpYXFMx6YMCBQSL7yVS +Uy4nbsNfp9R5h99hrF3yLn+U5r3PtaCqmXkMVqcCAwEAAaNTMFEwHQYDVR0OBBYE +FMwp07r7okNAXbPbRGNK5gIyf2POMB8GA1UdIwQYMBaAFMwp07r7okNAXbPbRGNK +5gIyf2POMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAEav1O57 +g++BXeF1R159JDDWn5BqmifV7mgH+V8gP61y03p2gqSx7WwBjaW5UnelyiiEpMfp +rMMVF9w9Wy0P+tX0Crs6W1yLy5R5kt1TH3ZnbNcFH26meS2ggzPwnyKO4OM7Qq0Y +Y1ZpFpXpXCLyBOcJMB3ITRpmK5SzrwouJaiaj+DNdlG1rEEWTCYemQpsfYX6tuO0 +/f6lDbrjmpIYqt2seF7EMvSEEWH1ilLkCTXPMXis+O+CbmOKdQpDgQ1zf6eVc0AR +SHhJp9tzTxSw/y1MacYmndZAa7c/v7xzYg19wtosT90HtGY0agWIK0JJl0GhMbr/ +c85tgNwTDogwBNQ= +-----END CERTIFICATE----- diff --git a/postgres-tls/server.key b/postgres-tls/server.key new file mode 100644 index 0000000..b1800c1 --- /dev/null +++ b/postgres-tls/server.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC9ZXD9+s5q1Hy1 +FULOUF4nx1uElwnBxs9kM01ibeNFp0Mms+h8rMkjwiX+vvqAmWxhbyZ9hTkR+LvL +lwz347PcE+9uvg/gJ+nXDUywfr5t0qxIaJg/sE6JSRjqHXftsLGgI3TFhLQWJvRV +PzAfNWt6EY+yZTCwPGJ1hCg7fVRqRL/699067b+bz14u4hYnjMqjxdy3BLt4txeL +trei65e4UrD7lNaG3UWQXydinZgID/FTx6r15LHzhjGnHx5e82oSpLxq/5gY+WbS +uttQQXmb8JA8qHT6WFxTMemDAgUEi+8lUlMuJ27DX6fUeYffYaxd8i5/lOa9z7Wg +qpl5DFanAgMBAAECggEAUggZYBAdDp1ZJE+An36kwWLyCyQmGDWFhzdHOa4xxW30 +QlOjCzkFZ4UEUumh80hAbpUnXS9yMAwFPuF+PvHzaYuC5XrRwntXJ4t9n2ZOEaAx +ea0/4Dn7UjAEaAZ6dstUq/EfdxuKqpuVsUSMkb/f/L+VdyWn6HVHCfJDQL0AboP4 +ylRTSaC5i9AIarRIOv6tbgcS2M4RX6npIvovwp6lnn+/4wSgwxF7aDvmwXnmOvYv +Y4WHwGY7lnZR1JbyPNnYH41FETI2/zfoFfIt7nAmu+Ap/AxAT76s96ZIQyXdUEWg +gUUCyLT9Lo/78jwOicaMqCAKB2F6zWO1XU/5zUPGXQKBgQDcZ8CDSJ/eYJhwaHRV +uZzkCJErVk0sx/wfaQBWdLC5L41te1UBFjR9J2GkTVUVAruffu6Ppj5IsCZs9iqB +nNN4DR3tSZfueh87wPNtY/vcVwrHo3FB6rbCAGiAcM97QYki7lobBo6exfBy4aAR +xNd0H7/h0ZEFXkKaHSVwsDXhBQKBgQDb+62771rg8T9AQN6BAMVutugdx25/+EJv +sV8jwrNybjBsvbPbThIH+xzhDxl7Y0OospURNflWkNBcCOBQFU7UTANcUqhwBMzj +1i+GMhgIRo/9dIMOkkx0mYuOegq+VuiwzID7l5tI2n1wML/L0+w8RKpmaAHr8b+h +5FwZx56YuwKBgBm0M9xbrOFHTJ/XXrHcqrJhWWS/dNKjJAEZwsNSaoW+SPUarAgr +acWqwRVjO2fu4KiyKeowzhS2DlUoxD5HZtYaWYIh0gkqzteuIfWA8o94yzYLFptE +XznyyD0qatgKBY9AUtvSAPH9TZRoQb2wwhu11C/mu83vdz735TTmJ/JtAoGBAIwV +227gX5j7R/Ic3RR9bzyv0WSVSXLIn1YNN67IIAnwzXmR3GT9dFIMwTk4qlt+vOlC +v9az7lIH6geRx3Z3+zkKJuG16XlcNTWpgZ4NbGxosu0OMx8mXvWpictzQEAxjAB6 +WnDc/JAKQvMcuCaOj9NZTsHj3cVor0Xi7BummQJdAoGAGBbKgz1bf6DbjZuwJyiy +XN/PdnhsdMxIqBYv60eabcRMWMOpRgSwnlrkA/1NtwF67pNS8dQ3Q4fe1kcCXnm6 +2TPWuG1jw3jxx0yawm0MHx+TvJosu98fEJll+buIHK5gek4kgraxBDWTwCNrixch +5QYbXnQmAv6CHvRRwXYQbKU= +-----END PRIVATE KEY-----