#!/bin/bash #================================================= # GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= source _common.sh source /usr/share/yunohost/helpers #================================================= # MANAGE SCRIPT FAILURE #================================================= ynh_abort_if_errors #================================================= # RETRIEVE ARGUMENTS FROM THE MANIFEST #================================================= domain=$YNH_APP_ARG_DOMAIN path_url=$YNH_APP_ARG_PATH is_public=$YNH_APP_ARG_IS_PUBLIC admin=$YNH_APP_ARG_ADMIN password=$YNH_APP_ARG_PASSWORD phpversion=$YNH_PHP_VERSION timezone="$(cat /etc/timezone)" 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 "This path already contains a folder" # Register (book) web path ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url #================================================= # STORE SETTINGS FROM MANIFEST #================================================= ynh_script_progression --message="Storing installation settings..." 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=phpversion --value=$phpversion #================================================= # STANDARD MODIFICATIONS #================================================= # INSTALL DEPENDENCIES #================================================= ynh_script_progression --message="Installing dependencies..." ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies #================================================= # CREATE A POSTGRESQL DATABASE #================================================= ynh_script_progression --message="Creating a PostgreSQL database..." --weight=2 db_user=$(ynh_sanitize_dbid --db_name=$app) ynh_app_setting_set --app=$app --key=db_user --value=$db_user ynh_psql_test_if_first_run # Make sure PSQL is installed ynh_psql_setup_db --db_user=$db_user --db_name="${db_user}_tmp" # This helper will create db_user, generate db_user_pwd. But it will also create a database Noalyss does not need, hence the "tmp" flag ynh_psql_drop_db "${db_user}_tmp" # Remove the useless database just created with the "tmp" flag. # Give permission to db_user to create databases, as with version 9025 at least, standard Noalyss operation (can be tweaked with shared server install process - with potentially less features?) will require to create several databases: one admin database (account_repository), one database per accounting template (two are populated at install by default: mod1, mod2, etc.), one per accounting folder that will be created while using the app, etc. if [ -n "$db_user" ]; then sql="ALTER USER $db_user CREATEDB" ynh_psql_execute_as_root --sql="$sql" fi #================================================= # CREATE DEDICATED USER #================================================= ynh_script_progression --message="Configuring system user..." --weight=1 # Create a system user ynh_system_user_create --username=$app --home_dir="$final_path" #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= ynh_script_progression --message="Setting up source files..." --weight=5 ynh_app_setting_set --app=$app --key=final_path --value=$final_path # Download, check integrity, uncompress and patch the source from app.src ynh_setup_source --dest_dir="$final_path" chmod 750 "$final_path" chmod -R o-rwx "$final_path" chown -R $app:www-data "$final_path" #================================================= # PHP-FPM CONFIGURATION #================================================= ynh_script_progression --message="Configuring PHP-FPM..." --weight=3 # Create a dedicated PHP-FPM config ynh_add_fpm_config --usage=low --footprint=low #================================================= # NGINX CONFIGURATION #================================================= ynh_script_progression --message="Configuring NGINX web server..." --weight=2 # Create a dedicated NGINX config ynh_add_nginx_config # ================================================= # MODIFY A CONFIG FILE # ================================================= ynh_script_progression --message="Modifying $app config file..." ynh_add_config --template="../conf/noalyss.conf" --destination="$final_path/include/config.inc.php" chmod 650 "$final_path/include/config.inc.php" chown $app: "$final_path/include/config.inc.php" # Keep an archive of Noalyss' install.php script for it to be reachable by YNH restore script since the original file is deleted at the end of the install process (this archive is currently left unused, but it could be useful for future potential implementation such as scripting the admin admin user change - cf. annotations in Noalyss' /inlude/config.inc.php for use case). cp "$final_path/html/install.php" "$final_path/html/install.php.archive" #================================================= # SETUP LOGROTATE #================================================= ynh_script_progression --message="Configuring log rotation..." # Use logrotate to manage application logfile(s) ynh_use_logrotate #================================================= # SETUP SSOWAT #================================================= ynh_script_progression --message="Configuring permissions..." # Make app public if necessary or protect it if [ $is_public -eq 1 ] then ynh_permission_update --permission="main" --add="visitors" fi #================================================= # RELOAD NGINX #================================================= ynh_script_progression --message="Reloading NGINX web server..." --weight=2 ynh_systemd_action --service_name=nginx --action=reload #================================================= # SEND A README FOR THE ADMIN #================================================= ynh_script_progression --message="Sending a readme to the admin email address. Please check it to complete the installation process." message="Noalyss installation is *almost* complete :) To conclude, please open the admin configuration page of your ${app^} domain: https://$domain$path_url/install.php You will have to: 1. Select the language you want and click on \"Continuer\" (FR) / \"Continue\" (EN). 2. Scroll the page down and click on the button \"Commencer la mise à jour ou l'installation ?\" (FR) / \"Start the update or the installation ?\" (EN) 3. Scroll to the bottom of the page and click on the button \"Essai effacement install.php et se connecter à NOALYSS\" (FR) / \"Try erasing install.php and log into NOALYSS\" (EN) Once done, you will be able to log into Noalyss with your credentials: ------------------------------------------- ${app^}'s domain: https://$domain$path_url ${app^}'s admin user: $admin ${app^}'s admin password: $password ------------------------------------------- Link to Noalyss' user documentation: https://www.noalyss.eu/?page_id=1031 Please find also for reference the credential for the dedicated PostgreSQL database user: ------------------------------------------- Database's dedicated user: $app Database's dedicated user's password: $db_pwd ------------------------------------------- If you are facing any problem or want to improve this app, please open a new issue here: https://github.com/YunoHost-Apps/noalysse_ynh/issues Or post a message in the forum: https://forum.yunohost.org/t/noalyss-beligum-and-french-accounting/7356" ynh_send_readme_to_admin "$message" #================================================= # END OF SCRIPT #================================================= ynh_script_progression --message="Installation of $app completed" --last