From c70e0bd3d7293aecac0c2ef484405ca63746be7f Mon Sep 17 00:00:00 2001 From: tituspijean Date: Mon, 27 Sep 2021 19:58:51 +0200 Subject: [PATCH] Fine-tune initial commit --- conf/env | 3 ++- conf/systemd.service | 3 ++- manifest.json | 20 ++++++-------------- scripts/backup | 30 ------------------------------ scripts/change_url | 9 ++++----- scripts/install | 2 +- scripts/remove | 35 ----------------------------------- scripts/restore | 41 +++-------------------------------------- 8 files changed, 18 insertions(+), 125 deletions(-) diff --git a/conf/env b/conf/env index bc87ac7..f6268ed 100644 --- a/conf/env +++ b/conf/env @@ -1,4 +1,5 @@ +NODE_ENV=production PORT=__PORT__ -NC_DB="mysql2://localhost:3306?u=__DB_USER__&p=__DB_PWD__&d=__DB_NAME__" +NC_DB=mysql2://localhost:3306?u=__DB_USER__&p=__DB_PWD__&d=__DB_NAME__ NC_AUTH_JWT_SECRET=__JWT_SECRET__ NC_DISABLE_TELE=1 diff --git a/conf/systemd.service b/conf/systemd.service index 999ccd8..d2d7118 100644 --- a/conf/systemd.service +++ b/conf/systemd.service @@ -8,7 +8,8 @@ User=__APP__ Group=__APP__ WorkingDirectory=__FINALPATH__/ Environment="__YNH_NODE_LOAD_PATH__" -ExecStart=__YNH_NPM__ start --production +EnvironmentFile=__FINALPATH__/.env +ExecStart=__YNH_NODE__ index.js StandardOutput=append:/var/log/__APP__/__APP__.log StandardError=inherit diff --git a/manifest.json b/manifest.json index cf21650..6eff48d 100644 --- a/manifest.json +++ b/manifest.json @@ -32,24 +32,16 @@ "install" : [ { "name": "domain", - "type": "domain", - "example": "example.com" - }, - { - "name": "path", - "type": "path", - "example": "/nocodb", - "default": "/nocodb" - }, - { - "name": "admin", - "type": "user", - "example": "johndoe" + "type": "domain" }, { "name": "is_public", "type": "boolean", - "default": true + "default": true, + "help": { + "en": "The app has its own user login system, so you can disable YunoHost's SSO, especially if you use NocoDB's API.", + "fr": "L'application a son propre système d'authentification, vous pouvez donc désactiver le SSO de YunoHost, particulièrement si vous utilisez l'API de NocoDB." + } } ] } diff --git a/scripts/backup b/scripts/backup index 6ea8892..ca47243 100755 --- a/scripts/backup +++ b/scripts/backup @@ -31,18 +31,12 @@ app=$YNH_APP_INSTANCE_NAME final_path=$(ynh_app_setting_get --app=$app --key=final_path) domain=$(ynh_app_setting_get --app=$app --key=domain) db_name=$(ynh_app_setting_get --app=$app --key=db_name) -phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= # DECLARE DATA AND CONF FILES TO BACKUP #================================================= ynh_print_info --message="Declaring files to be backed up..." -### N.B. : the following 'ynh_backup' calls are only a *declaration* of what needs -### to be backuped and not an actual copy of any file. The actual backup that -### creates and fill the archive with the files happens in the core after this -### script is called. Hence ynh_backups calls takes basically 0 seconds to run. - #================================================= # BACKUP THE APP MAIN DIR #================================================= @@ -55,19 +49,6 @@ ynh_backup --src_path="$final_path" ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" -#================================================= -# BACKUP THE PHP-FPM CONFIGURATION -#================================================= - -ynh_backup --src_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" - -#================================================= -# BACKUP FAIL2BAN CONFIGURATION -#================================================= - -ynh_backup --src_path="/etc/fail2ban/jail.d/$app.conf" -ynh_backup --src_path="/etc/fail2ban/filter.d/$app.conf" - #================================================= # SPECIFIC BACKUP #================================================= @@ -82,22 +63,11 @@ ynh_backup --src_path="/etc/logrotate.d/$app" ynh_backup --src_path="/etc/systemd/system/$app.service" -#================================================= -# BACKUP VARIOUS FILES -#================================================= - -ynh_backup --src_path="/etc/cron.d/$app" - -ynh_backup --src_path="/etc/$app/" - #================================================= # BACKUP THE MYSQL DATABASE #================================================= ynh_print_info --message="Backing up the MySQL database..." -### (However, things like MySQL dumps *do* take some time to run, though the -### copy of the generated dump to the archive still happens later) - ynh_mysql_dump_db --database="$db_name" > db.sql #================================================= diff --git a/scripts/change_url b/scripts/change_url index 495b7eb..1b6a5ae 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -21,6 +21,10 @@ new_path=$YNH_APP_NEW_PATH app=$YNH_APP_INSTANCE_NAME +if [ $new_path != "/" ]; then + ynh_die --message="The app can only be installed at the root of a domain." +fi + #================================================= # LOAD SETTINGS #================================================= @@ -29,11 +33,6 @@ ynh_script_progression --message="Loading installation settings..." --time --wei # Needed for helper "ynh_add_nginx_config" final_path=$(ynh_app_setting_get --app=$app --key=final_path) -# Add settings here as needed by your application -#db_name=$(ynh_app_setting_get --app=$app --key=db_name) -#db_user=$db_name -#db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) - #================================================= # BACKUP BEFORE CHANGE URL THEN ACTIVE TRAP #================================================= diff --git a/scripts/install b/scripts/install index b12094a..4f743f2 100755 --- a/scripts/install +++ b/scripts/install @@ -21,7 +21,7 @@ ynh_abort_if_errors #================================================= domain=$YNH_APP_ARG_DOMAIN -path_url=$YNH_APP_ARG_PATH +path_url="/" #$YNH_APP_ARG_PATH is_public=$YNH_APP_ARG_IS_PUBLIC app=$YNH_APP_INSTANCE_NAME diff --git a/scripts/remove b/scripts/remove index ca09292..834239f 100755 --- a/scripts/remove +++ b/scripts/remove @@ -56,9 +56,6 @@ ynh_mysql_remove_db --db_user=$db_user --db_name=$db_name #================================================= ynh_script_progression --message="Removing dependencies..." --time --weight=1 -# Remove metapackage and its dependencies -ynh_remove_app_dependencies - ynh_remove_nodejs #================================================= @@ -77,14 +74,6 @@ ynh_script_progression --message="Removing NGINX web server configuration..." -- # Remove the dedicated NGINX config ynh_remove_nginx_config -#================================================= -# REMOVE PHP-FPM CONFIGURATION -#================================================= -ynh_script_progression --message="Removing PHP-FPM configuration..." --time --weight=1 - -# Remove the dedicated PHP-FPM config -ynh_remove_fpm_config - #================================================= # REMOVE LOGROTATE CONFIGURATION #================================================= @@ -93,24 +82,6 @@ ynh_script_progression --message="Removing logrotate configuration..." --time -- # Remove the app-specific logrotate config ynh_remove_logrotate -#================================================= -# CLOSE A PORT -#================================================= - -if yunohost firewall list | grep -q "\- $port$" -then - ynh_script_progression --message="Closing port $port..." --time --weight=1 - ynh_exec_warn_less yunohost firewall disallow TCP $port -fi - -#================================================= -# REMOVE FAIL2BAN CONFIGURATION -#================================================= -ynh_script_progression --message="Removing Fail2ban configuration..." --time --weight=1 - -# Remove the dedicated Fail2Ban config -ynh_remove_fail2ban_config - #================================================= # SPECIFIC REMOVE #================================================= @@ -118,12 +89,6 @@ ynh_remove_fail2ban_config #================================================= ynh_script_progression --message="Removing various files..." --time --weight=1 -# Remove a cron file -ynh_secure_remove --file="/etc/cron.d/$app" - -# Remove a directory securely -ynh_secure_remove --file="/etc/$app" - # Remove the log files ynh_secure_remove --file="/var/log/$app" diff --git a/scripts/restore b/scripts/restore index b0b605e..30dea58 100755 --- a/scripts/restore +++ b/scripts/restore @@ -33,15 +33,13 @@ path_url=$(ynh_app_setting_get --app=$app --key=path) final_path=$(ynh_app_setting_get --app=$app --key=final_path) db_name=$(ynh_app_setting_get --app=$app --key=db_name) db_user=$db_name -phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) +nodejs_version=$(ynh_app_setting_set --app=$app --key=nodejs_version) #================================================= # CHECK IF THE APP CAN BE RESTORED #================================================= ynh_script_progression --message="Validating restoration parameters..." --time --weight=1 -ynh_webpath_available --domain=$domain --path_url=$path_url \ - || ynh_die --message="Path not available: ${domain}${path_url}" test ! -d $final_path \ || ynh_die --message="There is already a directory: $final_path " @@ -69,32 +67,10 @@ ynh_script_progression --message="Restoring the app main directory..." --time -- ynh_restore_file --origin_path="$final_path" -# FIXME: this should be managed by the core in the future -# Here, as a packager, you may have to tweak the ownerhsip/permissions -# such that the appropriate users (e.g. maybe www-data) can access -# files in some cases. -# But FOR THE LOVE OF GOD, do not allow r/x for "others" on the entire folder - -# this will be treated as a security issue. chmod 750 "$final_path" chmod -R o-rwx "$final_path" chown -R $app:www-data "$final_path" -#================================================= -# RESTORE THE PHP-FPM CONFIGURATION -#================================================= -ynh_script_progression --message="Restoring the PHP-FPM configuration..." --time --weight=1 - -ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" - -#================================================= -# RESTORE FAIL2BAN CONFIGURATION -#================================================= -ynh_script_progression --message="Restoring the Fail2Ban configuration..." --time --weight=1 - -ynh_restore_file "/etc/fail2ban/jail.d/$app.conf" -ynh_restore_file "/etc/fail2ban/filter.d/$app.conf" -ynh_systemd_action --action=restart --service_name=fail2ban - #================================================= # SPECIFIC RESTORATION #================================================= @@ -102,8 +78,7 @@ ynh_systemd_action --action=restart --service_name=fail2ban #================================================= ynh_script_progression --message="Reinstalling dependencies..." --time --weight=1 -# Define and install dependencies -ynh_install_app_dependencies $pkg_dependencies +ynh_install_nodejs --nodejs_version=$nodejs_version #================================================= # RESTORE THE MYSQL DATABASE @@ -114,15 +89,6 @@ db_pwd=$(ynh_app_setting_get --app=$app --key=mysqlpwd) ynh_mysql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd ynh_mysql_connect_as --user=$db_user --password=$db_pwd --database=$db_name < ./db.sql -#================================================= -# RESTORE VARIOUS FILES -#================================================= -ynh_script_progression --message="Restoring various files..." --time --weight=1 - -ynh_restore_file --origin_path="/etc/cron.d/$app" - -ynh_restore_file --origin_path="/etc/$app/" - #================================================= # RESTORE SYSTEMD #================================================= @@ -157,9 +123,8 @@ ynh_restore_file --origin_path="/etc/logrotate.d/$app" #================================================= # RELOAD NGINX AND PHP-FPM #================================================= -ynh_script_progression --message="Reloading NGINX web server and PHP-FPM..." --time --weight=1 +ynh_script_progression --message="Reloading NGINX web server..." --time --weight=1 -ynh_systemd_action --service_name=php$phpversion-fpm --action=reload ynh_systemd_action --service_name=nginx --action=reload #=================================================