#!/bin/bash #================================================= # GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= if [ ! -e _common.sh ]; then # Get the _common.sh file if it's not in the current directory cp ../settings/scripts/_common.sh ./_common.sh cp ../settings/scripts/_future.sh ./_future.sh chmod a+rx _common.sh _future.sh fi source _common.sh source /usr/share/yunohost/helpers source _future.sh #================================================= # MANAGE SCRIPT FAILURE #================================================= # Exit if an error occurs during the execution of the script ynh_abort_if_errors #================================================= # LOAD SETTINGS #================================================= app=$YNH_APP_INSTANCE_NAME # Get old parameter of the app domain=$(ynh_app_setting_get $app domain) path_url=$(ynh_app_setting_get $app path) is_public=$(ynh_app_setting_get $app is_public) final_path=$(ynh_app_setting_get "$app" final_path) #================================================= # CHECK IF THE APP CAN BE RESTORED #================================================= ynh_webpath_available $domain $path_url \ || ynh_die "Path not available: ${domain}${path_url}" test ! -d $final_path \ || ynh_die "There is already a directory: $final_path " #================================================= # STANDARD RESTORATION STEPS #================================================= # RESTORE THE NGINX CONFIGURATION #================================================= ynh_restore_file "/etc/nginx/conf.d/$domain.d/$app.conf" #================================================= # RESTORE THE APP MAIN DIR #================================================= ynh_restore_file "$final_path" #================================================= # RECREATE THE DEDICATED USER #================================================= # Create user unix adduser $app --home $final_path --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password #================================================= # RESTORE USER RIGHTS #================================================= # Restore permissions on app files chown -R $app: $final_path #================================================= # SPECIFIC RESTORATION #================================================= # REINSTALL DEPENDENCIES #================================================= # TODO: add in a clean way backports and yarn # Import debian archive pubkey, need on ARM arch arch=$(uname -m) if [[ "$arch" = arm* ]]; then apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553 apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010 fi # Install source.list debian package backports & yarn if [ "$(lsb_release --codename --short)" == "jessie" ]; then cp ./apt_backports.list /etc/apt/sources.list.d/ fi curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - cp ./apt_yarn.list /etc/apt/sources.list.d/yarn.list ynh_package_update # Install de Node.js # TODO: use https://github.com/YunoHost-Apps/Experimental_helpers/blob/master/ynh_install_nodejs/ynh_install_nodejs ( cd /opt curl -sL https://deb.nodesource.com/setup_6.x | bash - apt-get -y install nodejs ) # TODO: use the same mecanism with other files ynh_install_app_dependencies \ `# debian packages ` \ imagemagick libpq-dev libxml2-dev libxslt1-dev file curl apt-transport-https pkg-config libprotobuf-dev protobuf-compiler libicu-dev libidn11-dev \ `# redis ` \ redis-server redis-tools \ `# postgresql ` \ postgresql \ `# Ruby ` \ autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev \ `# ffmpeg from backports ` \ ffmpeg \ `# Yarn ` \ yarn #================================================= # RESTORE THE PostgreSQL DATABASE #================================================= # Restore PostgreSQL database db_user=$(ynh_sanitize_dbid "$app") db_name=$(ynh_app_setting_get "$app" db_name) if [ -z "$db_name" ]; then db_name="${app}_production" ynh_app_setting_set "$app" db_name "$db_name" fi db_pwd=$(ynh_app_setting_get "$app" db_pwd) ynh_psql_test_if_first_run ynh_psql_setup_db "$db_name" "$db_name" "$db_pwd" ynh_psql_execute_file_as_root ./db.sql "$db_name" #================================================= # ADVERTISE SERVICE IN ADMIN PANEL #================================================= yunohost service add $app-web yunohost service add $app-sidekiq yunohost service add $app-streaming #================================================= # RESTORE SYSTEMD #================================================= ynh_restore_file "/etc/systemd/system/$app-web.service" ynh_restore_file "/etc/systemd/system/$app-sidekiq.service" ynh_restore_file "/etc/systemd/system/$app-streaming.service" systemctl enable "$app-web" "$app-sidekiq" "$app-streaming" #================================================= # GENERIC FINALIZATION #================================================= # RELOAD NGINX AND PHP-FPM #================================================= systemctl restart "$app-web" "$app-sidekiq" "$app-streaming" systemctl reload nginx