diff --git a/scripts/starter.sh b/scripts/starter.sh index 2003976..a0d7f19 100755 --- a/scripts/starter.sh +++ b/scripts/starter.sh @@ -9,7 +9,7 @@ SKIP_BUILD=false SET_ENVIRONMENT=false EXECUTABLE_PATH="/usr/bin/" SPECIFICATION_PATH="/etc/ghost/" -NODE_PATH="/var/lib/ghost" +BASE_PATH="/var/lib/ghost" SPECIFICATION_NAME="casper" TARGET="release" @@ -86,11 +86,12 @@ help() { echo -e "-m, --make-global\n\tStore compiled ghost executable and chain specification globally." echo -e "-a, --set-arguments\n\tPrepare CLI arguments for running ghost node." echo -e "-k, --check-keys\n\tCheck if your keys are already included in 'ghosties' file." - echo -e "-r, --insert-keys\n\tInsert session keys to the keystore via JSON RPC." + echo -e "-y, --insert-keys\n\tInsert session keys to the keystore via JSON RPC." echo -e "-r, --release\n\tCompile node with '--release' flag." echo -e "-p, --profile\n\tCompile node with '--profile [PROFILE]' flag." echo -e "-f, --features\n\tCompilation features '--features=\"FEATURE1,FEATURE2\"'" - echo -e "-e, --executable-path\n\tPath to executable ('/usr/lib/' is default)." + echo -e "-e, --executable-path\n\tPath to the executable ('/usr/lib/' is default)." + echo -e "-s, --base-path\n\tPath to the folder with chain database ('/var/lib/ghost' is default)." echo -e "-c, --specification-path\n\tPath to specification ('/etc/ghost' is default)." echo -e "-n, --specification-name\n\tSpecification name to be used ('casper' is default)." echo -e "-h, --help\n\tPrints help information." @@ -149,7 +150,12 @@ while [ $# -gt 0 ]; do if [[ "$1" != *=* ]]; then shift; fi SPECIFICATION_PATH=$(echo ${1#*=}/ | tr -s /) ;; - --specification-name*|-n*) if [[ "$1" != *=* ]]; then shift; fi + --base-path*|-?) + if [[ "$1" != *=* ]]; then shift; fi + BASE_PATH=$(echo ${1#*=}/ | tr -s /) + ;; + --specification-name*|-n*) + if [[ "$1" != *=* ]]; then shift; fi SPECIFICATION_NAME="${1#*=}" ;; --help|-h) @@ -259,6 +265,7 @@ fi if [[ $MAKE_GLOBAL = true ]]; then cd $PROJECT_FOLDER + echo "[+] trying to copy executable to '$EXECUTABLE_PATH'" sudo cp target/$TARGET/ghost $EXECUTABLE_PATH cp service/chain-specs/$SPECIFICATION_NAME.json $SPECIFICATION_PATH @@ -282,21 +289,24 @@ if [ $UNIT_FILE = true ]; then echo "[!] user ghost not found" if prompt "[?] do you want to create ghost user? (NOT RECOMMENDED: current $(whoami))"; then sudo useradd --system --create-home $user_name - if [ ! -d $NODE_PATH ]; then - echo "[+] create folder for the node at '$NODE_PATH'" - sudo mkdir $NODE_PATH + if [ ! -d $BASE_PATH ]; then + echo "[+] create folder for the node at '$BASE_PATH'" + sudo mkdir $BASE_PATH fi else user_name=$(whoami) fi - sudo chown $user_name $NODE_PATH - echo "[+] write permission to '$NODE_PATH'" + echo "[+] make $user_name owner of $BASE_PATH" + sudo chown -R "$user_name:" $BASE_PATH fi cp packaging/template.service /tmp/$unit_name sed -i -e "s/User=ghost/User=$user_name/g" /tmp/$unit_name + sed -i -e "s#/ReadWritePaths=/var/lib/ghost#/ReadWritePaths=$BASE_PATH#g" /tmp/$unit_name + echo "[+] prepare unit file for the $unit_name" sudo cp packaging/template.service /etc/systemd/system/$unit_name + echo "[+] reloading systemd because of updated unit file" sudo systemctl daemon-reload if prompt "[?] do you want to start the $unit_name?"; then @@ -347,7 +357,7 @@ if [[ $ARGUMENTS = true ]]; then fi # default for now - CLI_ARGS+=("--base-path=$NODE_PATH") + CLI_ARGS+=("--base-path=$BASE_PATH") CLI_ARGS+=("--state-pruning=archive") CLI_ARGS+=("--blocks-pruning=archive") CLI_ARGS+=("--rpc-methods=auto") @@ -356,7 +366,7 @@ if [[ $ARGUMENTS = true ]]; then CLI_ARGS+=("--no-mdns") CLI_ARGS+=("--no-hardware-benchmarks") - echo "GHOST_CLI_ARGS=\"$(IFS=' '; echo "${CLI_ARGS[*]}")\"" > /tmp/ghost + echo "[+] trying to save GHOST_CLI_ARGS=\"$(IFS=' '; echo "${CLI_ARGS[*]}")\"" > /tmp/ghost sudo cp /tmp/ghost /etc/default/ghost rm /tmp/ghost echo "[+] new CLI arguments stored in '/etc/default/ghost'"