From 07f0c1b9c900baf7038de9e7a11c1ac356ed2add Mon Sep 17 00:00:00 2001 From: Selamanse Date: Mon, 13 May 2019 15:41:47 +0200 Subject: [PATCH 1/2] Make it work again (#71) * Add doctl test files * Fix nodejs installation * Improve droplet create * Improve droplet create * Improve droplet create * Modify pkgchk config * Modify pkgchk config * Add testconfig again * Use new helpers and restrict arch * Upgrade test setup * Add selamanses key * Add fingerprint as key id * Use prebuilt image * Remove variables in app.src * Add cleanup cmds * Fix upgrade * Remove apt-key warning * Revert travis * Revert apt-key setting and restore modifications (#70) * Fix linter issues * Fix linter issues * Fix ynh_replace_string arguments * Update README.md --- README.md | 6 ++++ conf/app.src | 7 +++++ manifest.json | 5 ++-- scripts/backup | 2 +- scripts/install | 75 ++++++++++++++++++++++++++----------------------- scripts/remove | 18 ++++++------ scripts/restore | 26 +++++++++-------- scripts/upgrade | 30 +++++++++----------- 8 files changed, 94 insertions(+), 75 deletions(-) create mode 100644 conf/app.src diff --git a/README.md b/README.md index 14be126..53160c9 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,12 @@ Backup stores: - nginx configuration - systemd service configuration +#### Supported architectures + +* x86-64b - [![](https://ci-apps.yunohost.org/ci/logs/rocketchat%20%28Community%29.svg)](https://ci-apps.yunohost.org/ci/apps/rocketchat/) +* ARMv8-A - [![](https://ci-apps-arm.yunohost.org/ci/logs/rocketchat%20%28Community%29.svg)](https://ci-apps-arm.yunohost.org/ci/apps/rocketchat/) +* Jessie x86-64b - [![](https://ci-stretch.nohost.me/ci/logs/rocketchat%20%28Community%29.svg)](https://ci-stretch.nohost.me/ci/apps/rocketchat/) + ## Links * Report a bug: [Issues](/../../issues) diff --git a/conf/app.src b/conf/app.src new file mode 100644 index 0000000..5e807eb --- /dev/null +++ b/conf/app.src @@ -0,0 +1,7 @@ +SOURCE_URL=https://releases.rocket.chat/0.73.2/download +SOURCE_SUM=3dc3eb11f383f7b72b0f23fedb305b6a566fa536a1e5087a4398255deeb864d8 +SOURCE_SUM_PRG=sha256sum +SOURCE_FORMAT=tar.gz +SOURCE_IN_SUBDIR=true +SOURCE_FILENAME=rocket.chat-0.73.2.tgz +SOURCE_EXTRACT=true \ No newline at end of file diff --git a/manifest.json b/manifest.json index 28c25ae..0ce0e4f 100644 --- a/manifest.json +++ b/manifest.json @@ -5,7 +5,7 @@ "description": { "en": "the ultimate chat platform" }, - "url": "https://github.com/YunoHost-Apps/rocketchat_ynh", + "url": "https://rocket.chat", "license": "GPL-3.0", "version": "0.73.2", "maintainer": { @@ -41,14 +41,15 @@ }, { "name": "is_public", + "type": "boolean", "ask": { "en": "Is it a public application?" }, - "choices": ["Yes", "No"], "default": "Yes" }, { "name": "lang", + "type": "string", "ask": { "en": "Select default language" }, diff --git a/scripts/backup b/scripts/backup index 1980e58..f5a45d0 100644 --- a/scripts/backup +++ b/scripts/backup @@ -36,4 +36,4 @@ ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf" "conf/nginx" # BACKUP THE MONGODB DATABASE #================================================= -sudo mongodump -o "./dump" +mongodump -o "./dump" diff --git a/scripts/install b/scripts/install index 11073e0..23f4aad 100644 --- a/scripts/install +++ b/scripts/install @@ -30,6 +30,16 @@ app=$YNH_APP_INSTANCE_NAME dbname=$app serviceuser=rocketchat +#================================================= +# CHECK IF THE APP CAN BE INSTALLED +#================================================= + +# Check for supported architecture +arch="$(uname -m)" +if [[ "$arch" != "x86_64" ]]; then + script_die "This app requires an x86_64 machine, but this one is '${arch}'." +fi + workdir=$(pwd) # find suitable port (default 3000) @@ -72,74 +82,69 @@ ynh_app_setting_set $app is_public $is_public installdeps # Create destination -sudo mkdir -p $final_path +mkdir -p $final_path # Create user -id -u $serviceuser || sudo useradd -d "$final_path" -M $serviceuser +id -u $serviceuser || 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 -sed -i "s@#PORT#@$port@g" ../conf/rocketchat.service -sed -i "s@#USER#@$serviceuser@g" ../conf/rocketchat.service -sed -i "s@#DESTDIR#@$final_path@g" ../conf/rocketchat.service -sed -i "s@#DBNAME#@$dbname@g" ../conf/rocketchat.service +ynh_replace_string "#ROOTURL#" "$domain" ../conf/rocketchat.service +ynh_replace_string "#LOCATION#" "${path:-/}" ../conf/rocketchat.service +ynh_replace_string "#PORT#" "$port" ../conf/rocketchat.service +ynh_replace_string "#USER#" "$serviceuser" ../conf/rocketchat.service +ynh_replace_string "#DESTDIR#" "$final_path" ../conf/rocketchat.service +ynh_replace_string "#DBNAME#" "$dbname" ../conf/rocketchat.service # absolute node path needed NODE_BIN=$(which node) -sed -i "s@#NODE#@$NODE_BIN@g" ../conf/rocketchat.service -sudo cp ../conf/rocketchat.service /etc/systemd/system/$app.service -sudo systemctl daemon-reload +ynh_replace_string "#NODE#" "$NODE_BIN" ../conf/rocketchat.service +cp ../conf/rocketchat.service /etc/systemd/system/$app.service +systemctl daemon-reload # Copy and set nginx configuration nginx_conf="/etc/nginx/conf.d/${domain}.d/${app}.conf" -sed -i "s@#APP#@$app@g" ../conf/nginx.conf -sed -i "s@#PATH#@$path@g" ../conf/nginx.conf -sed -i "s@#PORT#@$port@g" ../conf/nginx.conf -sed -i "s@#LOCATION#@${path:-/}@g" ../conf/nginx.conf +ynh_replace_string "#APP#" "$app" ../conf/nginx.conf +ynh_replace_string "#PATH#" "$path" ../conf/nginx.conf +ynh_replace_string "#PORT#" "$port" ../conf/nginx.conf +ynh_replace_string "#LOCATION#" "${path:-/}" ../conf/nginx.conf #set db name into ldap config -sed -i "s@#DBNAME#@$dbname@g" ../conf/rocketchat_ldap.js +ynh_replace_string "#DBNAME#" "$dbname" ../conf/rocketchat_ldap.js -sudo cp ../conf/nginx.conf "$nginx_conf" +cp ../conf/nginx.conf "$nginx_conf" -# download and extract rocketchat -echo "Downloading rocket.chat-$ROCKETCHAT_VERSION.gtar from ${ROCKETCHAT_DOWNLOAD_URI}." -sudo curl -s -L -o $final_path/rocket.chat-$ROCKETCHAT_VERSION.gtar "${ROCKETCHAT_DOWNLOAD_URI}" -SHA_DOWNLOAD=$(sha256sum $final_path/rocket.chat-$ROCKETCHAT_VERSION.gtar | grep -o "^[a-f0-9]*") -if [[ ! "$SHA_DOWNLOAD" == "$ROCKETCHAT_SHASUM" ]]; then - ynh_die "The sha256sum does not match the configured one" -fi +#================================================= +# DOWNLOAD, CHECK AND UNPACK SOURCE +#================================================= -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 +ynh_setup_source "$final_path" -sudo chown -R $serviceuser: $final_path +chown -R $serviceuser: $final_path cd $final_path/programs/server/ -sudo -u $serviceuser npm install --production +-u $serviceuser npm install --production cd $workdir -sudo systemctl reload nginx +systemctl reload nginx if [ "$is_public" = "Yes" ]; then ynh_app_setting_set "$app" skipped_uris "/" fi -sudo systemctl start $app.service -sudo systemctl enable $app.service +systemctl start $app.service +systemctl enable $app.service # add rocketchat to services -sudo yunohost service add $app +yunohost service add $app # wait for rocketchat to populate db and start waitforservice -sudo mongo < ../conf/rocketchat_ldap.js +mongo < ../conf/rocketchat_ldap.js -sudo systemctl restart $app.service +systemctl restart $app.service waitforservice -sudo yunohost app ssowatconf +yunohost app ssowatconf diff --git a/scripts/remove b/scripts/remove index 88e1f51..9e77aa1 100644 --- a/scripts/remove +++ b/scripts/remove @@ -14,18 +14,18 @@ app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get $app domain) final_path=$(ynh_app_setting_get $app final_path) -sudo systemctl stop $app.service +systemctl stop $app.service # remove Rocketchat from services -sudo yunohost service remove $app +yunohost service remove $app -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 +ynh_secure_remove $final_path +ynh_secure_remove /etc/nginx/conf.d/$domain.d/$app.conf +ynh_secure_remove /var/log/$app +ynh_secure_remove /etc/systemd/system/$app.service # remove database!!! -sudo mongo rocketchat --eval "db.dropDatabase()" +mongo rocketchat --eval "db.dropDatabase()" -sudo systemctl daemon-reload -sudo systemctl reload nginx +systemctl daemon-reload +systemctl reload nginx diff --git a/scripts/restore b/scripts/restore index 683657e..adf14de 100644 --- a/scripts/restore +++ b/scripts/restore @@ -1,14 +1,16 @@ #!/bin/bash set -eu -#================================================= -# GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= - -source ./_common.sh +if [ ! -e _common.sh ]; then + # Fetch helpers file if not in current directory + cp ../settings/scripts/_common.sh ./_common.sh + chmod a+rx _common.sh +fi source /usr/share/yunohost/helpers +source _common.sh #================================================= # GENERIC START @@ -43,10 +45,10 @@ fi You should safely delete it before restoring this app." # Create destination -sudo mkdir -p $final_path +mkdir -p $final_path # Create user -id -u $serviceuser || sudo useradd -d "$final_path" -M $serviceuser +id -u $serviceuser || useradd -d "$final_path" -M $serviceuser #================================================= # STANDARD RESTORATION STEPS @@ -58,19 +60,19 @@ ynh_restore # RELOAD THE NGINX CONFIGURATION #================================================= -sudo systemctl reload nginx +systemctl reload nginx #================================================= # RELOAD AND ENABLE THE SYSTEMD CONFIGURATION #================================================= -sudo systemctl daemon-reload -sudo systemctl enable rocketchat +systemctl daemon-reload +systemctl enable rocketchat #================================================= # RESTORE PERMISSIONS IN THE APP MAIN DIR #================================================= -sudo chown -R $serviceuser: $final_path +chown -R $serviceuser: $final_path #================================================= # INSTALL DEPENDENCIES @@ -82,11 +84,11 @@ installdeps # RESTORE THE MONGODB #================================================= -sudo mongorestore ./dump +mongorestore ./dump #================================================= # START APP RELATED SERVICES #================================================= -sudo systemctl start rocketchat +systemctl start rocketchat waitforservice diff --git a/scripts/upgrade b/scripts/upgrade index 38e5ed1..5b31d0e 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -18,31 +18,29 @@ serviceuser=$(ynh_app_setting_get $app serviceuser) path=$(ynh_app_setting_get $app path) port=$(ynh_app_setting_get $app port) -# download and extract rocketchat -echo "Downloading rocket.chat-$ROCKETCHAT_VERSION.gtar from ${ROCKETCHAT_DOWNLOAD_URI}." -sudo curl -s -L -o $final_path/rocket.chat-$ROCKETCHAT_VERSION.gtar "${ROCKETCHAT_DOWNLOAD_URI}" -SHA_DOWNLOAD=$(sha256sum $final_path/rocket.chat-$ROCKETCHAT_VERSION.gtar | grep -o "^[a-f0-9]*") -if [[ ! "$SHA_DOWNLOAD" == "$ROCKETCHAT_SHASUM" ]]; then - ynh_die "The sha256sum does not match the configured one" -fi +#================================================= +# BACKUP THE APPLICATION +#================================================= -sudo systemctl stop rocketchat +# Backup the current version of the app +ynh_backup_before_upgrade > >(tee "upgrade.log") -sudo rm -rf $final_path -sudo mkdir -p $final_path +systemctl stop rocketchat + +ynh_secure_remove $final_path +mkdir -p $final_path # update to latest required node setup installnode -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 +ynh_setup_source "$final_path" -sudo chown -R $serviceuser: $final_path +chown -R $serviceuser: $final_path cd $final_path/programs/server/ -sudo npm install --production +npm install --production -sudo chown -R $serviceuser: $final_path +chown -R $serviceuser: $final_path -sudo systemctl start rocketchat +systemctl start rocketchat waitforservice From 03fefbb48a5f946dc705f1edb913509c250da9b2 Mon Sep 17 00:00:00 2001 From: rosareven Date: Fri, 2 Aug 2019 08:50:34 +0100 Subject: [PATCH 2/2] Attempt to fix -u command that prevented install (#76) Thanks, I had removed all sudos because the new ynh-lint said sudo is not the preferred wait. but as the --u still was there it must've been faulty. --- scripts/install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install b/scripts/install index 23f4aad..28e2b9e 100644 --- a/scripts/install +++ b/scripts/install @@ -122,7 +122,7 @@ chown -R $serviceuser: $final_path cd $final_path/programs/server/ --u $serviceuser npm install --production +sudo -u $serviceuser npm install --production cd $workdir