diff --git a/check_process b/check_process index 9131836..994acd9 100644 --- a/check_process +++ b/check_process @@ -17,7 +17,7 @@ setup_private=1 setup_public=1 upgrade=0 - backup_restore=0 + backup_restore=1 multi_instance=0 incorrect_path=0 port_already_use=0 diff --git a/scripts/backup b/scripts/backup new file mode 100644 index 0000000..de806a9 --- /dev/null +++ b/scripts/backup @@ -0,0 +1,65 @@ +#!/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 + chmod a+rx _common.sh +fi +source _common.sh +source /usr/share/yunohost/helpers + +#================================================= +# 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 + +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) + + +#================================================= +# STANDARD BACKUP STEPS +#================================================= +# BACKUP THE APP MAIN DIR +#================================================= + +ynh_backup "$final_path" + +#================================================= +# BACKUP THE NGINX CONFIGURATION +#================================================= + +ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf" +ynh_backup "/etc/nginx/conf.d/$domain.conf" + +#================================================= +# BACKUP THE PostgreSQL DATABASE +#================================================= + +ynh_psql_dump_db "$db_name" > db.sql + +#================================================= +# SPECIFIC BACKUP +#================================================= +# BACKUP SYSTEMD +#================================================= + +ynh_backup "/etc/systemd/system/$app-beat.service" +ynh_backup "/etc/systemd/system/$app-server.service" +ynh_backup "/etc/systemd/system/$app-worker.service" +ynh_backup "/etc/systemd/system/$app.target" diff --git a/scripts/install b/scripts/install index 62583ef..494f77b 100644 --- a/scripts/install +++ b/scripts/install @@ -209,7 +209,6 @@ ynh_add_systemd_config "$app-server" "funkwhale-server.service" ynh_add_systemd_config "$app-worker" "funkwhale-worker.service" ynh_add_systemd_config "$app-beat" "funkwhale-beat.service" -systemctl enable "$app".target systemctl restart "$app".target #================================================= diff --git a/scripts/remove b/scripts/remove index f40c9ec..2410543 100644 --- a/scripts/remove +++ b/scripts/remove @@ -32,7 +32,6 @@ ynh_remove_systemd_config "$app-server" ynh_remove_systemd_config "$app-worker" ynh_remove_systemd_config "$app-beat" -systemctl disable "$app".target systemctl stop "$app".target ynh_secure_remove "/etc/systemd/system/$app.target" diff --git a/scripts/restore b/scripts/restore new file mode 100644 index 0000000..371c112 --- /dev/null +++ b/scripts/restore @@ -0,0 +1,113 @@ +#!/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 + chmod a+rx _common.sh +fi +source _common.sh +source /usr/share/yunohost/helpers + +#================================================= +# 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 + +domain=$(ynh_app_setting_get "$app" domain) +path_url=$(ynh_app_setting_get "$app" path) +final_path=$(ynh_app_setting_get "$app" final_path) +db_name=$(ynh_app_setting_get "$app" db_name) +db_user=$db_name +db_pwd=$(ynh_app_setting_get "$app" psqlpwd) + + +#================================================= +# 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" +ynh_restore_file "/etc/nginx/conf.d/$domain.conf" + +#================================================= +# RESTORE THE APP MAIN DIR +#================================================= + +ynh_restore_file "$final_path" + +#================================================= +# RECREATE THE DEDICATED USER +#================================================= + +# Create the dedicated user (if not existing) +ynh_system_user_create "$app" + +#================================================= +# SPECIFIC RESTORATION +#================================================= +# REINSTALL DEPENDENCIES +#================================================= + +ynh_install_app_dependencies build-essential curl ffmpeg \ + libjpeg-dev libmagic-dev libpq-dev postgresql python3-dev python3-venv + +#================================================= +# RESTORE THE PostgreSQL DATABASE +#================================================= + +ynh_psql_test_if_first_run +ynh_psql_setup_db "$db_user" "$db_name" "$db_pwd" +ynh_psql_execute_file_as_root ./db.sql "$db_name" + +#================================================= +# RESTORE USER RIGHTS +#================================================= + +# Restore permissions on app files +chown -R "$app": "$final_path" + +#================================================= +# RESTORE SYSTEMD +#================================================= + +ynh_restore_file "/etc/systemd/system/$app-beat.service" +ynh_restore_file "/etc/systemd/system/$app-server.service" +ynh_restore_file "/etc/systemd/system/$app-worker.service" +ynh_restore_file "/etc/systemd/system/$app.target" + +systemctl enable "$app-beat.service" +systemctl enable "$app-server.service" +systemctl enable "$app-worker.service" +systemctl restart "$app.target" + +#================================================= +# GENERIC FINALIZATION +#================================================= +# RELOAD NGINX AND PHP-FPM +#================================================= + +systemctl reload nginx \ No newline at end of file