From 91100687f9330ab030ae2e6217ada619c6ee7c87 Mon Sep 17 00:00:00 2001 From: Ducca Date: Wed, 15 Oct 2025 12:15:34 +0200 Subject: [PATCH 1/3] chore(docker): add fixes to simplify deployment --- scripts/download_db.sh | 16 ++++++++++++- scripts/generate_libp2p.sh | 46 ++++++++++++++++++++++++++------------ 2 files changed, 47 insertions(+), 15 deletions(-) diff --git a/scripts/download_db.sh b/scripts/download_db.sh index d50681c..bed1ad4 100755 --- a/scripts/download_db.sh +++ b/scripts/download_db.sh @@ -16,8 +16,22 @@ DB_DIR="db" PG_DUMP="archive.sql" BASE_URL="https://storage.googleapis.com/mina-archive-dumps" +# Detect which docker compose command to use +get_docker_compose_cmd() { + if command -v docker &> /dev/null && docker compose version &> /dev/null; then + echo "docker compose" + elif command -v docker-compose &> /dev/null; then + echo "docker-compose" + else + echo "Error: Neither 'docker compose' nor 'docker-compose' found" >&2 + exit 1 + fi +} + +DOCKER_COMPOSE_CMD=$(get_docker_compose_cmd) + # Stop docker containers -docker-compose stop postgres +$DOCKER_COMPOSE_CMD stop postgres # clear db and data directories rm -rf "$DB_DIR" diff --git a/scripts/generate_libp2p.sh b/scripts/generate_libp2p.sh index b502adc..4f7d00a 100755 --- a/scripts/generate_libp2p.sh +++ b/scripts/generate_libp2p.sh @@ -9,22 +9,36 @@ # - Docker: https://docs.docker.com/engine/install # - Mina Daemon: https://docs.minaprotocol.com/node-operators/getting-started +# Usage: ./generate_libp2p.sh [docker|binary] +# - docker: Generate keypair using Docker only +# - binary: Generate libp2p keypair using mina binary only # Enable debug mode set -x # Exit on error, and pipefail set -eo pipefail +. ../.env + +# Get mode from first argument +MODE="${1}" + +# Validate mode +if [[ "$MODE" != "docker" && "$MODE" != "binary" ]]; then + echo "Usage: $0 [docker|binary]" + echo " docker - Generate keypair using Docker only" + echo " binary - Generate libp2p keypair using mina binary only" + exit 1 +fi # Set environment variable # Make sure these match the environment variables used in the docker-compose.yml file -export MINA_PRIVKEY_PASS="passlib" -export MINA_LIBP2P_PASS="passlib" +export MINA_LIBP2P_PASS=$MINA_LIBP2P_PASS # Constants KEYPAIR_DIR="keys" KEYPAIR_NAME="libp2p-keys" -MINA_KEYPAIR_IMAGE="minaprotocol/mina-generate-keypair:1.3.0-9b0369c" +MINA_KEYPAIR_IMAGE=$MINA # Derived Paths HOME_KEYPAIR_DIR="$HOME/$KEYPAIR_DIR" @@ -39,19 +53,23 @@ if [ ! -d $HOME_KEYPAIR_DIR ]; then fi # Generate Mina keypair using Docker -echo "Generating Mina keypair using Docker..." -docker run --interactive --tty --rm \ - --env "MINA_PRIVKEY_PASS=$MINA_PRIVKEY_PASS" \ - --volume $HOME_KEYPAIR_DIR:/keys $MINA_KEYPAIR_IMAGE \ - --privkey-path $KEYPAIR_PATH +if [[ "$MODE" == "docker" ]]; then + echo "Generating Mina keypair using Docker..." + docker run --interactive --tty --rm \ + --env "MINA_LIBP2P_PASS=$MINA_LIBP2P_PASS" \ + --volume $HOME_KEYPAIR_DIR:/keys $MINA_KEYPAIR_IMAGE \ + --privkey-path $KEYPAIR_PATH -# Set permissions -echo "Setting permissions for "$HOME_KEYPAIR_DIR/$KEYPAIR_NAME"..." -sudo chown $USER:$USER "$HOME_KEYPAIR_DIR/$KEYPAIR_NAME" -chmod 600 "$HOME_KEYPAIR_DIR/$KEYPAIR_NAME" + # Set permissions + echo "Setting permissions for "$HOME_KEYPAIR_DIR/$KEYPAIR_NAME"..." + sudo chown $USER:$USER "$HOME_KEYPAIR_DIR/$KEYPAIR_NAME" + chmod 600 "$HOME_KEYPAIR_DIR/$KEYPAIR_NAME" +fi # Generate libp2p keypair -echo "Generating libp2p keypair..." -mina advanced generate-libp2p-keypair --privkey-path "$HOME_KEYPAIR_DIR/$KEYPAIR_NAME" +if [[ "$MODE" == "binary" ]]; then + echo "Generating libp2p keypair..." + mina advanced generate-libp2p-keypair --privkey-path "$HOME_KEYPAIR_DIR/$KEYPAIR_NAME" +fi echo "Done." From 6a21767d436bd3d76cdc091fc519c73414804743 Mon Sep 17 00:00:00 2001 From: Ducca Date: Wed, 15 Oct 2025 12:15:54 +0200 Subject: [PATCH 2/3] chore(env): fix envs --- .env.example.compose | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.env.example.compose b/.env.example.compose index 27b87b2..8623c93 100644 --- a/.env.example.compose +++ b/.env.example.compose @@ -1,6 +1,6 @@ # Fields to start Mina daemon (Required) -MINA=gcr.io/o1labs-192920/mina-daemon:1.3.2beta2-rampup-2884275-bionic-berkeley -PEER_LIST_URL=https://storage.googleapis.com/seed-lists/berkeley_seeds.txt +MINA=minaprotocol/mina-daemon:3.2.0-97ad487-focal-mainnet +PEER_LIST_URL=https://bootnodes.minaprotocol.com/networks/mainnet.txt MINA_LIBP2P_PASS=passlib KEYPATH=/root/keys/libp2p-keys EXTRA_FLAGS="--libp2p-keypair ${KEYPATH}" @@ -9,7 +9,7 @@ FILE_LOG_LEVEL=Debug VERBOSE=true # Fields for Archive DB (Required) -ARCHIVE=gcr.io/o1labs-192920/mina-archive:1.3.2beta2-rampup-2884275-bionic +ARCHIVE=minaprotocol/mina-archive:3.2.0-97ad487-focal-mainnet # Fields for Postgres (Required) POSTGRES=postgres:13.3 From 10c1a8cd7bea5b622e876c6f6c31a0ee32398653 Mon Sep 17 00:00:00 2001 From: Ducca Date: Wed, 15 Oct 2025 12:43:33 +0200 Subject: [PATCH 3/3] chore(libp2p): fix libp2p generating, use global env --- scripts/generate_libp2p.sh | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/scripts/generate_libp2p.sh b/scripts/generate_libp2p.sh index 4f7d00a..9cb1b39 100755 --- a/scripts/generate_libp2p.sh +++ b/scripts/generate_libp2p.sh @@ -18,7 +18,17 @@ set -x # Exit on error, and pipefail set -eo pipefail -. ../.env + +# Get script directory and load .env from project root +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" + +if [ -f "$PROJECT_ROOT/.env" ]; then + . "$PROJECT_ROOT/.env" +else + echo "Error: .env file not found at $PROJECT_ROOT/.env" + exit 1 +fi # Get mode from first argument MODE="${1}" @@ -36,13 +46,14 @@ fi export MINA_LIBP2P_PASS=$MINA_LIBP2P_PASS # Constants + KEYPAIR_DIR="keys" KEYPAIR_NAME="libp2p-keys" MINA_KEYPAIR_IMAGE=$MINA # Derived Paths HOME_KEYPAIR_DIR="$HOME/$KEYPAIR_DIR" -KEYPAIR_PATH="$KEYPAIR_DIR/$KEYPAIR_NAME" +KEYPAIR_PATH="/root/$KEYPAIR_DIR/$KEYPAIR_NAME" # Create keypair directory if not exists if [ ! -d $HOME_KEYPAIR_DIR ]; then @@ -57,19 +68,27 @@ if [[ "$MODE" == "docker" ]]; then echo "Generating Mina keypair using Docker..." docker run --interactive --tty --rm \ --env "MINA_LIBP2P_PASS=$MINA_LIBP2P_PASS" \ - --volume $HOME_KEYPAIR_DIR:/keys $MINA_KEYPAIR_IMAGE \ - --privkey-path $KEYPAIR_PATH + --volume $HOME_KEYPAIR_DIR:/root/keys $MINA_KEYPAIR_IMAGE \ + libp2p generate-keypair --privkey-path $KEYPAIR_PATH + + # Check if keypair was generated + if [ ! -f "$HOME_KEYPAIR_DIR/$KEYPAIR_NAME" ]; then + echo "Error: Keypair was not generated at $HOME_KEYPAIR_DIR/$KEYPAIR_NAME" + exit 1 + fi # Set permissions echo "Setting permissions for "$HOME_KEYPAIR_DIR/$KEYPAIR_NAME"..." sudo chown $USER:$USER "$HOME_KEYPAIR_DIR/$KEYPAIR_NAME" chmod 600 "$HOME_KEYPAIR_DIR/$KEYPAIR_NAME" + + echo "Docker keypair generation completed successfully." fi # Generate libp2p keypair if [[ "$MODE" == "binary" ]]; then echo "Generating libp2p keypair..." - mina advanced generate-libp2p-keypair --privkey-path "$HOME_KEYPAIR_DIR/$KEYPAIR_NAME" + mina libp2p generate-keypair --privkey-path "$HOME_KEYPAIR_DIR/$KEYPAIR_NAME" fi echo "Done."