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

155 lines
5.1 KiB
Text
Raw Normal View History

2015-05-24 23:01:16 +02:00
#!/bin/bash
2021-11-25 19:38:26 +01:00
#=================================================
# GENERIC START
#=================================================
# IMPORT GENERIC HELPERS
#=================================================
source _common.sh
source /usr/share/yunohost/helpers
#=================================================
# MANAGE SCRIPT FAILURE
#=================================================
2022-03-12 16:55:59 +01:00
ynh_clean_setup () {
ynh_clean_check_starting
}
2021-11-25 19:38:26 +01:00
# 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
2021-11-25 19:38:26 +01:00
path_url="/"
admin=$YNH_APP_ARG_ADMIN
2021-11-25 19:38:26 +01:00
app=$YNH_APP_INSTANCE_NAME
2022-04-05 18:36:10 +02:00
architecture=$YNH_ARCH
2021-11-25 19:38:26 +01:00
#=================================================
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
#=================================================
ynh_script_progression --message="Validating installation parameters…"
2021-11-25 19:38:26 +01:00
# 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…"
2021-11-25 19:38:26 +01:00
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
#=================================================
# FIND AND OPEN A PORT
#=================================================
ynh_script_progression --message="Finding an available port…"
2021-11-25 19:38:26 +01:00
# Find an available port
port=$(ynh_find_port --port=10901)
ynh_app_setting_set --app=$app --key=port --value=$port
2020-06-11 18:01:26 +02:00
#=================================================
# CREATE DEDICATED USER
#=================================================
ynh_script_progression --message="Configuring system user…"
2020-06-11 18:01:26 +02:00
# Create a system user
datadir=/home/yunohost.app/$app
ynh_system_user_create --username=$app --home_dir=$datadir --use_shell
2022-03-12 16:55:59 +01:00
#=================================================
# NGINX CONFIGURATION
#=================================================
ynh_script_progression --message="Configuring NGINX web server…"
2022-03-12 16:55:59 +01:00
# Create a dedicated NGINX config
ynh_add_nginx_config
#=================================================
# SPECIFIC SETUP
2021-11-25 19:38:26 +01:00
#=================================================
# INSTALL DUNITER
#=================================================
ynh_script_progression --message="Installation of Debian package of Duniter…"
2021-11-25 19:38:26 +01:00
tempdir="$(mktemp -d)"
2022-04-05 18:36:10 +02:00
ynh_setup_source --dest_dir=$tempdir --source_id=$architecture
ynh_exec_warn_less dpkg -i $tempdir/duniter-server-v1.8.*-linux-*.deb
2021-11-25 19:38:26 +01:00
2022-03-12 16:55:59 +01:00
#=================================================
# CREATE DATA DIRECTORY
#=================================================
ynh_script_progression --message="Creating a data directory…"
2022-03-12 16:55:59 +01:00
ynh_app_setting_set --app=$app --key=datadir --value=$datadir
mkdir -p $datadir
chmod 750 "$datadir"
chmod -R o-rwx "$datadir"
chown -R $app:www-data "$datadir"
2021-11-25 19:38:26 +01:00
#=================================================
# CONFIGURE DUNITER
2021-11-25 19:38:26 +01:00
#=================================================
ynh_script_progression --message="Configure Duniter…"
2021-11-25 19:38:26 +01:00
CONFIGURE_DUNITER
2021-11-25 19:38:26 +01:00
#=================================================
# SETUP SYSTEMD
#=================================================
ynh_script_progression --message="Configuring a systemd service…"
2022-03-12 16:55:59 +01:00
# Create a dedicated systemd config
2021-11-25 19:38:26 +01:00
ynh_add_systemd_config
2015-05-24 23:01:16 +02:00
2021-11-25 19:38:26 +01:00
#=================================================
# INTEGRATE SERVICE IN YUNOHOST
#=================================================
ynh_script_progression --message="Integrating service in YunoHost…"
2022-03-12 16:55:59 +01:00
yunohost service add $app
2021-11-25 19:38:26 +01:00
#=================================================
# START SYSTEMD SERVICE
#=================================================
ynh_script_progression --message="Starting a systemd service…"
2021-11-25 19:38:26 +01:00
# Start a systemd service
2022-03-12 16:55:59 +01:00
ynh_systemd_action --service_name=$app --action="start" --log_path=systemd
2015-12-31 15:24:30 +01:00
2021-11-25 19:38:26 +01:00
#=================================================
# SETUP SSOWAT
#=================================================
ynh_script_progression --message="Configuring permissions…"
2021-11-25 19:38:26 +01:00
[ref] Protect webadmin, mv BMA and webadmin paths to make the CI happy \# Protect webadmin Modify 'main' permission group to protect the webadmin to the admin Create 'apis' permission publicly accessible to make BMA and WS2P APIs accessible to whole Internet and set --auth_header=false \# Nginx misconfiguration BMA is exposed on port 10901 The webadmin on port 9220 this explains why BMA was not accessible because it was redirected to the webadmin Was probably done to solve following problem with the CI \# Move BMA to /bma and webadmin to root path '/' Move the WebAdmin from '/webadmin' to '/' root path Move BMA from '/' to '/bma/' path In order to have passing access test on the root path with the CI BMA returns a 502 HTTP error since no synchronization have been performed therefore there is nothing to be displayed Cesium and Silkaj support connection to BMA endpoint with a path in \## TODOs in Duniter v1 There is no synchronization possible to duniter_ynh BMA api, since Duniter doesn’t support specifying a path to 'sync' command Can’t define a custom BMAS endpoint with /bma path in The endpoint doesn’t stay, it seems its overwritten by the fact that when specifying port 443, BMAS endpoint get created and overwrites this one ynh_exec_as duniter duniter config --addep "BMAS $domain 443 /bma" This is not as important as having a correct WS2P endpoint defined for inter-node connection Nice to have for BMA endpoint discovery \# Clean Nginx config Define once by moving WS, and SSOwat panel support to the common part Remove /modules path, not really used anymore Replace 127.0.0.1 by localhost
2022-05-02 19:23:06 +02:00
# Change main group to protect sensitive sub-routes (client, API) to Duniter web admin interface, give access to choosen admin
ynh_permission_update --permission "main" --add "$admin" --remove "all_users"
ynh_permission_url --permission "main" --add_url "/webmin"
# Create apis permission group to public to allow BMA and WS2P APIs accessible to visitors
ynh_permission_create --permission "apis" --url "/bma" --additional_urls "/ws2p" --auth_header=false --allowed "visitors"
2021-11-25 19:38:26 +01:00
#=================================================
# RELOAD NGINX
#=================================================
ynh_script_progression --message="Reloading NGINX web server…"
2021-11-25 19:38:26 +01:00
ynh_systemd_action --service_name=nginx --action=reload
2020-06-11 18:27:42 +02:00
#=================================================
# END OF SCRIPT
#=================================================
2022-03-12 16:55:59 +01:00
ynh_script_progression --message="Installation of $app completed"