diff --git a/conf/amd64.src b/conf/amd64.src deleted file mode 100644 index 352aa3e..0000000 --- a/conf/amd64.src +++ /dev/null @@ -1,6 +0,0 @@ -SOURCE_URL=https://akkoma-updates.s3-website.fr-par.scw.cloud/stable/akkoma-amd64.zip -SOURCE_SUM=146b148be0e71482e7614246b8a0c563a5c45ed6581e20f70035b3e3a2377ba2 -SOURCE_SUM_PRG=sha256sum -SOURCE_FORMAT=zip -SOURCE_IN_SUBDIR=true -SOURCE_FILENAME= diff --git a/conf/systemd.service b/conf/systemd.service index c013392..24e43c8 100644 --- a/conf/systemd.service +++ b/conf/systemd.service @@ -15,12 +15,12 @@ Environment="MIX_ENV=prod" ; Make sure that all paths fit your installation. ; Path to the home directory of the user running the Akkoma service. -Environment="HOME=__FINALPATH__/live/" +Environment="HOME=__INSTALL_DIR__/live/" ; Path to the folder containing the Akkoma installation. -WorkingDirectory=__FINALPATH__/live/ +WorkingDirectory=__INSTALL_DIR__/live/ ; Path to the Pleroma binary. ; It has to be Pleroma not Akkoma -ExecStart=__FINALPATH__/live/bin/pleroma start -ExecStop=__FINALPATH__/live/bin/pleroma stop +ExecStart=__INSTALL_DIR__/live/bin/pleroma start +ExecStop=__INSTALL_DIR__/live/bin/pleroma stop ; Some security directives. ; Use private /tmp and /var/tmp folders inside a new file system namespace, which are discarded after the process stops. diff --git a/manifest.json b/manifest.json deleted file mode 100644 index 4524153..0000000 --- a/manifest.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "name": "Akkoma", - "id": "akkoma", - "packaging_format": 1, - "description": { - "en": "Federated social networking server built on ActivityPub open protocol", - "fr": "Serveur de réseautage social fédéré basé sur le protocole ouvert ActivityPub" - }, - "version": "3.10.4~ynh3", - "url": "https://akkoma.social/", - "upstream": { - "license": "AGPL-3.0-only", - "website": "https://akkoma.social/", - "demo": "https://otp.akkoma.dev", - "admindoc": "https://docs.akkoma.dev/stable/", - "code": "https://akkoma.dev/AkkomaGang/akkoma/" - }, - "license": "AGPL-3.0-only", - "maintainer": [ - { - "name": "Lapineige" - } - ], - "requirements": { - "yunohost": ">= 12.0" - }, - "multi_instance": false, - "services": [ - "nginx" - ], - "arguments": { - "install": [ - { - "name": "domain", - "type": "domain" - }, - { - "name": "is_public", - "type": "boolean", - "default": true - }, - { - "name": "admin", - "type": "user" - }, - { - "name": "password", - "type": "password" - }, - { - "name": "name", - "type": "string", - "ask": { - "en": "Choose a name for your Akkoma instance", - "fr": "Choisissez un nom pour votre instance Akkoma" - }, - "example": "My_akkoma", - "default": "My_akkoma" - }, - { - "name": "registration", - "type": "boolean", - "ask": { - "en": "Should registration be open to users who do not have a YunoHost account on the system?", - "fr": "L'inscription doit-elle être ouverte aux utilisateurs qui n'ont pas de compte YunoHost sur le système ?" - }, - "default": false - }, - { - "name": "cache", - "type": "boolean", - "ask": { - "en": "Enable media-cache for your instance: downloaded media won't be downloaded twice, at the price of storage capacity.", - "fr": "Activer le cache média pour votre instance : les médias téléchargés le seront pas deux fois, au prix d'un plus grande utilisation de l'espace de stockage." - }, - "default": true - }, - { - "name": "size", - "type": "string", - "ask": { - "en": "Select the media-cache size (in GB). If you did not enabled media-cache in above option then this option will have no effect.", - "fr": "Sélectionner la taille du cache média (en Go). Si vous n'avez pas activé le cache média ci-dessus, cette option n'aura aucun effet." - }, - "choices": [ - "1g", - "2g", - "5g", - "10g", - "20g", - "40g", - "80g", - "150g" - ], - "default": "5g" - } - ] - } -} diff --git a/manifest.toml b/manifest.toml new file mode 100644 index 0000000..6803982 --- /dev/null +++ b/manifest.toml @@ -0,0 +1,96 @@ +packaging_format = 2 + +id = "akkoma" +name = "Akkoma" +description.en = "Federated social networking server built on ActivityPub open protocol" +description.fr = "Serveur de réseautage social fédéré basé sur le protocole ouvert ActivityPub" + +version = "3.10.4~ynh3" + +maintainers = ["Lapineige"] + +[upstream] +license = "AGPL-3.0-only" +website = "https://akkoma.social/" +demo = "https://otp.akkoma.dev" +admindoc = "https://docs.akkoma.dev/stable/" +code = "https://akkoma.dev/AkkomaGang/akkoma/" + +[integration] +yunohost = ">= 12.0" +architectures = ["amd64"] # FIXME HELPWANTED "arm64" +multi_instance = false +ldap = false +sso = false +disk = "50M" # FIXME: replace with an **estimate** minimum disk requirement. e.g. 20M, 400M, 1G, ... +ram.build = "50M" # FIXME: replace with an **estimate** minimum ram requirement. e.g. 50M, 400M, 1G, ... +ram.runtime = "50M" # FIXME: replace with an **estimate** minimum ram requirement. e.g. 50M, 400M, 1G, ... + +[install] + [install.domain] + # this is a generic question - ask strings are automatically handled by Yunohost's core + type = "domain" + + [install.init_main_permission] + type = "group" + default = "visitors" + + [install.admin] + # this is a generic question - ask strings are automatically handled by Yunohost's core + type = "user" + + [install.password] + # this is a generic question - ask strings are automatically handled by Yunohost's core + type = "password" + + [install.instance_name] + ask.en = "Choose a name for your Akkoma instance" + ask.fr = "Choisissez un nom pour votre instance Akkoma" + type = "string" + example = "My_akkoma" + default = "My_akkoma" + + [install.registration] + ask.en = "Should registration be open to users who do not have a YunoHost account on the system?" + ask.fr = "L'inscription doit-elle être ouverte aux utilisateurs qui n'ont pas de compte YunoHost sur le système ?" + type = "boolean" + default = false + + [install.cache] + ask.en = "Enable media-cache for your instance: downloaded media won't be downloaded twice, at the price of storage capacity." + ask.fr = "Activer le cache média pour votre instance : les médias téléchargés le seront pas deux fois, au prix d'un plus grande utilisation de l'espace de stockage." + type = "boolean" + default = true + + [install.size] + ask.en = "Select the media-cache size (in GB). If you did not enabled media-cache in above option then this option will have no effect. This can be tweaked afterwards." + ask.fr = "Sélectionner la taille du cache média (en Go). Si vous n'avez pas activé le cache média ci-dessus, cette option n'aura aucun effet. Cela peut être ajusté après-coup." + type = "select" + choices = ["1g", "2g", "5g", "10g", "20g", "40g", "60g", "100g", "150g"] + default = "5g" + +[resources] + + [resources.sources.main] + url = "https://akkoma-updates.s3-website.fr-par.scw.cloud/stable/akkoma-amd64.zip" + sha256 = "146b148be0e71482e7614246b8a0c563a5c45ed6581e20f70035b3e3a2377ba2" + # autoupdate.strategy = "latest_github_release" # How to implement this ? + # autoupdate.asset = ".*\\.zip" + + [resources.system_user] + + [resources.install_dir] + + [resources.data_dir] + + [resources.permissions] + main.url = "/" + + [resources.ports] + main.default = 8095 # FIXME + + [resources.apt] + packages = "curl, unzip, libncurses5, postgresql, postgresql-contrib, imagemagick, ffmpeg, exiftool, libimage-exiftool-perl" + + [resources.database] + type = "postgresql" diff --git a/scripts/_common.sh b/scripts/_common.sh index e898399..19cae56 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -5,7 +5,8 @@ #================================================= # dependencies used by the app (must be on a single line) -pkg_dependencies="curl unzip libncurses5 postgresql postgresql-contrib imagemagick ffmpeg exiftool libimage-exiftool-perl" +#REMOVEME? pkg_dependencies="curl unzip libncurses5 postgresql postgresql-contrib imagemagick ffmpeg exiftool libimage-exiftool-perl" +export FLAVOUR="amd64-debian-bookworm" #FIXME : arm arch ? #================================================= # PERSONAL HELPERS diff --git a/scripts/backup b/scripts/backup index 22831db..98ad6de 100644 --- a/scripts/backup +++ b/scripts/backup @@ -10,28 +10,18 @@ source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers -#================================================= -# MANAGE SCRIPT FAILURE -#================================================= - -ynh_clean_setup () { - true -} -# Exit if an error occurs during the execution of the script -ynh_abort_if_errors - #================================================= # LOAD SETTINGS #================================================= ynh_print_info --message="Loading settings..." -app=$YNH_APP_INSTANCE_NAME +#REMOVEME? 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) -cache=$(ynh_app_setting_get --app=$app --key=cache) -datadir=$(ynh_app_setting_get --app=$app --key=datadir) +#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) +#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) +#REMOVEME? db_name=$(ynh_app_setting_get --app=$app --key=db_name) +#REMOVEME? cache=$(ynh_app_setting_get --app=$app --key=cache) +#REMOVEME? data_dir=$(ynh_app_setting_get --app=$app --key=data_dir) #================================================= # DECLARE DATA AND CONF FILES TO BACKUP @@ -42,14 +32,14 @@ ynh_print_info --message="Declaring files to be backed up..." # BACKUP THE APP MAIN DIR #================================================= -ynh_backup --src_path="$final_path" +ynh_backup --src_path="$install_dir" #================================================= # BACKUP THE DATA DIR #================================================= # When using BACKUP_CORE_ONLY (default), this folder will not be saved. This saves a lot of space and time, in particular during upgrades. -ynh_backup --src_path="$datadir" --is_big +ynh_backup --src_path="$data_dir" --is_big #================================================= # BACKUP THE NGINX CONFIGURATION diff --git a/scripts/change_url b/scripts/change_url index 7f1fe6c..535b8cf 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -46,8 +46,6 @@ 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 #================================================= # CHECK WHICH PARTS SHOULD BE CHANGED diff --git a/scripts/install b/scripts/install index 86d8491..b168bcb 100644 --- a/scripts/install +++ b/scripts/install @@ -9,29 +9,11 @@ source _common.sh source /usr/share/yunohost/helpers -#================================================= -# MANAGE SCRIPT FAILURE -#================================================= - -ynh_clean_setup () { - true -} -# Exit if an error occurs during the execution of the script -ynh_abort_if_errors - #================================================= # RETRIEVE ARGUMENTS FROM THE MANIFEST #================================================= -domain=$YNH_APP_ARG_DOMAIN -path_url="/" -is_public=$YNH_APP_ARG_IS_PUBLIC -admin=$YNH_APP_ARG_ADMIN -password=$YNH_APP_ARG_PASSWORD -name="${YNH_APP_ARG_NAME// /_}" -registration=$YNH_APP_ARG_REGISTRATION -cache=$YNH_APP_ARG_CACHE -size=$YNH_APP_ARG_SIZE +path="/" random_key=$(ynh_string_random --length=64) signing_salt=$(ynh_string_random --length=8) admin_email=$(ynh_user_get_info --username=$admin --key="mail") @@ -41,32 +23,30 @@ if [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]; then admin="test" fi -app=$YNH_APP_INSTANCE_NAME - #================================================= # CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS #================================================= ynh_script_progression --message="Validating installation parameters..." --weight=1 -final_path=/var/www/$app -test ! -e "$final_path" || ynh_die --message="This path already contains a folder" +#REMOVEME? install_dir=/var/www/$app +#REMOVEME? test ! -e "$install_dir" || ynh_die --message="This path already contains a folder" # Register (book) web path -ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url +#REMOVEME? ynh_webpath_register --app=$app --domain=$domain --path=$path #================================================= # STORE SETTINGS FROM MANIFEST #================================================= -ynh_script_progression --message="Storing installation settings..." --weight=1 +#REMOVEME? ynh_script_progression --message="Storing installation settings..." --weight=1 -ynh_app_setting_set --app=$app --key=domain --value=$domain -ynh_app_setting_set --app=$app --key=path --value=$path_url -ynh_app_setting_set --app=$app --key=admin --value=$admin -ynh_app_setting_set --app=$app --key=name --value=$name +#REMOVEME? ynh_app_setting_set --app=$app --key=domain --value=$domain +#REMOVEME? ynh_app_setting_set --app=$app --key=path --value=$path +#REMOVEME? ynh_app_setting_set --app=$app --key=admin --value=$admin +ynh_app_setting_set --app=$app --key=instance_name --value=$instance_name ynh_app_setting_set --app=$app --key=registration --value=$registration ynh_app_setting_set --app=$app --key=cache --value=$cache ynh_app_setting_set --app=$app --key=size --value=$size -ynh_app_setting_set --app=$app --key=admin_email --value=$admin_email +#REMOVEME? ynh_app_setting_set --app=$app --key=admin_email --value=$admin_email ynh_app_setting_set --app=$app --key=random_key --value=$random_key ynh_app_setting_set --app=$app --key=signing_salt --value=$signing_salt @@ -84,28 +64,28 @@ ynh_app_setting_set --app=$app --key=port --value=$port #================================================= # INSTALL DEPENDENCIES #================================================= -ynh_script_progression --message="Installing dependencies..." --weight=1 +#REMOVEME? ynh_script_progression --message="Installing dependencies..." --weight=1 -ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies +#REMOVEME? ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies #================================================= # CREATE DEDICATED USER #================================================= -ynh_script_progression --message="Configuring system user..." --weight=1 +#REMOVEME? ynh_script_progression --message="Configuring system user..." --weight=1 # Create a system user -ynh_system_user_create --username=$app --home_dir="$final_path" +#REMOVEME? ynh_system_user_create --username=$app --home_dir="$install_dir" #================================================= # CREATE A POSTGRESQL DATABASE #================================================= -ynh_script_progression --message="Creating a PostgreSQL database..." --weight=1 +#REMOVEME? ynh_script_progression --message="Creating a PostgreSQL database..." --weight=1 -db_name=$(ynh_sanitize_dbid --db_name=$app) -db_user=$db_name -ynh_app_setting_set --app=$app --key=db_name --value=$db_name -ynh_psql_test_if_first_run -ynh_psql_setup_db --db_user=$db_user --db_name=$db_name +#REMOVEME? db_name=$(ynh_sanitize_dbid --db_name=$app) +#REMOVEME? db_user=$db_name +#REMOVEME? ynh_app_setting_set --app=$app --key=db_name --value=$db_name +#REMOVEME? ynh_psql_test_if_first_run +#REMOVEME? ynh_psql_setup_db --db_user=$db_user --db_name=$db_name ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS unaccent;" --database=$db_name ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS pg_trgm;" --database=$db_name ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS citext;" --database=$db_name @@ -116,13 +96,13 @@ ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";" - #================================================= ynh_script_progression --message="Setting up source files..." --weight=1 -ynh_app_setting_set --app=$app --key=final_path --value=$final_path +#REMOVEME? ynh_app_setting_set --app=$app --key=install_dir --value=$install_dir # Download, check integrity, uncompress and patch the source from app.src -ynh_setup_source --dest_dir="$final_path/live" --source_id=$YNH_ARCH +ynh_setup_source --dest_dir="$install_dir/live" -chmod 750 "$final_path" -chmod -R o-rwx "$final_path" -chown -R $app:$app "$final_path" +chmod 750 "$install_dir" +chmod -R o-rwx "$install_dir" +chown -R $app:$app "$install_dir" #================================================= # NGINX CONFIGURATION @@ -146,19 +126,19 @@ ynh_add_nginx_config #================================================= ynh_script_progression --message="Creating a data directory..." --weight=1 -datadir=/home/yunohost.app/$app -ynh_app_setting_set --app=$app --key=datadir --value=$datadir +#REMOVEME? data_dir=/home/yunohost.app/$app +#REMOVEME? ynh_app_setting_set --app=$app --key=data_dir --value=$data_dir -mkdir -p $datadir -mkdir -p "$datadir/uploads/" -mkdir -p "$datadir/static/" -mkdir -p "$datadir/static/emoji/" -mkdir -p "$datadir/static/static/themes" -mv ../conf/styles.json "$datadir/static/styles.json" +mkdir -p $data_dir +mkdir -p "$data_dir/uploads/" +mkdir -p "$data_dir/static/" +mkdir -p "$data_dir/static/emoji/" +mkdir -p "$data_dir/static/static/themes" +mv ../conf/styles.json "$data_dir/static/styles.json" -chmod 750 "$datadir" -chmod -R o-rwx "$datadir" -chown -R $app:$app "$datadir" +chmod 750 "$data_dir" +chmod -R o-rwx "$data_dir" +chown -R $app:$app "$data_dir" #================================================= # ADD A CONFIGURATION @@ -174,7 +154,7 @@ chown $app:$app /etc/$app # SETUP SYSTEMD #================================================= ### fake akkoma executable -ln -s "$final_path/live/bin/pleroma" "$final_path/live/bin/akkoma" +ln -s "$install_dir/live/bin/pleroma" "$install_dir/live/bin/akkoma" ynh_script_progression --message="Configuring a systemd service..." --weight=1 @@ -186,13 +166,13 @@ ynh_add_systemd_config #================================================= ynh_script_progression --message="Making setup..." --weight=1 -pushd $final_path/live +pushd $install_dir/live #Generate instance - ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$final_path/live/bin/pleroma_ctl instance gen --force \ + ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$install_dir/live/bin/pleroma_ctl instance gen --force \ --output $config \ --output-psql /tmp/setup_db.psql \ --domain $domain \ - --instance-name \"$name\" \ + --instance-name \"$instance_name\" \ --admin-email $admin_email \ --notify-email $admin_email \ --dbhost localhost \ @@ -202,8 +182,8 @@ pushd $final_path/live --rum N \ --indexable Y \ --db-configurable Y \ - --uploads-dir $datadir/uploads \ - --static-dir $datadir/static \ + --uploads-dir $data_dir/uploads \ + --static-dir $data_dir/static \ --listen-ip 127.0.0.1 \ --listen-port $port \ --strip-uploads Y \ @@ -225,13 +205,13 @@ ynh_replace_string --match_string="config :akkoma, configurable_from_database: f registration_bool_value=`(($registration)) && echo "true" || echo "false"` ynh_replace_string --match_string="registrations_open: true" --replace_string="registrations_open: $registration_bool_value" --target_file="$config" -pushd $final_path/live - ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$final_path/live/bin/pleroma_ctl migrate" +pushd $install_dir/live + ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$install_dir/live/bin/pleroma_ctl migrate" ynh_systemd_action --service_name=$app --action="start" --log_path=systemd --line_match="Access Pleroma.Web.Endpoint" # Add user - ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$final_path/live/bin/pleroma_ctl user new $admin $admin_email --password $password --moderator --admin -y" + ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$install_dir/live/bin/pleroma_ctl user new $admin $admin_email --password $password --moderator --admin -y" ynh_systemd_action --service_name=$app --action="stop" --log_path=systemd popd @@ -266,20 +246,20 @@ ynh_systemd_action --service_name=$app --action="start" --log_path=systemd --lin #================================================= # SETUP SSOWAT #================================================= -ynh_script_progression --message="Configuring permissions..." --weight=1 +#REMOVEME? ynh_script_progression --message="Configuring permissions..." --weight=1 -# Make app public if necessary -if [ $is_public -eq 1 ] +# Make app public if necessary +if [ $is_public -eq 1 ] #REMOVEME? then # Everyone can access the app. # The "main" permission is automatically created before the install script. - ynh_permission_update --permission="main" --add="visitors" +ynh_permission_update --permission="main" --add="visitors" fi # Everyone can access to the api part # We don't want to display the tile in the sso so we put --show_tile="false" # And we don't want that the YunoHost Admin can remove visitors group to this permission, so we put --protected="true" -ynh_permission_create --permission="api" --url="/api" --allowed="visitors" --auth_header="false" --show_tile="false" --protected="true" +ynh_permission_create --permission="api" --url="/api" --allowed="visitors" --auth_header="false" --show_tile="false" --protected="true" #REMOVEME? #================================================= # RELOAD NGINX @@ -295,7 +275,7 @@ ynh_systemd_action --service_name=nginx --action=reload ynh_script_progression --message="Configure admin UI to allow it to change setting - step 2/2" --weight=1 # Correct path to 'static dir' in DB # This must be done when Akkoma is running (i.e. after install and start) -ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$final_path/live/bin/pleroma_ctl config migrate_to_db" +ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$install_dir/live/bin/pleroma_ctl config migrate_to_db" #================================================= # INSTALL BASIC FRONTENDS @@ -304,18 +284,18 @@ ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$final_path/live/bin/pleroma_ # Pleroma Front-End ynh_script_progression --message="Installing Pleroma FrontEnd..." --weight=1 -ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$final_path/live/bin/pleroma_ctl frontend install pleroma-fe --ref stable" +ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$install_dir/live/bin/pleroma_ctl frontend install pleroma-fe --ref stable" # Admin Front-End ynh_script_progression --message="Installing Admin FrontEnd..." --weight=1 -ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$final_path/live/bin/pleroma_ctl frontend install admin-fe --ref stable" +ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$install_dir/live/bin/pleroma_ctl frontend install admin-fe --ref stable" #================================================= # INSTALL MANGANE FRONTEND #================================================= # Mangane alternative Front-End will be built in, ready to enable ynh_script_progression --message="Installing Mangane FrontEnd..." --weight=1 -ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$final_path/live/bin/pleroma_ctl frontend install mangane --ref dist --build-url https://github.com/BDX-town/Mangane/releases/latest/download/static.zip" +ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$install_dir/live/bin/pleroma_ctl frontend install mangane --ref dist --build-url https://github.com/BDX-town/Mangane/releases/latest/download/static.zip" # Not activated, users need to change the "primary" frontend in the admin UI (use 'mangane' and 'dist'). #================================================= diff --git a/scripts/remove b/scripts/remove index c89865f..bfe088a 100644 --- a/scripts/remove +++ b/scripts/remove @@ -14,14 +14,14 @@ source /usr/share/yunohost/helpers #================================================= ynh_script_progression --message="Loading settings..." --weight=1 -app=$YNH_APP_INSTANCE_NAME +#REMOVEME? app=$YNH_APP_INSTANCE_NAME -domain=$(ynh_app_setting_get --app=$app --key=domain) -port=$(ynh_app_setting_get --app=$app --key=port) -db_name=$(ynh_app_setting_get --app=$app --key=db_name) -db_user=$db_name -final_path=$(ynh_app_setting_get --app=$app --key=final_path) -datadir=$(ynh_app_setting_get --app=$app --key=datadir) +#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) +#REMOVEME? port=$(ynh_app_setting_get --app=$app --key=port) +#REMOVEME? db_name=$(ynh_app_setting_get --app=$app --key=db_name) +#REMOVEME? db_user=$db_name +#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) +#REMOVEME? data_dir=$(ynh_app_setting_get --app=$app --key=data_dir) #================================================= # STANDARD REMOVE @@ -51,18 +51,18 @@ ynh_remove_systemd_config #================================================= # REMOVE THE POSTGRESQL DATABASE #================================================= -ynh_script_progression --message="Removing the PostgreSQL database..." --weight=1 +#REMOVEME? ynh_script_progression --message="Removing the PostgreSQL database..." --weight=1 # Remove a database if it exists, along with the associated user -ynh_psql_remove_db --db_user=$db_user --db_name=$db_name +#REMOVEME? ynh_psql_remove_db --db_user=$db_user --db_name=$db_name #================================================= # REMOVE APP MAIN DIR #================================================= -ynh_script_progression --message="Removing app main directory..." --weight=1 +#REMOVEME? ynh_script_progression --message="Removing app main directory..." --weight=1 # Remove the app directory securely -ynh_secure_remove --file="$final_path" +#REMOVEME? ynh_secure_remove --file="$install_dir" #================================================= # REMOVE DATA DIR @@ -72,7 +72,7 @@ ynh_secure_remove --file="$final_path" if [ "${YNH_APP_PURGE:-0}" -eq 1 ] then ynh_script_progression --message="Purge option was selected. Removing app data directory..." --weight=1 - ynh_secure_remove --file="$datadir" +#REMOVEME? ynh_secure_remove --file="$data_dir" else ynh_script_progression --message="Purge option was not selected. App data directory is not removed. That is good if you want to restore a backup. For fresh install, you should remove it first." --weight=1 fi @@ -89,10 +89,10 @@ ynh_secure_remove --file="/etc/nginx/conf.d/$app-cache.conf" #================================================= # REMOVE DEPENDENCIES #================================================= -ynh_script_progression --message="Removing dependencies..." --weight=1 +#REMOVEME? ynh_script_progression --message="Removing dependencies..." --weight=1 # Remove metapackage and its dependencies -ynh_remove_app_dependencies +#REMOVEME? ynh_remove_app_dependencies #================================================= # CLOSE A PORT @@ -119,10 +119,10 @@ ynh_secure_remove --file="/etc/$app" #================================================= # REMOVE DEDICATED USER #================================================= -ynh_script_progression --message="Removing the dedicated system user..." --weight=1 +#REMOVEME? ynh_script_progression --message="Removing the dedicated system user..." --weight=1 # Delete a system user -ynh_system_user_delete --username=$app +#REMOVEME? ynh_system_user_delete --username=$app #================================================= # END OF SCRIPT diff --git a/scripts/restore b/scripts/restore index 78650f1..98d363d 100644 --- a/scripts/restore +++ b/scripts/restore @@ -10,76 +10,34 @@ source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers -#================================================= -# MANAGE SCRIPT FAILURE -#================================================= - -ynh_clean_setup () { - true -} -# Exit if an error occurs during the execution of the script -ynh_abort_if_errors - -#================================================= -# LOAD SETTINGS -#================================================= -ynh_script_progression --message="Loading settings..." --weight=1 - -app=$YNH_APP_INSTANCE_NAME - -domain=$(ynh_app_setting_get --app=$app --key=domain) -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 -port=$(ynh_app_setting_get --app=$app --key=port) -cache=$(ynh_app_setting_get --app=$app --key=cache) -datadir=$(ynh_app_setting_get --app=$app --key=datadir) - -#================================================= -# CHECK IF THE APP CAN BE RESTORED -#================================================= -ynh_script_progression --message="Validating restoration parameters..." --weight=1 - -test ! -d $final_path \ - || ynh_die --message="There is already a directory: $final_path " - #================================================= # STANDARD RESTORATION STEPS -#================================================= -# RECREATE THE DEDICATED USER -#================================================= -ynh_script_progression --message="Recreating the dedicated system user..." --weight=1 - -# Create the dedicated user (if not existing) -ynh_system_user_create --username=$app --home_dir="$final_path" - #================================================= # RESTORE THE APP MAIN DIR #================================================= ynh_script_progression --message="Restoring the app main directory..." --weight=1 -ynh_restore_file --origin_path="$final_path" +ynh_restore_file --origin_path="$install_dir" -chmod 750 "$final_path" -chmod -R o-rwx "$final_path" -chown -R $app:$app "$final_path" +chmod 750 "$install_dir" +chmod -R o-rwx "$install_dir" +chown -R $app:$app "$install_dir" #================================================= # RESTORE THE DATA DIRECTORY #================================================= ynh_script_progression --message="Restoring the data directory..." --weight=1 -ynh_restore_file --origin_path="$datadir" --not_mandatory +ynh_restore_file --origin_path="$data_dir" --not_mandatory -mkdir -p $datadir -mkdir -p "$datadir/uploads/" -mkdir -p "$datadir/static/" -mkdir -p "$datadir/static/emoji/" +mkdir -p $data_dir +mkdir -p "$data_dir/uploads/" +mkdir -p "$data_dir/static/" +mkdir -p "$data_dir/static/emoji/" -chmod 750 "$datadir" -chmod -R o-rwx "$datadir" -chown -R $app:$app "$datadir" +chmod 750 "$data_dir" +chmod -R o-rwx "$data_dir" +chown -R $app:$app "$data_dir" #================================================= # SPECIFIC RESTORATION @@ -89,7 +47,7 @@ chown -R $app:$app "$datadir" ynh_script_progression --message="Reinstalling dependencies..." --weight=1 # Define and install dependencies -ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies +ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies #REMOVEME? #================================================= # RESTORE THE NGINX CONFIGURATION @@ -108,9 +66,9 @@ fi #================================================= ynh_script_progression --message="Restoring the PostgreSQL database..." --weight=1 -db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) -ynh_psql_test_if_first_run -ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd +#REMOVEME? db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) +#REMOVEME? ynh_psql_test_if_first_run +#REMOVEME? ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS unaccent;" --database=$db_name ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS pg_trgm;" --database=$db_name ynh_psql_execute_as_root --sql="CREATE EXTENSION IF NOT EXISTS citext;" --database=$db_name diff --git a/scripts/upgrade b/scripts/upgrade index db9d50e..1072aaf 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -15,22 +15,22 @@ source /usr/share/yunohost/helpers #================================================= ynh_script_progression --message="Loading settings..." --weight=1 -app=$YNH_APP_INSTANCE_NAME - -domain=$(ynh_app_setting_get --app=$app --key=domain) -path_url=$(ynh_app_setting_get --app=$app --key=path) -admin=$(ynh_app_setting_get --app=$app --key=admin) -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 -db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) -admin_email=$(ynh_app_setting_get --app=$app --key=admin_email) -random_key=$(ynh_app_setting_get --app=$app --key=random_key) -name=$(ynh_app_setting_get --app=$app --key=name) -port=$(ynh_app_setting_get --app=$app --key=port) -cache=$(ynh_app_setting_get --app=$app --key=cache) -size=$(ynh_app_setting_get --app=$app --key=size) -registration=$(ynh_app_setting_get --app=$app --key=registration) +#REMOVEME? app=$YNH_APP_INSTANCE_NAME + +#REMOVEME? domain=$(ynh_app_setting_get --app=$app --key=domain) +#REMOVEME? path=$(ynh_app_setting_get --app=$app --key=path) +#REMOVEME? admin=$(ynh_app_setting_get --app=$app --key=admin) +#REMOVEME? #REMOVEME? install_dir=$(ynh_app_setting_get --app=$app --key=install_dir) +#REMOVEME? db_name=$(ynh_app_setting_get --app=$app --key=db_name) +#REMOVEME? db_user=$db_name +#REMOVEME? db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd) +#REMOVEME? admin_email=$(ynh_app_setting_get --app=$app --key=admin_email) +#REMOVEME? random_key=$(ynh_app_setting_get --app=$app --key=random_key) +#REMOVEME? name=$(ynh_app_setting_get --app=$app --key=name) +#REMOVEME? port=$(ynh_app_setting_get --app=$app --key=port) +#REMOVEME? cache=$(ynh_app_setting_get --app=$app --key=cache) +#REMOVEME? size=$(ynh_app_setting_get --app=$app --key=size) +#REMOVEME? registration=$(ynh_app_setting_get --app=$app --key=registration) #================================================= # CHECK VERSION @@ -51,20 +51,6 @@ abort_if_up_to_date # previous function is what defines 'version', more precisely the 'previous version' previous_version="${version}" -#================================================= -# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP -#================================================= -ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=1 - -# 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 - #================================================= # STANDARD UPGRADE STEPS #================================================= @@ -83,44 +69,6 @@ fi #================================================= ynh_script_progression --message="Ensuring downward compatibility..." --weight=1 -# Cleaning legacy permissions -if ynh_legacy_permissions_exists; then - ynh_legacy_permissions_delete_all - - ynh_app_setting_delete --app=$app --key=is_public -fi - -# Create a permission if needed -if ! ynh_permission_exists --permission="api"; then - ynh_permission_create --permission="api" --url="/api" --allowed="visitors" --auth_header="false" --show_tile="false" --protected="true" -fi - -# If db_name doesn't exist, create it -if [ -z "$db_name" ]; then - db_name=$(ynh_sanitize_dbid --db_name=$app) - ynh_app_setting_set --app=$app --key=db_name --value=$db_name -fi - -# If db_user doesn't exist, create it -if [ -z "$db_user" ]; then - db_user=$db_name -fi - -# If db_pwd doesn't exist, create it -if [ -z "$db_pwd" ]; then - db_pwd=$(ynh_app_setting_get --app=$app --key=db_pwd) - ynh_app_setting_set --app=$app --key=psqlpwd --value=$db_pwd -fi - -# Switch variables name -psql_db=$(ynh_app_setting_get --app=$app --key=psql_db) - -if [ -n "$psql_db" ] -then - db_name=$(ynh_app_setting_get --app=$app --key=psql_db) - ynh_app_setting_set --app=$app --key=db_name --value=$db_name - ynh_app_setting_delete --app=$app --key=psql_db -fi # Close a port if yunohost firewall list | grep -q "\- $port$" @@ -133,19 +81,11 @@ fi ynh_secure_remove --file="/etc/apt/sources.list.d/erlang-solutions.list" apt-key del A14F4FCA -# Switch to $final_path/live -if [ ! -d "$final_path/live" ]; then - mv $final_path/$app $final_path/live +# Switch to $install_dir/live +if [ ! -d "$install_dir/live" ]; then + mv $install_dir/$app $install_dir/live fi -#================================================= -# CREATE DEDICATED USER -#================================================= -ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1 - -# Create a dedicated user (if not existing) -ynh_system_user_create --username=$app --home_dir="$final_path" - #================================================= # UPGRADE TO OTP RELEASE #================================================= @@ -154,36 +94,32 @@ config="/etc/$app/config.exs" if ynh_version_gt "1.1.1~ynh1" "${previous_version}" ; then ynh_script_progression --message="Upgrading to OTP release..." --weight=1 - # Define app's data directory - datadir="/home/yunohost.app/${app}" - ynh_app_setting_set --app=$app --key=datadir --value="$datadir" - # Create app folders - mkdir -p "$datadir/" - mkdir -p "$datadir/uploads/" - mkdir -p "$datadir/static/" - mkdir -p "$datadir/static/emoji/" + mkdir -p "$data_dir/" + mkdir -p "$data_dir/uploads/" + mkdir -p "$data_dir/static/" + mkdir -p "$data_dir/static/emoji/" - # Give permission to the datadir - chown -R "$app":"$app" "$datadir" + # Give permission to the data_dir + chown -R "$app":"$app" "$data_dir" - rsync -a "$final_path/live/uploads/" "$datadir/uploads/" - if [ -d "$final_path/live/instance/static/" ]; then - rsync -a "$final_path/live/instance/static/" "$datadir/static/" + rsync -a "$install_dir/live/uploads/" "$data_dir/uploads/" + if [ -d "$install_dir/live/instance/static/" ]; then + rsync -a "$install_dir/live/instance/static/" "$data_dir/static/" fi - rsync -a "$final_path/live/priv/static/emoji/" "$datadir/static/emoji/" + rsync -a "$install_dir/live/priv/static/emoji/" "$data_dir/static/emoji/" mkdir -p /etc/$app chown -R $app /etc/$app - mv $final_path/live/config/prod.secret.exs $config + mv $install_dir/live/config/prod.secret.exs $config ynh_replace_string --match_string="use Mix.Config" --replace_string="import Config" --target_file="$config" echo "config :akkoma, :instance, static_dir: \"/home/yunohost.app/$app/static\"" >> $config echo "config :akkoma, akkoma.Uploaders.Local, uploads: \"/home/yunohost.app/$app/uploads\"" >> $config ynh_backup_if_checksum_is_different --file="$config" - ynh_secure_remove --file="$final_path/live" + ynh_secure_remove --file="$install_dir/live" fi if ynh_version_gt "2.0.5~ynh1" "${previous_version}" ; then @@ -214,21 +150,21 @@ if [ "$upgrade_type" == "UPGRADE_APP" ] then ynh_script_progression --message="Upgrading source files..." --weight=1 - ynh_secure_remove --file="$final_path/live" + ynh_secure_remove --file="$install_dir/live" # Download, check integrity, uncompress and patch the source from app.src - ynh_setup_source --dest_dir="$final_path/live" --source_id=$YNH_ARCH + ynh_setup_source --dest_dir="$install_dir/live" --source_id=$YNH_ARCH fi -chmod 750 "$final_path" -chmod -R o-rwx "$final_path" -chown -R $app:$app "$final_path" +chmod 750 "$install_dir" +chmod -R o-rwx "$install_dir" +chown -R $app:$app "$install_dir" #================================================= # UPGRADE DEPENDENCIES #================================================= -ynh_script_progression --message="Upgrading dependencies..." --weight=1 +#REMOVEME? ynh_script_progression --message="Upgrading dependencies..." --weight=1 -ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies +#REMOVEME? ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies #================================================= # NGINX CONFIGURATION @@ -252,8 +188,8 @@ ynh_add_nginx_config #================================================= ynh_script_progression --message="Making upgrade..." --weight=1 -pushd $final_path/live - ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$final_path/live/bin/pleroma_ctl migrate" +pushd $install_dir/live + ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$install_dir/live/bin/pleroma_ctl migrate" popd #================================================= @@ -299,18 +235,18 @@ ynh_systemd_action --service_name=$app --action="start" --log_path=systemd --lin # Pleroma Front-End ynh_script_progression --message="Upgrading Pleroma FrontEnd..." --weight=1 -ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$final_path/live/bin/pleroma_ctl frontend install pleroma-fe --ref stable" +ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$install_dir/live/bin/pleroma_ctl frontend install pleroma-fe --ref stable" # Admin Front-End ynh_script_progression --message="Upgrading Admin FrontEnd..." --weight=1 -ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$final_path/live/bin/pleroma_ctl frontend install admin-fe --ref stable" +ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$install_dir/live/bin/pleroma_ctl frontend install admin-fe --ref stable" #================================================= # INSTALL MANGANE FRONTEND (Upgrade it) #================================================= # Mangane alternative Front-End will be built in, ready to enable ynh_script_progression --message="Upgrading Mangane FrontEnd..." --weight=1 -ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$final_path/live/bin/pleroma_ctl frontend install mangane --ref dist --build-url https://github.com/BDX-town/Mangane/releases/latest/download/static.zip" +ynh_exec_warn_less ynh_exec_as $app -s $SHELL -lc "$install_dir/live/bin/pleroma_ctl frontend install mangane --ref dist --build-url https://github.com/BDX-town/Mangane/releases/latest/download/static.zip" # Not activated, users need to change the "primary" frontend in the admin UI (use 'mangane' and 'dist'). #================================================= diff --git a/tests.toml b/tests.toml new file mode 100644 index 0000000..8f25f22 --- /dev/null +++ b/tests.toml @@ -0,0 +1,4 @@ +test_format = 1.0 + + +[default]