Set Up Advanced Wallets Infrastructure (Production)

Set up advanced wallets in production, leveraging two instances of Express servers to manage your user and backup keys.

git clone git@github.com:BitGo/advanced-wallets.git
npm install
npm run build
openssl genrsa -out private.key 2048
openssl req -new -key private.key -out request.csr
openssl x509 -in /path/to/client-cert.crt -noout -fingerprint -sha256 | cut -d'=' -f2
docker-compose up -d
# Test MBE
curl --cert /path/to/client-cert.crt --key /path/to/client-key.key \
  --cacert /secure/certs/mbe-ca.crt \
  https://YOUR_IP_OR_HOSTNAME:3081/advancedwallet/ping
# Test connection between MBE & AWM
curl --cert /path/to/client-cert.crt --key /path/to/client-key.key \
  --cacert /secure/certs/mbe-ca.crt \
  https://YOUR_IP_OR_HOSTNAME:3081/ping/advancedWalletManager
docker-compose down
Response
// 4. Generate mTLS Key
Generating RSA private key, 2048 bit long modulus
.......+++++
.......................+++++

// 5. Get Fingerprints
sha256:D1:E9:5A:F2:8C:3B:67:0A:47:15:F9:6D:E2:3F:8B:12:9E:5C:7A:D4:8F:1E:6B:0D:C3:A9:2F:5B:E8:4D:7C:10

// 6. Start Services
Creating network "advanced-wallets_my-internal-network" with driver "bridge"
Creating network "advanced-wallets_my-public-network" with driver "bridge"
Creating advanced-wallet-manager ... done
Creating master-bitgo-express    ... done

// 7. Test Connections
# Test MBE
{"status":"master express server is ok!","timestamp":"2025-12-24T18:30:15.482Z"}

# Test connection between MBE & AWM
{"status":"Successfully pinged advanced wallet manager","awmResponse":{"status":"advanced wallet manager server is ok!","timestamp":"2025-12-24T18:30:16.123Z"}}

// 8. Stop Services
Stopping master-bitgo-express    ... done
Stopping advanced-wallet-manager ... done
Removing master-bitgo-express    ... done
Removing advanced-wallet-manager ... done
Removing network advanced-wallets_my-internal-network
Removing network advanced-wallets_my-public-network