From bd3a9959969bb2b23762f9038688f094bd25d22b Mon Sep 17 00:00:00 2001 From: ch4ot1c Date: Wed, 16 May 2018 00:23:32 -0500 Subject: [PATCH 1/3] Uglify, add store-demo service + swapfile for testing, modularity --- btcp_store_demo.sh | 78 ++++++++++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 33 deletions(-) diff --git a/btcp_store_demo.sh b/btcp_store_demo.sh index 462b534..7e83d10 100755 --- a/btcp_store_demo.sh +++ b/btcp_store_demo.sh @@ -25,7 +25,7 @@ make_swapfile() { local PREV=$PWD cd / -sudo dd if=/dev/zero of=swapfile bs=1M count=3000 +sudo dd if=/dev/zero of=swapfile bs=1M count=$1 sudo mkswap swapfile sudo chmod 0600 /swapfile sudo swapon swapfile @@ -35,18 +35,24 @@ cd $PREV } prompt_swapfile() { + #[yY][eE][sS]|[yY]) echo "" -echo "Can we make you a 3gb swapfile? EC2 Micro needs it because it takes a lot of memory to build BTCP." -echo "" -read -r -p "[y/N] " response +echo "Can we make you a swapfile? EC2 Micro has limited RAM." +echo "1) 1GB - recommended for running Bitcore + MongoDB" +echo "2) 3GB - required when building btcpd from source" +echo "3) No Swapfile - not recommended on EC2 Micro" +read -r -p "[1/2/3] " response case "$response" in - [yY][eE][sS]|[yY]) - make_swapfile - ;; - *) - echo "Not creating swapfile." - ;; + [1]) + make_swapfile 1024 + ;; + [2]) + make_swapfile 3072 + ;; + *) + echo "Not creating swapfile." + ;; esac } @@ -108,12 +114,7 @@ showmetrics=0 EOF fi - -cd ~/.btcprivate - -# Download + decompress blockchain.tar.gz (blocks/, chainstate/) to quickly sync past block 300,000 -fetch_btcp_blockchain - + } fetch_zcash_params() { @@ -122,6 +123,7 @@ wget -qO- https://raw.githubusercontent.com/BTCPrivate/BitcoinPrivate/master/btc } +# Download + decompress blockchain.tar.gz (blocks/, chainstate/) to quickly sync past block 300,000 fetch_btcp_blockchain() { cd ~/.btcprivate @@ -151,8 +153,6 @@ rm -rf $FILE install_nvm_npm() { -cd ~ - # Install npm sudo apt-get -y install npm @@ -198,7 +198,7 @@ npm install BTCPrivate/bitcore-node-btcp cd btcp-explorer # Install Insight API / UI (Explorer) (Headless) -../node_modules/bitcore-node-btcp/bin/bitcore-node install BTCPrivate/insight-api-btcp BTCPrivate/insight-ui-btcp BTCPrivate/store-demo # BTCPrivate/address-watch, BTCPrivate/bitcore-wallet-service (untested) +../node_modules/bitcore-node-btcp/bin/bitcore-node install ch4ot1c/store-demo #BTCPrivate/insight-api-btcp BTCPrivate/insight-ui-btcp BTCPrivate/store-demo BTCPrivate/address-watch, BTCPrivate/bitcore-wallet-service (untested) # Symlink to bitcore-node to btcp-explorer dir ln -s node_modules/bitcore-node-btcp/bin/bitcore-node bitcore-node @@ -213,7 +213,7 @@ cat << EOF > bitcore-node.json "port": $PORT, "services": [ "bitcoind", - "insight-api-btcp", + "$BITCORE_SERVICE_APP", "web" ], "servicesConfig": { @@ -223,8 +223,8 @@ cat << EOF > bitcore-node.json "exec": "$HOME/BitcoinPrivate/src/btcpd" } }, - "insight-api-btcp": { - "routePrefix": "api" + "store-demo": { + "mongoURL": "http://localhost:27017/store-demo" } } } @@ -232,32 +232,38 @@ EOF #TODO Prompt option + Automate SSL Setup (LetsEncrypt) #"https": true, -#"privateKeyFile": "/etc/ssl/bws.bitpay.com.key", -#"certificateFile": "/etc/ssl/bws.bitpay.com.crt", +#"privateKeyFile": "/etc/ssl/x.key", +#"certificateFile": "/etc/ssl/x.crt", } -install_bower_browserify_js_libs() { +install_bower_browserify_uglify_js_libs() { echo "Globally installing bower, browserify" - npm install -g bower browserify - #sudo npm install -g pm2 + npm install -g bower browserify uglify - # Build bitcore-lib-btcp.js + copy to invoice server's js/ dir + # Build bitcore-lib.js + uglify + copy to widget's js/ dir cd ~/btcp-explorer/node_modules/store-demo bower install - cd node_modules/bitcore-lib-btcp - browserify --require ./index.js:bitcore-lib-btcp -o bitcore-lib-btcp.js - cp bitcore-lib-btcp.js ~/btcp-explorer/node_modules/store-demo/static/js/bitcore-lib-btcp + cd node_modules/bitcore-lib + browserify --require ./index.js:bitcore-lib -o bitcore-lib.js + uglify bitcore-lib.js + cp {bitcore-lib.js,bitcore-lib.min.js} ~/btcp-explorer/node_modules/store-demo/static/js/bitcore-lib } run_install() { +echo --- echo "" echo "BTCP Merchant Backend Setup - Installing dependencies." echo "" +echo --- -install_ubuntu > /dev/null +install_ubuntu + +echo "" + +prompt_swapfile echo "" echo "How would you like to fetch BTCP (btcpd and btcp-cli):" @@ -271,7 +277,6 @@ case "$response" in fetch_btcp_binaries ;; [2]) - prompt_swapfile clone_and_build_btcp ;; *) @@ -281,14 +286,21 @@ esac init_btcprivate_dotdir +fetch_btcp_blockchain + + install_nvm_npm install_mongodb +cd ~ + install_bitcore install_bower_browserify_js_libs +cd ~ + echo "Installation Complete." echo "" From 667c0ea6ae39de76acb19a5cb13b509f49c936c5 Mon Sep 17 00:00:00 2001 From: Jon Layton Date: Wed, 16 May 2018 06:13:03 +0000 Subject: [PATCH 2/3] Minor fixes + comments --- btcp_store_demo.sh | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/btcp_store_demo.sh b/btcp_store_demo.sh index 7e83d10..1711224 100755 --- a/btcp_store_demo.sh +++ b/btcp_store_demo.sh @@ -35,7 +35,6 @@ cd $PREV } prompt_swapfile() { - #[yY][eE][sS]|[yY]) echo "" echo "Can we make you a swapfile? EC2 Micro has limited RAM." @@ -144,7 +143,7 @@ cd ~/BitcoinPrivate/src local RELEASE="1.0.12" local COMMIT="69aa9ce" local FILE="btcp-${RELEASE}-explorer-${COMMIT}-linux.tar.gz" -wget -c https://github.com/BTCPrivate/BitcoinPrivate/releases/download/v${RELEASE}-${COMMIT}/${FILE} +wget -c https://github.com/BTCPrivate/BitcoinPrivate/releases/download/${RELEASE}-${COMMIT}/${FILE} tar -zxvf $FILE echo "Downloading and extracting BTCP files - Done." rm -rf $FILE @@ -224,7 +223,7 @@ cat << EOF > bitcore-node.json } }, "store-demo": { - "mongoURL": "http://localhost:27017/store-demo" + "mongoURL": "mongodb://localhost:27017/store-demo" } } } @@ -238,15 +237,16 @@ EOF } install_bower_browserify_uglify_js_libs() { - echo "Globally installing bower, browserify" + echo "Globally installing bower, browserify, uglify" npm install -g bower browserify uglify - # Build bitcore-lib.js + uglify + copy to widget's js/ dir cd ~/btcp-explorer/node_modules/store-demo bower install + + # Build bitcore-lib.js + uglify + copy to widget's js/ dir cd node_modules/bitcore-lib browserify --require ./index.js:bitcore-lib -o bitcore-lib.js - uglify bitcore-lib.js + uglify -s bitcore-lib.js -o bitcore-lib.min.js cp {bitcore-lib.js,bitcore-lib.min.js} ~/btcp-explorer/node_modules/store-demo/static/js/bitcore-lib } @@ -297,7 +297,7 @@ cd ~ install_bitcore -install_bower_browserify_js_libs +install_bower_browserify_uglify_js_libs cd ~ @@ -314,6 +314,9 @@ echo "cd ~/btcp-explorer; ./bitcore-node start" echo "" echo "Runs on port $PORT (bitcore-node.json)." echo "" +echo "Note - MongoDB needs to be running in the background for store-demo:" +echo "mongod &" +echo "" } From 970a84f38cbe6c0b77fc1fcc973cc3956cc6bccc Mon Sep 17 00:00:00 2001 From: J62 Date: Sat, 19 May 2018 01:41:17 -0700 Subject: [PATCH 3/3] update random password generation update random password generation to not include /=+ for this https://github.com/ch4ot1c/bitcore-install/blob/master/btcp_store_demo.sh#L92 I suggest `local RPCPASSWORD=$(openssl rand -base64 32 | tr -d /=+ | cut -c -30)` --- btcp_store_demo.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/btcp_store_demo.sh b/btcp_store_demo.sh index 1711224..d302ba5 100755 --- a/btcp_store_demo.sh +++ b/btcp_store_demo.sh @@ -89,7 +89,7 @@ fi if [ ! -e ~/.btcprivate/btcprivate.conf ] then -local RPCPASSWORD=$(head -c 32 /dev/urandom | base64) +local RPCPASSWORD=$(openssl rand -base64 32 | tr -d /=+ | cut -c -30) touch ~/.btcprivate/btcprivate.conf cat << EOF > ~/.btcprivate/btcprivate.conf #gen=1