#!/bin/bash app="ethercalc" name="ether" name+="calc" instance_number=$(echo $app | sed 's/[^0-9]//g') # Retrieve arguments domain=$1 path=$2 is_public=$3 port=$((instance_number+8000)) # Check domain/path availability sudo yunohost app checkurl $domain$path -a $app if [[ ! $? -eq 0 ]]; then exit 1 fi echo "Register configuration..." sudo yunohost app setting $app is_public -v $is_public sudo yunohost app setting $app port -v $port # Remove trailing "/" for next commands path=${path%/} echo "Install dependencies..." sudo apt-get update sudo apt-get install nodejs-legacy npm redis-server -y echo "Installing EtherCalc with NPM..." final_path=/var/www/$app sudo mkdir -p $final_path sudo useradd -d $final_path $app sudo chown -R $app: $final_path sudo su --shell /bin/bash --command "cd $final_path/ && npm install --production $name" $app echo "Cleaning up install tree..." sudo rm -rf $final_path/.npm find $final_path -type d | grep "test$" | xargs sudo rm -rf find $final_path -type d | grep "tests$" | xargs sudo rm -rf echo "Setting up permissions" sudo chown -R $app: $final_path echo "Setting up init script..." logfile=/var/log/$name/$app.log sed -i "s@YUNOPORT@$port@g" ../conf/$name sed -i "s@YUNOLOG@$app@g" ../conf/$name sed -i "s@YUNOPATH@$path@g" ../conf/$name sed -i "s@YUNOAPP@$app@g" ../conf/$name sudo cp ../conf/$name /etc/init.d/$app sudo chmod +x /etc/init.d/$app sudo update-rc.d $app defaults if [ ! -d "/var/log/$name/" ]; then sudo mkdir /var/log/$name/ fi sudo touch $logfile sudo chown $app $logfile sudo service $app stop sudo service $app start sudo yunohost service add $app -l $logfile echo "Setting up logrotate configuration..." sed -i "s@YNH_LOGFILE@$logfile@g" ../conf/logrotate sudo cp ../conf/logrotate /etc/logrotate.d/$app echo "Nginx configuration ..." sed -i "s@PATHTOCHANGE@$path@g" ../conf/nginx.conf* sed -i "s@ALIASTOCHANGE@$final_path/@g" ../conf/nginx.conf* sed -i "s@YUNOPORT@$port@g" ../conf/nginx.conf* if [ "$path" = "" ]; then sudo cp ../conf/nginx.conf-nosub /etc/nginx/conf.d/$domain.d/$app.conf else sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf fi echo "Reloading Nginx..." sudo service nginx reload if [ "$is_public" = "Yes" ]; then sudo yunohost app setting ethercalc skipped_uris -v "/" fi sudo yunohost app ssowatconf