#!/bin/bash #================================================= # GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= source _common.sh source /usr/share/yunohost/helpers source psql.sh #================================================= # LOAD SETTINGS #================================================= app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get "$app" domain) path_url="/" is_public=$(ynh_app_setting_get "$app" is_public) admin=$(ynh_app_setting_get "$app" admin) admin_email=$(ynh_app_setting_get "$app" admin_email) final_path=$(ynh_app_setting_get "$app" final_path) random_key=$(ynh_app_setting_get "$app" random_key) name=$(ynh_app_setting_get "$app" name) port=$(ynh_app_setting_get "$app" port) db_name=$(ynh_app_setting_get "$app" psql_db) db_pwd=$(ynh_app_setting_get "$app" psqlpwd) #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= # Fix is_public as a boolean value if [ "$is_public" = "Yes" ]; then ynh_app_setting_set "$app" is_public 1 is_public=1 elif [ "$is_public" = "No" ]; then ynh_app_setting_set "$app" is_public 0 is_public=0 fi #================================================= # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP #================================================= # 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 # Stop Pleroma for upgrade systemctl stop "$app" #=================================================== # Add PostgreSQL extension pg_trgm and citext #=================================================== ynh_psql_execute_as_root "\connect $db_name CREATE EXTENSION IF NOT EXISTS unaccent;CREATE EXTENSION IF NOT EXISTS pg_trgm;" ynh_psql_execute_as_root "\connect $db_name CREATE EXTENSION IF NOT EXISTS unaccent;CREATE EXTENSION IF NOT EXISTS citext;" # Open this port yunohost firewall allow Both "$port" 2>&1 #================================================= # CREATE DEDICATED USER #================================================= # Create a system user ynh_system_user_create "$app" "$final_path" #================================================= # INSTALL DEPENDENCIES #================================================= # Add erlang for Debian Jessie if [ "$(lsb_release --codename --short)" == "jessie" ]; then echo "deb http://packages.erlang-solutions.com/debian jessie contrib" | tee /etc/apt/sources.list.d/erlang-solutions.list elif [ "$(lsb_release --codename --short)" == "stretch" ]; then echo "deb http://packages.erlang-solutions.com/debian stretch contrib" | tee /etc/apt/sources.list.d/erlang-solutions.list fi sudo wget https://packages.erlang-solutions.com/debian/erlang_solutions.asc sudo apt-key add erlang_solutions.asc sudo rm erlang_solutions.asc # install dependencies ynh_install_app_dependencies git build-essential postgresql postgresql-contrib openssl g++ apt-transport-https erlang-inets elixir erlang-dev erlang-parsetools erlang-xmerl erlang-tools # Normalize the URL path syntax path_url=$(ynh_normalize_url_path "$path_url") #================================================= # DOWNLOAD, CHECK AND UNPACK PLEROMA SOURCE #================================================= ( cd $final_path/$app && git pull ) # Give permisiion to the final_path chown -R "$app":"$app" "$final_path" ( cd $final_path/$app && sudo -u "$app" MIX_ENV=prod mix local.hex --force ) ( cd $final_path/$app && sudo -u "$app" MIX_ENV=prod mix local.rebar --force ) ( cd $final_path/$app && sudo -u "$app" mix deps.get ) ( cd $final_path/$app && sudo -u "$app" MIX_ENV=prod mix ecto.migrate --force ) #================================================= # NGINX CONFIGURATION #================================================= # Create a dedicated nginx config ynh_add_nginx_config # Recalculate and store the config file checksum into the app settings ynh_store_file_checksum "$final_path/$app/config/prod.secret.exs" #================================================= # SETUP SYSTEMD #================================================= # Create a dedicated systemd config ynh_add_systemd_config # Set right permissions chown -R "$app":"$app" "$final_path" #================================================= # SETUP SSOWAT #================================================= if [ "$is_public" -eq 0 ] then # Remove the public access ynh_app_setting_delete "$app" skipped_uris fi # Make app public if necessary if [ "$is_public" -eq 1 ] then # unprotected_uris allows SSO credentials to be passed anyway ynh_app_setting_set "$app" unprotected_uris "/" fi #================================================= # RELOAD NGINX #================================================= systemctl reload nginx systemctl enable "$app" systemctl start "$app" # App needs time to start sleep 10