diff --git a/deploy/install.sh b/deploy/install.sh index 4e302d07b7..3f74a72ed3 100755 --- a/deploy/install.sh +++ b/deploy/install.sh @@ -129,48 +129,60 @@ if [[ $mongo_option -eq 2 ]];then read -p 'Enter the mongo root user: ' mongo_root_user read -sp 'Enter the mongo password: ' mongo_root_password read -p 'Enter your mongo database name: ' mongo_database + # It is possible that this isn't the first installation. + echo "" + read -p 'Do you have any existing data in the database?[Y/n]: ' existing_encrypted_data + existing_encrypted_data=${existing_encrypted_data:-Y} + # In this case be more cautious of auto generating the encryption keys. Err on the side of not generating the encryption keys + if [ $existing_encrypted_data == "N" -o $existing_encrypted_data == "n" -o $existing_encrypted_data == "no" -o $existing_encrypted_data == "No" ];then + auto_generate_encryption="true" + else + auto_generate_encryption="false" + fi elif [[ $mongo_option -eq 1 ]];then mongo_host="mongo" mongo_database="appsmith" read -p 'Set the mongo root user: ' mongo_root_user read -sp 'Set the mongo password: ' mongo_root_password + # Since the mongo was automatically setup, this must be the first time installation. Generate encryption credentials for this scenario + auto_generate_encryption="true" fi echo "" -echo "" -echo "Appsmith needs password and salt to encrypt sensitive information" + encryptionEnv=./template/encryption.env if test -f "$encryptionEnv"; then echo "CAUTION : This isn't your first time installing appsmith. Encryption password and salt already exist. Do you want to override this? NOTE: Overwriting the existing salt and password would lead to you losing access to sensitive information encrypted using the same" echo "1) No. Conserve the older encryption password and salt and continue" - echo "2) Yes. Overwrite the existing encryption (NOT SUGGESTED)" + echo "2) Yes. Overwrite the existing encryption (NOT SUGGESTED) with autogenerated encryption password and salt" + echo "3) Yes. Overwrite the existing encryption (NOT SUGGESTED) with manually entering the encryption password and salt" read -p 'Enter option number [1]: ' overwrite_encryption overwrite_encryption=${overwrite_encryption:-1} - echo "" - + auto_generate_encryption="false" if [[ $overwrite_encryption -eq 1 ]];then setup_encryption="false" elif [[ $overwrite_encryption -eq 2 ]];then - setup_encryption="true" + setup_encryption="true" + auto_generate_encryption="true" + elif [[ $overwrite_encryption -eq 3 ]];then + setup_encryption="true" + auto_generate_encryption="false" fi else setup_encryption="true" fi if [[ "$setup_encryption" = "true" ]];then - echo "1) Automatically generate password and salt (recommended)" - echo "2) Set up your own salt and password" - read -p 'Enter option number [1]: ' encryption_option - encryption_option=${encryption_option:-1} - if [[ $encryption_option -eq 2 ]];then - echo "" + if [[ "$auto_generate_encryption" = "false" ]];then + echo "Please enter the salt and password found in the encyption.env file of your previous appsmith installation " read -p 'Enter your encryption password: ' user_encryption_password - read -p 'Enter your encryption salt: ' user_encryption_salt - elif [[ $encryption_option -eq 1 ]];then - # Picked up the following method of generation from : https://gist.github.com/earthgecko/3089509 + read -p 'Enter your encryption salt: ' user_encryption_salt + elif [[ "$auto_generate_encryption" = "true" ]];then + # Picked up the following method of generation from : https://gist.github.com/earthgecko/3089509 user_encryption_password=$(cat /dev/urandom | LC_CTYPE=C tr -dc 'a-zA-Z0-9' | fold -w 13 | head -n 1) user_encryption_salt=$(cat /dev/urandom | LC_CTYPE=C tr -dc 'a-zA-Z0-9' | fold -w 13 | head -n 1) fi fi + echo "" read -p 'Would you like to host appsmith on a custom domain / subdomain? [Y/n]: ' setup_domain setup_domain=${setup_domain:-Y}