diff --git a/dist/setup.sh b/dist/setup.sh
index 6fb1977..bb504dd 100755
--- a/dist/setup.sh
+++ b/dist/setup.sh
@@ -359,12 +359,15 @@ install_docker() {
if [ ! -d $GATEKEEPER_DATAPATH ]; then
step " [32mcreate[0m $GATEKEEPER_DATAPATH"
sudo_if_required mkdir -p $GATEKEEPER_DATAPATH
- # prevent mounting installation.json as a directory
- sudo_if_required touch $GATEKEEPER_DATAPATH/installation.json
next
fi
if [ -d $GATEKEEPER_DATAPATH ]; then
+ if [[ ! -f $GATEKEEPER_DATAPATH/installation.json ]]; then
+ # prevent mounting installation.json as a directory
+ sudo_if_required touch $GATEKEEPER_DATAPATH/installation.json
+ fi
+
if [[ ! -d $GATEKEEPER_DATAPATH/certs ]]; then
sudo_if_required mkdir -p $GATEKEEPER_DATAPATH/certs > /dev/null 2>&1
fi
diff --git a/install/generator-cyphernode/generators/app/help.json b/install/generator-cyphernode/generators/app/help.json
index 5e9b339..136d7ae 100644
--- a/install/generator-cyphernode/generators/app/help.json
+++ b/install/generator-cyphernode/generators/app/help.json
@@ -7,11 +7,13 @@
"xpub": "Cyphernode can derive addresses from your default xPub key. With that functionality, you don't have to provide your xPub every time you call the derivation endpoints.",
"derivation_path": "Cyphernode can derive addresses from your default derivation path. With that functionality, you don't have to provide your derivation path every time you call the derivation endpoints.",
"proxy_datapath": "The proxy container (through where all the requests to Cyphernode goes) uses a sqlite3 database for its tasks. The DB will be mounted from a local path, easy to back up from outside Docker. Please provide where you want the proxy DB to be stored locally.",
+ "proxy_datapath_custom": "Provide the full path name where the Proxy's files will be saved.",
"gatekeeper_clientkeyspassword": "The Gatekeeper authenticates and authorizes (or not) all the requests to Cyphernode before delegating them (or not) to the proxy. Following the JWT (JSON Web Tokens) standard, it uses HMAC signature verification to allow or deny access. Signatures are created and verified using secret keys. We are going to generate the secret keys and keep them in an encrypted file. Please provide the encryption passphrase.",
"gatekeeper_clientkeyspassword_c": "Confirm encryption passphrase for the Gatekeeper's keys file.",
"gatekeeper_recreatekeys": "The Gatekeeper keys already exist, do you want to regenerate them? This will overwrite existing ones.",
"gatekeeper_recreatecert": "The Gatekeeper TLS (SSL) certificates already exist, do you want to regenerate them? This will overwrite existing ones.",
"gatekeeper_datapath": "The Gatekeeper's files (TLS certs, HMAC keys, Groups/API) will be stored in a container's mounted directory. Please provide the local mounted path to that directory.",
+ "gatekeeper_datapath_custom": "Provide the full path name where the Gatekeeper's files will be saved.",
"gatekeeper_edit_apiproperties": "Not recommended. If you know what you are doing, it is possible to manually edit the API endpoints/groups authorization.",
"gatekeeper_apiproperties": "You are about to edit the api.properties file. The format of the file is pretty simple: for each action, you will find what access group can access it. Admin group can do what Spender group can, and Spender group can do what Watcher group can. Internal group is for the endpoints accessible only within the Docker Swarm, like the backoffice tasks used by the Cron container. The access groups for each API id/key are found in the keys.properties file.",
"gatekeeper_sslcert": "** gatekeeper_sslcert **",
@@ -25,14 +27,17 @@
"bitcoin_prune_size": "Minimum size is 550 MB. Is the number of MB Bitcoin Core will allot for raw block & undo data.",
"bitcoin_uacomment": "User Agent string used by Bitcoin Core.",
"bitcoin_datapath": "Path name to where Bitcoin Core's data files (blockchain data, wallets, configs, etc.) are stored. Will be mounted in the Bitcoin node's container. If you already have a sync'ed node, you can copy data there to be used by the node, instead of resyncing everything. NOTE: only copy chainstate/ and blocks/ contents.",
+ "bitcoin_datapath_custom": "Provide the full path name where the Bitcoin Core's files will be saved.",
"bitcoin_expose": "By default, Bitcoin node ports (RPC and protocol) won't be published outside of Docker. Do you want to expose them so that your node can be accessed from outside of the Docker network?",
"lightning_implementation": "Multiple LN implementations exist. Please choose the one you want to use with Cyphernode.",
"lightning_external_ip": "If you want you LN node to be accessible from the Internet, provide the IP address that other LN nodes will use to connect to it. This is usually your router's public IP. NOTE: That won't make your router forward needed LN ports; you still have the responsability to configure and manage that part.",
"lightning_nodename": "LN nodes have names. Choose the name you want for yours.",
"lightning_nodecolor": "LN nodes have colors. Choose the color you want for yours in RGB format (RRGGBB). For example, pure red would be ff0000.",
"lightning_datapath": "Path name to where LN's data files are stored. Will be mounted in the LN node's container.",
+ "lightning_datapath_custom": "Provide the full path name where the LN's files will be saved.",
"lightning_expose": "By default, LN node ports won't be published outside of Docker. Do you want to expose them so that your node can be accessed from outside of the Docker network?",
"otsclient_datapath": "Full path where the OTS files will be stored. This path will be mounted to the otsclient container which will create the OTS files when stamping and update them when upgrading stamps. It will also be mounted to the proxy container so that it can serve the ots_getfile and send the OTS files to clients.",
+ "otsclient_datapath_custom": "Provide the full path name where the OTS files will be saved.",
"installer_mode": "As of today, only one installation mode is supported: local docker (self-hosted). In the next release, we will support trivially installing Cyphernode on a Lunanode VM (hosted at lunanode.com).",
"installer_cleanup": "Do you want to remove this configurator Docker image after installation? This would free about 150MB of disk space.",
"docker_mode": "Cyphernode Docker services can be run using Docker Swarm (https://docs.docker.com/engine/swarm/) or docker-compose (https://docs.docker.com/compose/overview/). Both will work, some users prefer one to another depending on deployment types, scalability, current framework, etc. If you don't know and the last Bitcoin block mined has an odd height number, choose Swarm... or not.",
diff --git a/install/generator-cyphernode/generators/app/prompters/999_installer.js b/install/generator-cyphernode/generators/app/prompters/999_installer.js
index 9823a6b..aca41c1 100644
--- a/install/generator-cyphernode/generators/app/prompters/999_installer.js
+++ b/install/generator-cyphernode/generators/app/prompters/999_installer.js
@@ -189,7 +189,7 @@ module.exports = {
value: "_custom"
}
],
- message: prefix()+'Where do you want to store your lightning node data?'+utils._getHelp('otsclient_datapath'),
+ message: prefix()+'Where do you want to store your OTS data?'+utils._getHelp('otsclient_datapath'),
},
{
when: function(props) { return installerDocker(props) && props.features.indexOf('otsclient') !== -1 && props.otsclient_datapath === '_custom' },
diff --git a/install/generator-cyphernode/generators/app/templates/installer/start.sh b/install/generator-cyphernode/generators/app/templates/installer/start.sh
index 5ba6fad..755ab73 100644
--- a/install/generator-cyphernode/generators/app/templates/installer/start.sh
+++ b/install/generator-cyphernode/generators/app/templates/installer/start.sh
@@ -21,6 +21,13 @@ docker stack deploy -c $current_path/docker-compose.yaml cyphernode
docker-compose -f $current_path/docker-compose.yaml up -d --remove-orphans
<% } %>
+arch=$(uname -m)
+case "${arch}" in arm*)
+ printf "\r\n\033[1;31mSince we're on a slow RPi, let's give Docker 30 more seconds before performing our tests...\033[0m\r\n"
+ sleep 30
+;;
+esac
+
# Will test if Cyphernode is fully up and running...
docker run --rm -it -v $current_path/testfeatures.sh:/testfeatures.sh \
-v <%= gatekeeper_datapath %>:/gatekeeper \