diff --git a/conf/nginx.conf b/conf/nginx.conf index 7854cab..f9431e9 100644 --- a/conf/nginx.conf +++ b/conf/nginx.conf @@ -1,5 +1,7 @@ -location / { - proxy_pass http://localhost:__PORT__/; +#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent; +location __PATH__/ { + + proxy_pass http://127.0.0.1:__PORT__/; proxy_http_version 1.1; proxy_set_header Host $host; diff --git a/conf/ntfy.sh b/conf/ntfy.sh index c373d33..260c45b 100755 --- a/conf/ntfy.sh +++ b/conf/ntfy.sh @@ -2,4 +2,9 @@ HOME=__INSTALL_DIR__ +if [ ! -f "$HOME/data/user.db" ]; then + echo "Waiting for server to start" + sleep 2 +fi + NTFY_CONFIG_FILE="$HOME/server.yml" $HOME/ntfy $@ diff --git a/scripts/_common.sh b/scripts/_common.sh index d5f34cb..944a65e 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -8,16 +8,6 @@ # PERSONAL HELPERS #================================================= -ntfy_setup_source() { - ynh_setup_source -d "$install_dir" - mkdir -p "$install_dir/data" - chown -R $app:$app "$install_dir" - chmod -R 750 "$install_dir/data" - - ynh_secure_remove "$install_dir/client" - ynh_secure_remove "$install_dir/server" -} - #================================================= # EXPERIMENTAL HELPERS #================================================= diff --git a/scripts/backup b/scripts/backup index 8051775..f887e84 100755 --- a/scripts/backup +++ b/scripts/backup @@ -1,10 +1,39 @@ #!/bin/bash +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers -ynh_backup -s "$install_dir" -ynh_backup -s "/etc/nginx/conf.d/$domain.d/$app.conf" -ynh_backup -s "/etc/systemd/system/$app.service" +#================================================= +# DECLARE DATA AND CONF FILES TO BACKUP +#================================================= +ynh_print_info --message="Declaring files to be backed up..." + +#================================================= +# BACKUP THE APP MAIN DIR +#================================================= + +ynh_backup --src_path="$install_dir" + +#================================================= +# BACKUP THE NGINX CONFIGURATION +#================================================= + +ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" + +#================================================= +# BACKUP SYSTEMD +#================================================= + +ynh_backup --src_path="/etc/systemd/system/$app.service" + +#================================================= +# END OF SCRIPT +#================================================= ynh_print_info --message="Backup script completed. (YunoHost will then actually copy those files to the archive)" \ No newline at end of file diff --git a/scripts/change_url b/scripts/change_url index c1f169a..572b377 100755 --- a/scripts/change_url +++ b/scripts/change_url @@ -1,15 +1,48 @@ #!/bin/bash +#================================================= +# GENERIC STARTING +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + source _common.sh source /usr/share/yunohost/helpers -ynh_script_progression --message="Updating systemd service..." --weight=1 -ynh_add_systemd_config +#================================================= +# STANDARD MODIFICATIONS +#================================================= +# STOP SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Stopping a systemd service..." --weight=1 + +ynh_systemd_action --service_name=$app --action="stop" --log_path="/var/log/$app/$app.log" + +#================================================= +# MODIFY URL IN NGINX CONF +#================================================= +ynh_script_progression --message="Updating NGINX web server configuration..." --weight=1 -ynh_script_progression --message="Updating webserver configuration..." --weight=1 ynh_change_url_nginx_config -ynh_script_progression --message="Restarting systemd service..." --weight=1 -ynh_systemd_action --action=restart +#================================================= +# SPECIFIC MODIFICATIONS +#================================================= +ynh_script_progression --message="Updating systemd service..." --weight=1 -ynh_script_progression --message="URL change completed" --last +ynh_add_systemd_config + +#================================================= +# GENERIC FINALISATION +#================================================= +# START SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Starting a systemd service..." --weight=1 + +ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" + +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Change of URL completed for $app" --last diff --git a/scripts/install b/scripts/install index 5e8e1d7..1041919 100755 --- a/scripts/install +++ b/scripts/install @@ -1,32 +1,78 @@ #!/bin/bash +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + source _common.sh source /usr/share/yunohost/helpers +#================================================= +# APP "BUILD" (DEPLOYING SOURCES, VENV, COMPILING ETC) +#================================================= +# DOWNLOAD, CHECK AND UNPACK SOURCE +#================================================= ynh_script_progression --message="Setting up source files..." --weight=6 -ntfy_setup_source +ynh_setup_source --dest_dir="$install_dir" + +mkdir -p "$install_dir/data" + +chmod -R 750 "$install_dir/data" +chown -R $app:$app "$install_dir" + +ynh_secure_remove "$install_dir/client" +ynh_secure_remove "$install_dir/server" + +#================================================= +# APP INITIAL CONFIGURATION +#================================================= +# ADD A CONFIGURATION +#================================================= ynh_script_progression --message="Adding configuration file..." --weight=1 -ynh_add_config -t "server.yml" -d "$install_dir/server.yml" -ynh_script_progression --message="Configuring systemd service..." --weight=1 +ynh_add_config --template="server.yml" --destination="$install_dir/server.yml" + +#================================================= +# SYSTEM CONFIGURATION +#================================================= +ynh_script_progression --message="Adding system configurations related to $app..." --weight=1 + +ynh_add_nginx_config + ynh_add_systemd_config -ynh_script_progression --message="Starting systemd service..." --weight=1 -ynh_systemd_action --action=start +yunohost service add $app --description="Open Source Push Notification Server" --log="/var/log/$app/$app.log" -ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 -yunohost service add $app +#================================================= +# ADD A CONFIGURATION +#================================================= +ynh_script_progression --message="Adding a configuration file..." --weight=1 -ynh_script_progression --message="Adding a command wrapper..." --weight=1 ynh_add_config -t "ntfy.sh" -d "$install_dir/ntfy.sh" chown $app:$app "$install_dir/ntfy.sh" chmod u+x "$install_dir/ntfy.sh" -ynh_script_progression --message="Configuring web server..." --weight=2 -ynh_add_nginx_config +#================================================= +# GENERIC FINALIZATION +#================================================= +# START SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Starting a systemd service..." --weight=1 +ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" + +#================================================= +# ADD ADMIN +#================================================= ynh_script_progression --message="Adding admin user..." --weight=1 + ynh_exec_as $app NTFY_PASSWORD="$password" $install_dir/ntfy.sh user add --role=admin $admin +#================================================= +# END OF SCRIPT +#================================================= + ynh_script_progression --message="Installation completed" --last diff --git a/scripts/remove b/scripts/remove index e122375..6dc0d3b 100755 --- a/scripts/remove +++ b/scripts/remove @@ -3,13 +3,26 @@ source _common.sh source /usr/share/yunohost/helpers -ynh_script_progression --message="Removing service in YunoHost..." --weight=1 -yunohost service remove $app +#================================================= +# REMOVE SYSTEM CONFIGURATIONS +#================================================= +# REMOVE SYSTEMD SERVICE +#================================================= +# Remove the service from the list of services known by YunoHost (added from `yunohost service add`) +if ynh_exec_warn_less yunohost service status $app >/dev/null +then + ynh_script_progression --message="Removing $app service integration..." --weight=1 + yunohost service remove $app +fi + +ynh_script_progression --message="Removing system configurations related to $app..." --weight=1 -ynh_script_progression --message="Removing the systemd service..." --weight=1 ynh_remove_systemd_config -ynh_script_progression --message="Removing the web server configuration..." --weight=2 ynh_remove_nginx_config +#================================================= +# END OF SCRIPT +#================================================= + ynh_script_progression --message="Removal completed" --last diff --git a/scripts/restore b/scripts/restore index bafa93c..1566077 100755 --- a/scripts/restore +++ b/scripts/restore @@ -1,25 +1,51 @@ #!/bin/bash +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +# Keep this path for calling _common.sh inside the execution's context of backup and restore scripts source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers -ynh_script_progression --message="Restoring the main directory..." --weight=1 -ynh_restore_file -o "$install_dir" +#================================================= +# RESTORE THE APP MAIN DIR +#================================================= +ynh_script_progression --message="Restoring the app main directory..." --weight=1 -ynh_script_progression --message="Restoring the web server configuration..." --weight=1 -ynh_restore_file -o "/etc/nginx/conf.d/$domain.d/$app.conf" +ynh_restore_file --origin_path="$install_dir" + +chown -R $app:www-data "$install_dir" + +#================================================= +# RESTORE SYSTEM CONFIGURATIONS +#================================================= +# RESTORE THE PHP-FPM CONFIGURATION +#================================================= +ynh_script_progression --message="Restoring system configurations related to $app..." --weight=1 + +ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" -ynh_script_progression --message="Restoring the systemd configuration..." --weight=1 ynh_restore_file --origin_path="/etc/systemd/system/$app.service" -ynh_systemd_action --action=enable +systemctl enable $app.service --quiet -ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 -yunohost service add $app +yunohost service add $app --description="Open Source Push Notification Server" --log="/var/log/$app/$app.log" -ynh_script_progression --message="Starting a systemd service..." --weight=1 -ynh_systemd_action --action=start +#================================================= +# GENERIC FINALIZATION +#================================================= +# RELOAD NGINX AND PHP-FPM OR THE APP SERVICE +#================================================= +ynh_script_progression --message="Reloading NGINX web server and $app's service..." --weight=1 + +ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" -ynh_script_progression --message="Reloading the web server..." --weight=1 ynh_systemd_action --service_name=nginx --action=reload -ynh_script_progression --message="Restoration completed" --last \ No newline at end of file +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Restoration completed" --last diff --git a/scripts/upgrade b/scripts/upgrade index c799e98..aa1b779 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -1,35 +1,83 @@ #!/bin/bash +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + source _common.sh source /usr/share/yunohost/helpers -ynh_script_progression --message="Checking version..." --weight=1 upgrade_type=$(ynh_check_app_version_changed) +#================================================= +# STOP SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Stopping a systemd service..." --weight=1 + +ynh_systemd_action --service_name=$app --action="stop" --log_path="/var/log/$app/$app.log" + +#================================================= +# "REBUILD" THE APP (DEPLOY NEW SOURCES, RERUN NPM BUILD...) +#================================================= +# DOWNLOAD, CHECK AND UNPACK SOURCE +#================================================= + if [ "$upgrade_type" == "UPGRADE_APP" ] then ynh_script_progression --message="Upgrading source files..." --weight=6 - ntfy_setup_source + + ynh_setup_source --dest_dir="$install_dir" + + mkdir -p "$install_dir/data" + + chmod -R 750 "$install_dir/data" + chown -R $app:$app "$install_dir" + + ynh_secure_remove "$install_dir/client" + ynh_secure_remove "$install_dir/server" fi -ynh_script_progression --message="Updating configuration file..." --weight=1 -ynh_add_config -t "server.yml" -d "$install_dir/server.yml" +#================================================= +# REAPPLY SYSTEM CONFIGURATIONS +#================================================= +ynh_script_progression --message="Upgrading system configurations related to $app..." --weight=1 + +ynh_add_nginx_config -ynh_script_progression --message="Upgrading systemd configuration..." --weight=1 ynh_add_systemd_config -ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 -yunohost service add $app +yunohost service add $app --description="Open Source Push Notification Server" --log="/var/log/$app/$app.log" +#================================================= +# RECONFIGURE THE APP (UPDATE CONF, APPLY MIGRATIONS...) +#================================================= +# UPDATE A CONFIG FILE +#================================================= +ynh_script_progression --message="Updating a configuration file..." --weight=1 + +ynh_add_config --template="server.yml" --destination="$install_dir/server.yml" + +#================================================= +# ADD A CONFIGURATION +#================================================= ynh_script_progression --message="Updating simple command wrapper..." --weight=1 -ynh_add_config -t "ntfy.sh" -d "$install_dir/ntfy.sh" + +ynh_add_config --template="ntfy.sh" --destination="$install_dir/ntfy.sh" + chown $app:$app "$install_dir/ntfy.sh" chmod u+x "$install_dir/ntfy.sh" -ynh_script_progression --message="Upgrading web server configuration..." --weight=2 -ynh_add_nginx_config +#================================================= +# START SYSTEMD SERVICE +#================================================= +ynh_script_progression --message="Starting a systemd service..." --weight=1 -ynh_script_progression --message="Restarting systemd service..." --weight=1 -ynh_systemd_action --action=restart +ynh_systemd_action --service_name=$app --action="start" --log_path="/var/log/$app/$app.log" -ynh_script_progression --message="Upgrade completed" --last \ No newline at end of file +#================================================= +# END OF SCRIPT +#================================================= + +ynh_script_progression --message="Upgrade of $app completed" --last