diff --git a/conf/rocketchat.service b/conf/rocketchat.service index 2dcd704..e7aee51 100644 --- a/conf/rocketchat.service +++ b/conf/rocketchat.service @@ -8,7 +8,7 @@ WorkingDirectory=/var/lib/rocketchat User=#USER# ExecStart=/usr/local/bin/node main.js Restart=always -SyslogIdentifier=Rocket.Chat +SyslogIdentifier=rocketchat Environment="BIND_IP=127.0.0.1" Environment="ROOT_URL=https://#ROOTURL##LOCATION#" Environment="PORT=#PORT#" diff --git a/manifest.json b/manifest.json index 9f54ac2..cd82c0a 100644 --- a/manifest.json +++ b/manifest.json @@ -7,7 +7,7 @@ }, "url": "https://github.com/selamanse/rocketchat_ynh", "license": "MIT", - "version": "0.57.2-rc.1", + "version": "0.57.2-rc.2", "maintainer": { "name": "selamanse", "email": "selamanse@scheinfrei.info", diff --git a/scripts/_common.sh b/scripts/_common.sh new file mode 100644 index 0000000..26090dc --- /dev/null +++ b/scripts/_common.sh @@ -0,0 +1,11 @@ +# common.sh + +ROCKETCHAT_VERSION=0.57.2 +NODE_VERSION=4.7.1 + +waitforservice() { + isup=false; x=90; while [ $x -gt 0 ];do echo "Waiting approx. $x seconds..."; \ + x=$(( $x - 1 )); sleep 1; if $(curl -m 1 -s localhost:$port${path:-/}/api/v1/info | \ + grep -e "success.*true" >/dev/null 2>&1); then isup=true; break; fi; done && if $isup; \ + then echo "service is up"; else ynh_die "$app could not be started"; fi +} diff --git a/scripts/backup b/scripts/backup index dce5bf0..3532ea9 100644 --- a/scripts/backup +++ b/scripts/backup @@ -7,15 +7,6 @@ set -eu source /usr/share/yunohost/helpers -#================================================= -# GENERIC START -#================================================= -# MANAGE SCRIPT FAILURE -#================================================= - -# Exit on command errors and treat access to unset variables as an error -ynh_abort_if_errors - #================================================= # LOAD SETTINGS #================================================= @@ -24,8 +15,6 @@ app=$YNH_APP_INSTANCE_NAME final_path=$(ynh_app_setting_get $app final_path) domain=$(ynh_app_setting_get $app domain) -db_name=$(ynh_app_setting_get $app db_name) -db_pwd=$(ynh_app_setting_get $app mysqlpwd) #================================================= # STANDARD BACKUP STEPS @@ -33,13 +22,18 @@ db_pwd=$(ynh_app_setting_get $app mysqlpwd) # BACKUP THE APP MAIN DIR #================================================= -ynh_backup "$final_path" "app" +workdir=$(pwd) +cd $final_path +tar -czf $workdir/rocket.chat.gtar . +cd $workdir +ynh_backup ./rocket.chat.gtar #================================================= -# BACKUP THE NGINX CONFIGURATION +# BACKUP THE CONFIGURATION #================================================= -ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf" "nginx" +ynh_backup "/etc/systemd/system/$app.service" "conf/service" +ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf" "conf/nginx" #================================================= # BACKUP THE MONGODB DATABASE diff --git a/scripts/install b/scripts/install index b0ccabf..63e9996 100644 --- a/scripts/install +++ b/scripts/install @@ -7,6 +7,7 @@ set -eu # IMPORT GENERIC HELPERS #================================================= +source ./_common.sh source /usr/share/yunohost/helpers #================================================= @@ -28,9 +29,6 @@ language=$YNH_APP_ARG_LANG app=$YNH_APP_INSTANCE_NAME serviceuser=rocketchat -ROCKETCHAT_VERSION=0.57.2 -NODE_VERSION=4.7.1 - workdir=$(pwd) # find suitable port (default 3000) @@ -48,17 +46,14 @@ final_path="/var/lib/$app" You should safely delete it before installing this app." # Save specific settings +ynh_app_setting_set $app node_version $NODE_VERSION +ynh_app_setting_set $app rocketchat_version $ROCKETCHAT_VERSION ynh_app_setting_set $app serviceuser $serviceuser +ynh_app_setting_set $app port $port ynh_app_setting_set $app final_path $final_path +ynh_app_setting_set $app path $path ynh_app_setting_set $app is_public $is_public -function waitforservice { - isup=false; x=90; while [ $x -gt 0 ];do echo "Waiting approx. $x seconds..."; \ - x=$(( $x - 1 )); sleep 1; if $(curl -m 1 -s localhost:$port${path:-/}/api/v1/info | \ - grep -e "success.*true" >/dev/null 2>&1); then isup=true; break; fi; done && if $isup; \ - then echo "service is up"; else ynh_die "$app could not be started"; fi -} - #Install dependencies sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 >/dev/null echo "deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list @@ -75,6 +70,9 @@ sudo n $NODE_VERSION # Create destination sudo mkdir -p $final_path +# Create user +sudo useradd -d "$final_path" -M $serviceuser + # Copy and set systemd configuration sed -i "s@#ROOTURL#@$domain@g" ../conf/rocketchat.service sed -i "s@#LOCATION#@${path:-/}@g" ../conf/rocketchat.service @@ -97,6 +95,9 @@ sudo cp ../conf/nginx.conf "$nginx_conf" echo "Downloading rocket.chat-$ROCKETCHAT_VERSION.gtar from https://rocket.chat/releases/${ROCKETCHAT_VERSION}/download." sudo curl -s -L -o $final_path/rocket.chat-$ROCKETCHAT_VERSION.gtar "https://rocket.chat/releases/${ROCKETCHAT_VERSION}/download" sudo tar -xzf $final_path/rocket.chat-$ROCKETCHAT_VERSION.gtar -C $final_path --strip-components=1 bundle +sudo rm $final_path/rocket.chat-$ROCKETCHAT_VERSION.gtar + +sudo chown -R $serviceuser: $final_path cd $final_path/programs/server/ @@ -104,11 +105,6 @@ sudo npm install --production cd $workdir -sudo useradd -d "$final_path" -M $serviceuser -sudo chown -R $serviceuser: $final_path - -sudo chown -R $serviceuser: $final_path - sudo systemctl reload nginx if [ "$is_public" = "Yes" ]; then diff --git a/scripts/remove b/scripts/remove index f8c4f97..d240c6d 100644 --- a/scripts/remove +++ b/scripts/remove @@ -7,6 +7,7 @@ set -u # IMPORT GENERIC HELPERS #================================================= +source ./_common.sh source /usr/share/yunohost/helpers app=$YNH_APP_INSTANCE_NAME @@ -23,6 +24,11 @@ sudo rm -rf $final_path sudo rm -f /etc/nginx/conf.d/$domain.d/$app.conf sudo rm -rf /var/log/$app sudo rm -f /etc/systemd/system/$app.service + +# remove database!!! +sudo mongo rocketchat --eval "db.dropDatabase()" + +# remove user!!! sudo userdel -r $serviceuser sudo systemctl daemon-reload diff --git a/scripts/restore b/scripts/restore index d86cf9e..4291773 100644 --- a/scripts/restore +++ b/scripts/restore @@ -23,19 +23,23 @@ ynh_abort_if_errors app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get $app domain) -path_url=$(ynh_app_setting_get $app path) +path=$(ynh_app_setting_get $app path) final_path=$(ynh_app_setting_get $app final_path) -db_name=$(ynh_app_setting_get $app db_name) +serviceuser=$(ynh_app_setting_get $app serviceuser) # Check domain/path availability - sudo yunohost app checkurl "${domain}${path}" -a "$app" \ - || ynh_die +sudo yunohost app checkurl "${domain}${path}" -a "$app" || ynh_die # Check destination directory - DESTDIR="/var/www/$app" - [[ -d $DESTDIR ]] && ynh_die \ - "The destination directory '$DESTDIR' already exists.\ - You should safely delete it before restoring this app." +[[ -d $final_path ]] && ynh_die \ +"The destination directory '$final_path' already exists.\ + You should safely delete it before restoring this app." + +# Create destination +sudo mkdir -p $final_path + +# Create user +sudo useradd -d "$final_path" -M $serviceuser #================================================= # STANDARD RESTORATION STEPS @@ -43,16 +47,31 @@ db_name=$(ynh_app_setting_get $app db_name) # RESTORE THE NGINX CONFIGURATION #================================================= -ynh_restore_file "nginx" +sudo cp -a "conf/nginx" "/etc/nginx/conf.d/$domain.d/$app.conf" +sudo systemctl reload nginx + +#================================================= +# RESTORE THE SYSTEMD CONFIGURATION +#================================================= +sudo cp -a "conf/service" "/etc/systemd/system/rocketchat.service" +sudo systemctl daemon-reload +sudo systemctl enable rocketchat #================================================= # RESTORE THE APP MAIN DIR #================================================= -ynh_restore_file "app" +sudo tar -xzf ./rocket.chat.gtar -C $final_path +sudo chown -R $serviceuser: $final_path #================================================= # RESTORE THE MONGODB #================================================= -sudo mongorestore --dbpath /var/lib/mongodb ./dump +sudo mongorestore ./dump + +#================================================= +# START APP RELATED SERVICES +#================================================= + +sudo systemctl start rocketchat diff --git a/scripts/upgrade b/scripts/upgrade index e836f75..989c3b1 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -8,26 +8,29 @@ set -eu #================================================= source /usr/share/yunohost/helpers - -ROCKETCHAT_VERSION=0.57.2 -NODE_VERSION=4.7.1 +# Source common variables and helpers +source ./_common.sh app=$YNH_APP_INSTANCE_NAME -final_path="/var/www/$app" +final_path=$(ynh_app_setting_get $app final_path) +serviceuser=$(ynh_app_setting_get $app serviceuser) +path=$(ynh_app_setting_get $app path) +port=$(ynh_app_setting_get $app port) -# remove old things -sudo systemctl stop Rocketchat.service -sudo m -rf $final_path -sudo mkdir $final_path +sudo systemctl stop rocketchat -# install newer node version -sudo n $NODE_VERSION +sudo rm -rf $final_path +sudo mkdir -p $final_path + +# upgrade to the latest rocketchat +sudo curl -s -L -o $final_path/rocket.chat-latest.gtar "https://rocket.chat/releases/latest/download" +sudo tar -xzf $final_path/rocket.chat-latest.gtar -C $final_path --strip-components=1 bundle +sudo rm $final_path/rocket.chat-latest.gtar -# download install newer rocketchat version -echo "Downloading rocket.chat-$ROCKETCHAT_VERSION.gtar from https://rocket.chat/releases/${ROCKETCHAT_VERSION}/download." -sudo curl -s -L -o $final_path/rocket.chat-$ROCKETCHAT_VERSION.gtar "https://rocket.chat/releases/${ROCKETCHAT_VERSION}/download" -sudo tar -xzf $final_path/rocket.chat-$ROCKETCHAT_VERSION.gtar -C $final_path --strip-components=1 bundle cd $final_path/programs/server/ -sudo npm install +sudo npm install --production -sudo systemctl start Rocketchat.service +sudo chown -R $serviceuser: $final_path + +sudo systemctl start rocketchat +waitforservice