mirror of
https://github.com/YunoHost-Apps/mastodon_ynh.git
synced 2024-09-03 19:46:02 +02:00
162 lines
5.3 KiB
Bash
162 lines
5.3 KiB
Bash
#!/bin/bash
|
|
|
|
#=================================================
|
|
# GENERIC START
|
|
#=================================================
|
|
# IMPORT GENERIC HELPERS
|
|
#=================================================
|
|
|
|
if [ ! -e _common.sh ]; then
|
|
# Get the _common.sh file if it's not in the current directory
|
|
cp ../settings/scripts/_common.sh ./_common.sh
|
|
cp ../settings/scripts/_future.sh ./_future.sh
|
|
chmod a+rx _common.sh _future.sh
|
|
fi
|
|
source _common.sh
|
|
source /usr/share/yunohost/helpers
|
|
source _future.sh
|
|
|
|
#=================================================
|
|
# MANAGE SCRIPT FAILURE
|
|
#=================================================
|
|
|
|
# Exit if an error occurs during the execution of the script
|
|
ynh_abort_if_errors
|
|
|
|
#=================================================
|
|
# LOAD SETTINGS
|
|
#=================================================
|
|
|
|
app=$YNH_APP_INSTANCE_NAME
|
|
|
|
# Get old parameter of the app
|
|
domain=$(ynh_app_setting_get $app domain)
|
|
path_url=$(ynh_app_setting_get $app path)
|
|
is_public=$(ynh_app_setting_get $app is_public)
|
|
final_path=$(ynh_app_setting_get "$app" final_path)
|
|
|
|
#=================================================
|
|
# CHECK IF THE APP CAN BE RESTORED
|
|
#=================================================
|
|
|
|
ynh_webpath_available $domain $path_url \
|
|
|| ynh_die "Path not available: ${domain}${path_url}"
|
|
test ! -d $final_path \
|
|
|| ynh_die "There is already a directory: $final_path "
|
|
|
|
#=================================================
|
|
# STANDARD RESTORATION STEPS
|
|
#=================================================
|
|
# RESTORE THE NGINX CONFIGURATION
|
|
#=================================================
|
|
|
|
ynh_restore_file "/etc/nginx/conf.d/$domain.d/$app.conf"
|
|
|
|
#=================================================
|
|
# RESTORE THE APP MAIN DIR
|
|
#=================================================
|
|
|
|
ynh_restore_file "$final_path"
|
|
|
|
#=================================================
|
|
# RECREATE THE DEDICATED USER
|
|
#=================================================
|
|
|
|
# Create user unix
|
|
adduser $app --home $final_path --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password
|
|
|
|
#=================================================
|
|
# RESTORE USER RIGHTS
|
|
#=================================================
|
|
|
|
# Restore permissions on app files
|
|
chown -R $app: $final_path
|
|
|
|
#=================================================
|
|
# SPECIFIC RESTORATION
|
|
#=================================================
|
|
# REINSTALL DEPENDENCIES
|
|
#=================================================
|
|
|
|
# TODO: add in a clean way backports and yarn
|
|
|
|
# Import debian archive pubkey, need on ARM arch
|
|
arch=$(uname -m)
|
|
if [[ "$arch" = arm* ]]; then
|
|
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553
|
|
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010
|
|
fi
|
|
|
|
# Install source.list debian package backports & yarn
|
|
if [ "$(lsb_release --codename --short)" == "jessie" ]; then
|
|
echo "deb http://httpredir.debian.org/debian jessie-backports main" | tee /etc/apt/sources.list.d/jessie-backports.list
|
|
fi
|
|
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
|
|
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
|
|
ynh_package_update
|
|
|
|
# Install de Node.js
|
|
# TODO: use https://github.com/YunoHost-Apps/Experimental_helpers/blob/master/ynh_install_nodejs/ynh_install_nodejs
|
|
(
|
|
cd /opt
|
|
curl -sL https://deb.nodesource.com/setup_8.x | bash -
|
|
apt-get -y install nodejs
|
|
)
|
|
|
|
# TODO: use the same mecanism with other files
|
|
ynh_install_app_dependencies \
|
|
`# debian packages ` \
|
|
imagemagick libpq-dev libxml2-dev libxslt1-dev file curl apt-transport-https pkg-config libprotobuf-dev protobuf-compiler libicu-dev libidn11-dev \
|
|
`# redis ` \
|
|
redis-server redis-tools \
|
|
`# postgresql ` \
|
|
postgresql \
|
|
`# Ruby ` \
|
|
autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev \
|
|
`# ffmpeg from backports ` \
|
|
ffmpeg \
|
|
`# Yarn ` \
|
|
yarn
|
|
|
|
#=================================================
|
|
# RESTORE THE PostgreSQL DATABASE
|
|
#=================================================
|
|
|
|
# Restore PostgreSQL database
|
|
db_user=$(ynh_sanitize_dbid "$app")
|
|
db_name=$(ynh_app_setting_get "$app" db_name)
|
|
if [ -z "$db_name" ]; then
|
|
db_name="${app}_production"
|
|
ynh_app_setting_set "$app" db_name "$db_name"
|
|
fi
|
|
db_pwd=$(ynh_app_setting_get "$app" db_pwd)
|
|
|
|
ynh_psql_test_if_first_run
|
|
ynh_psql_setup_db "$db_user" "$db_name" "$db_pwd"
|
|
ynh_psql_execute_file_as_root ./db.sql "$db_name"
|
|
|
|
#=================================================
|
|
# ADVERTISE SERVICE IN ADMIN PANEL
|
|
#=================================================
|
|
|
|
yunohost service add $app-web
|
|
yunohost service add $app-sidekiq
|
|
yunohost service add $app-streaming
|
|
|
|
#=================================================
|
|
# RESTORE SYSTEMD
|
|
#=================================================
|
|
|
|
ynh_restore_file "/etc/systemd/system/$app-web.service"
|
|
ynh_restore_file "/etc/systemd/system/$app-sidekiq.service"
|
|
ynh_restore_file "/etc/systemd/system/$app-streaming.service"
|
|
systemctl enable "$app-web" "$app-sidekiq" "$app-streaming"
|
|
|
|
#=================================================
|
|
# GENERIC FINALIZATION
|
|
#=================================================
|
|
# RELOAD NGINX AND PHP-FPM
|
|
#=================================================
|
|
|
|
systemctl restart "$app-web" "$app-sidekiq" "$app-streaming"
|
|
systemctl reload nginx
|