#!/bin/bash #================================================= # GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= source _common.sh source /usr/share/yunohost/helpers #================================================= # LOAD SETTINGS #================================================= # See comments in install script app=$YNH_APP_INSTANCE_NAME db_name=$(ynh_app_setting_get "$app" db_name) db_pwd=$(ynh_app_setting_get "$app" db_pwd) # Retrieve app settings domain=$(ynh_app_setting_get "$app" domain) path=$(ynh_app_setting_get "$app" path) admin=$(ynh_app_setting_get "$app" admin) language=$(ynh_app_setting_get "$app" language) final_path=$(ynh_app_setting_get "$app" final_path) path_url="/" #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= # If db_name doesn't exist, create it if [ -z "$db_name" ]; then db_name="${app}_production" ynh_app_setting_set "$app" db_name "$db_name" fi # If final_path doesn't exist, create it if [ -z "$final_path" ]; then final_path=/var/www/$app ynh_app_setting_set "$app" final_path "$final_path" fi # Check if admin is not null if [[ "$admin" = "" || "$language" = "" ]]; then echo "Unable to upgrade, please contact support" ynh_die fi # If db_pwd doesn't exist, create it if [[ -z "$db_pwd" ]]; then db_pwd=$(ynh_string_random) ynh_app_setting_set $app db_pwd $db_pwd ynh_psql_test_if_first_run sudo --login --user=postgres psql -c"ALTER user $app WITH PASSWORD '$db_pwd'" postgres sed -i "s@DB_PASS=@DB_PASS=${db_pwd}@g" "${final_path}/live/.env.production" fi #================================================= # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP #================================================= # Backup the current version of the app ynh_backup_before_upgrade ynh_clean_setup () { # restore it if the upgrade fails ynh_restore_upgradebackup } # Exit if an error occurs during the execution of the script ynh_abort_if_errors #================================================= # Remove repo Files #================================================= if [ "$(lsb_release --codename --short)" == "jessie" ]; then echo "deb http://httpredir.debian.org/debian jessie-backports main" | tee /etc/apt/sources.list.d/jessie-backports.list ynh_secure_remove /etc/apt/sources.list.d/backports.list fi # Add yarn repo echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list #================================================= # INSTALL DEPENDENCIES #================================================= # upgrade Node.js v4 to v6 # TODO: use https://github.com/YunoHost-Apps/Experimental_helpers/blob/master/ynh_install_nodejs/ynh_install_nodejs node_version=$(nodejs --version) if [[ $node_version =~ ^v4.*$ ]]; then pushd /opt curl -sL https://deb.nodesource.com/setup_6.x | sudo bash - sudo apt-get -y install nodejs fi # add additional package for upgrade ynh_package_install pkg-config libprotobuf-dev protobuf-compiler libicu-dev libidn11-dev postgresql-server-dev-all #================================================= # STANDARD UPGRADE STEPS #================================================= # Stop Mastodon Services # Restart Mastodon yunohost service stop "$app-web" yunohost service stop "$app-sidekiq" yunohost service stop "$app-streaming" # Change owner of live folder chown -R $app: $final_path/live # Download Mastodon ynh_setup_source "$final_path/live" "app-mastodon" #================================================= # NGINX CONFIGURATION #================================================= # TODO: use official helper ynh_add_nginx_config # Modify Nginx configuration file and copy it to Nginx conf directory sed -i "s@__PATH__@$app@g" ../conf/nginx.conf* sed -i "s@__FINALPATH__@$final_path@g" ../conf/nginx.conf* cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf # Upgrade rbenv and ruby plugins ynh_setup_source "$final_path/.rbenv" "app-rbenv" ynh_setup_source "$final_path/.rbenv/plugins/ruby-build" "app-ruby-build" # Install ruby 2.5.1 ( exec_as "$app" $final_path/.rbenv/bin/rbenv install -s 2.5.1 || true exec_as "$app" $final_path/.rbenv/bin/rbenv global 2.5.1 || true exec_as "$app" $final_path/.rbenv/versions/2.5.1/bin/ruby -v ) # Create symlink for ruby rm /usr/bin/ruby || true ln -s $final_path/.rbenv/versions/2.5.1/bin/ruby /usr/bin/ruby || true # Preconfig CSS & JS # Install Mastodon ( sudo su - $app <