1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/cryptpad_ynh.git synced 2024-09-03 18:26:14 +02:00
cryptpad_ynh/scripts/install

257 lines
9.3 KiB
Text
Raw Normal View History

2017-04-07 23:28:30 +02:00
#!/bin/bash
#=================================================
2022-05-28 01:29:55 +02:00
# GENERIC START
2017-04-07 23:28:30 +02:00
#=================================================
# IMPORT GENERIC HELPERS
#=================================================
source _common.sh
2017-04-07 23:28:30 +02:00
source /usr/share/yunohost/helpers
#=================================================
2022-05-28 01:29:55 +02:00
# MANAGE SCRIPT FAILURE
2017-04-07 23:28:30 +02:00
#=================================================
ynh_clean_setup () {
ynh_clean_check_starting
}
# Exit if an error occurs during the execution of the script
ynh_abort_if_errors
2017-04-07 23:28:30 +02:00
#=================================================
# RETRIEVE ARGUMENTS FROM THE MANIFEST
#=================================================
domain=$YNH_APP_ARG_DOMAIN
path_url="/"
2022-05-28 01:29:55 +02:00
is_public=$YNH_APP_ARG_IS_PUBLIC
admin=$YNH_APP_ARG_ADMIN
2021-03-17 12:02:40 +01:00
email=$(ynh_user_get_info --username=$admin --key=mail)
2017-04-07 23:28:30 +02:00
app=$YNH_APP_INSTANCE_NAME
#=================================================
2022-05-28 01:29:55 +02:00
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
2017-04-07 23:28:30 +02:00
#=================================================
ynh_script_progression --message="Validating installation parameters..." --weight=1
2017-04-07 23:28:30 +02:00
2018-04-16 20:31:39 +02:00
final_path=/var/www/$app
2022-05-28 01:29:55 +02:00
test ! -e "$final_path" || ynh_die --message="This path already contains a folder"
2018-04-16 20:31:39 +02:00
# Register (book) web path
ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url
2017-04-07 23:28:30 +02:00
#=================================================
# STORE SETTINGS FROM MANIFEST
#=================================================
2022-05-28 01:29:55 +02:00
ynh_script_progression --message="Storing installation settings..."
2017-04-07 23:28:30 +02:00
ynh_app_setting_set --app=$app --key=domain --value=$domain
2022-05-28 01:29:55 +02:00
ynh_app_setting_set --app=$app --key=path --value=$path_url
ynh_app_setting_set --app=$app --key=admin --value=$admin
2017-04-07 23:28:30 +02:00
#=================================================
# STANDARD MODIFICATIONS
#=================================================
# FIND AND OPEN A PORT
#=================================================
2021-01-09 22:38:34 +01:00
ynh_script_progression --message="Finding an available port..." --weight=1
2017-04-07 23:28:30 +02:00
# Find an available port
port=$(ynh_find_port --port=3000)
ynh_app_setting_set --app=$app --key=port --value=$port
2019-10-01 19:30:18 +02:00
# Find an available port
porti=$(ynh_find_port --port=$(($port + 1)))
ynh_app_setting_set --app=$app --key=porti --value=$porti
2019-10-01 19:30:18 +02:00
#=================================================
# CREATE A SANDBOX DOMAIN
#=================================================
2023-02-09 14:38:54 +01:00
# if the main domain for the app is a root domain, we create a correct sandbox subdomain
2023-02-09 14:42:40 +01:00
if [[ $domain == *"."* ]]; then
2023-02-09 14:38:54 +01:00
sandboxdomain=sandbox.$domain
fi
# if the main domain for the app is already a sub-domain, we create a correct sandbox domain
2023-02-09 14:42:40 +01:00
if [[ $domain == *"."*"."* ]]; then
2023-02-09 14:38:54 +01:00
sandboxdomain=sandbox-$domain
fi
# if the main domain for the app is a .local root domain, we create a correct sandbox subdomain
2023-02-09 14:42:40 +01:00
if [[ $domain == *".local" ]]; then
2023-02-09 14:38:54 +01:00
sandboxdomain=sandbox-$domain
fi
ynh_script_progression --message="Setting up sandobx domain $sandboxdomain..." --weight=1
# We don't test that in CI
if ! [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]; then
yunohost domain add $sandboxdomain
yunohost domain config set $sandboxdomain -a "mail_in=0&mail_out=0"
fi
2017-04-07 23:28:30 +02:00
#=================================================
2022-05-28 01:29:55 +02:00
# INSTALL DEPENDENCIES
2017-04-07 23:28:30 +02:00
#=================================================
ynh_script_progression --message="Installing dependencies..." --weight=20
ynh_exec_warn_less ynh_install_nodejs --nodejs_version=$nodejs_version
2017-04-07 23:28:30 +02:00
#=================================================
# CREATE DEDICATED USER
2017-04-07 23:28:30 +02:00
#=================================================
ynh_script_progression --message="Configuring system user..." --weight=1
2017-04-07 23:28:30 +02:00
# Create a system user
2021-03-18 11:26:27 +01:00
ynh_system_user_create --username=$app --home_dir="$final_path"
2017-04-07 23:28:30 +02:00
#=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE
2017-04-07 23:28:30 +02:00
#=================================================
ynh_script_progression --message="Setting up source files..." --weight=10
2017-04-07 23:28:30 +02:00
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"
2018-04-16 20:31:39 +02:00
2021-05-25 22:22:10 +02:00
chmod 750 "$final_path"
chmod -R o-rwx "$final_path"
chown -R $app:$app "$final_path"
2017-04-07 23:28:30 +02:00
#=================================================
2018-04-16 20:53:22 +02:00
# NGINX CONFIGURATION
2017-04-07 23:28:30 +02:00
#=================================================
2020-10-13 13:52:56 +02:00
ynh_script_progression --message="Configuring NGINX web server..." --weight=1
2020-10-13 13:52:56 +02:00
# Create a dedicated NGINX config
2018-04-16 20:53:22 +02:00
ynh_add_nginx_config
#=================================================
2022-05-28 01:29:55 +02:00
# ADD A CONFIGURATION
2017-04-07 23:28:30 +02:00
#=================================================
2022-05-28 01:29:55 +02:00
ynh_script_progression --message="Adding a configuration file..."
2017-04-07 23:28:30 +02:00
2022-05-28 01:29:55 +02:00
ynh_add_config --template="../conf/config.js" --destination="$final_path/config/config.js"
chmod 600 "$final_path/config/config.js"
chown $app "$final_path/config/config.js"
2019-01-05 20:47:15 +01:00
2017-04-07 23:28:30 +02:00
#=================================================
2022-05-28 01:29:55 +02:00
# SETUP SYSTEMD
2017-04-07 23:28:30 +02:00
#=================================================
2022-05-28 01:29:55 +02:00
ynh_script_progression --message="Configuring a systemd service..." --weight=1
2017-04-07 23:28:30 +02:00
2022-05-28 01:29:55 +02:00
env_path="$PATH"
# Create a dedicated systemd config
ynh_add_systemd_config
2017-04-08 00:00:54 +02:00
2019-10-01 19:30:18 +02:00
#=================================================
# INSTALL CRYPTPAD
#=================================================
2021-09-19 08:33:36 +02:00
ynh_script_progression --message="Building $app... (this will take some time and resources!)" --weight=60
2021-09-09 10:51:09 +02:00
pushd "$final_path"
ynh_use_nodejs
2021-01-24 22:33:16 +01:00
ynh_exec_warn_less npm install --allow-root
2021-01-24 22:38:43 +01:00
ynh_exec_warn_less npm install -g bower
ynh_exec_warn_less bower install --allow-root
ynh_exec_warn_less bower update --allow-root
ynh_exec_warn_less npm run build
2021-09-09 10:51:09 +02:00
popd
2019-10-01 19:30:18 +02:00
2022-05-28 01:29:55 +02:00
#=================================================
# GENERIC FINALIZATION
2017-04-07 23:28:30 +02:00
#=================================================
2020-12-04 11:33:12 +01:00
# INTEGRATE SERVICE IN YUNOHOST
2017-04-07 23:28:30 +02:00
#=================================================
ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
2017-04-07 23:28:30 +02:00
2020-12-04 11:33:12 +01:00
yunohost service add $app --description="Zero Knowledge realtime collaborative editor" --log="/var/log/$app/$app.log"
2017-04-07 23:28:30 +02:00
#=================================================
# START SYSTEMD SERVICE
#=================================================
ynh_script_progression --message="Starting a systemd service..." --weight=2
# Start a systemd service
2022-05-28 01:29:55 +02:00
ynh_systemd_action --service_name=$app --action="start" --log_path="systemd" --line_match="server available"
2017-04-07 23:28:30 +02:00
#=================================================
# SETUP SSOWAT
#=================================================
2021-02-10 14:53:57 +01:00
ynh_script_progression --message="Configuring permissions..." --weight=1
2017-04-07 23:28:30 +02:00
# Make app public if necessary
if [ $is_public -eq 1 ]
2017-04-07 23:28:30 +02:00
then
2021-01-22 14:01:32 +01:00
ynh_permission_update --permission="main" --add="visitors"
2017-04-07 23:28:30 +02:00
fi
# We authorize access to sandbox domain
# We don't test that in CI
if ! [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]; then
2023-02-09 15:33:31 +01:00
ynh_permission_url --permission="main" --add_url=$sandboxdomain --auth_header=true
# there is a bug in core that add a slash at the end of domain in ssowat conf for uris var
# we use jq to correct /etc/ssowat/conf.json
2023-02-09 14:38:54 +01:00
#uri2=$sandboxdomain
#touch /etc/ssowat/conf.json.persistent
#cat /etc/ssowat/conf.json | jq --arg uri2 "$uri2" '(.permissions[] | select(.label=="CryptPad") | .uris[1]) |=$uri2' >> /etc/ssowat/conf.json.persistent
fi
#=================================================
# APPLY FOLDER RIGHTS
#=================================================
chgrp -R www-data $final_path
#=================================================
# COPY NGINX CONF IN SANDBOX DOMAIN
#=================================================
# We don't test that in CI
if ! [ ${PACKAGE_CHECK_EXEC:-0} -eq 1 ]; then
ynh_add_config --template="/etc/nginx/conf.d/$domain.d/cryptpad.conf" --destination="/etc/nginx/conf.d/$sandboxdomain.d/cryptpad.conf"
fi
#=================================================
# RELOAD YUNOHOST-API to refresh web admin domains after domain creation (normal?)
#=================================================
ynh_systemd_action --service_name=yunohost-api --action=reload
2017-04-07 23:28:30 +02:00
#=================================================
# RELOAD NGINX
#=================================================
2020-10-13 13:52:56 +02:00
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
ynh_systemd_action --service_name=nginx --action=reload
2021-05-06 15:28:30 +02:00
#=================================================
# SEND A README FOR THE ADMIN
#=================================================
ynh_script_progression --message="Sending a readme for the admin..." --weight=1
message="CryptPad was successfully installed :)
We have added a sandbox domain for you but you still need to configure your DNS and generate Let's Encrypt Certificates for it.
2021-05-06 15:28:30 +02:00
Then you can please open your $app domain: https://$domain$path_url
2022-12-31 14:55:09 +01:00
Once CryptPad is installed, create an account via the Sign Up button on the home page which will take you to the Register page.
To make this account an instance administrator:
2021-05-06 15:28:30 +02:00
2021-08-17 12:35:07 +02:00
1. Copy the public key found in User Menu (avatar at the top right) > Settings > Account > Public Signing Key
2021-05-06 15:28:30 +02:00
2. Paste this key in /var/www/cryptpad/config/config.js in the following array (uncomment and replace the placeholder):
adminKeys: [
"[cryptpad-user1@my.awesome.website/YZgXQxKR0Rcb6r6CmxHPdAGLVludrAF2lEnkbx1vVOo=]",
],
If you are facing an issue or want to improve this app, please open a new issue in this project: https://github.com/YunoHost-Apps/cryptpad_ynh"
ynh_send_readme_to_admin "$message"
#=================================================
# END OF SCRIPT
#=================================================
2021-09-19 08:33:36 +02:00
ynh_script_progression --message="Installation of $app completed" --last