1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/glitchsoc_ynh.git synced 2024-09-03 19:15:59 +02:00
glitchsoc_ynh/scripts/restore

159 lines
5.1 KiB
Text
Raw Normal View History

#!/bin/bash
2018-05-01 20:43:05 +02:00
#=================================================
# GENERIC START
#=================================================
# IMPORT GENERIC HELPERS
#=================================================
2018-04-06 19:58:23 +02:00
if [ ! -e _common.sh ]; then
2018-05-01 20:43:05 +02:00
# 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
2018-04-06 19:58:23 +02:00
source _common.sh
source /usr/share/yunohost/helpers
2018-05-01 20:43:05 +02:00
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)
2018-05-01 20:43:05 +02:00
path_url=$(ynh_app_setting_get $app path)
is_public=$(ynh_app_setting_get $app is_public)
2018-05-01 20:43:05 +02:00
final_path=$(ynh_app_setting_get "$app" final_path)
2018-05-01 20:43:05 +02:00
#=================================================
# CHECK IF THE APP CAN BE RESTORED
#=================================================
2018-05-01 20:43:05 +02:00
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 "
2018-05-01 20:43:05 +02:00
#=================================================
# STANDARD RESTORATION STEPS
#=================================================
# RESTORE THE NGINX CONFIGURATION
#=================================================
2018-05-01 20:43:05 +02:00
ynh_restore_file "/etc/nginx/conf.d/$domain.d/$app.conf"
2018-05-01 20:43:05 +02:00
#=================================================
# RESTORE THE APP MAIN DIR
#=================================================
2018-05-01 20:43:05 +02:00
ynh_restore_file "$final_path"
2018-05-01 20:43:05 +02:00
#=================================================
# RECREATE THE DEDICATED USER
#=================================================
2018-06-21 05:14:18 +02:00
adduser $app --home $final_path --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password
2018-05-01 20:43:05 +02:00
#=================================================
# RESTORE USER RIGHTS
#=================================================
2018-05-01 20:43:05 +02:00
# Restore permissions on app files
chown -R $app: $final_path
2018-05-01 20:43:05 +02:00
#=================================================
# SPECIFIC RESTORATION
#=================================================
# REINSTALL DEPENDENCIES
#=================================================
2018-05-01 20:43:05 +02:00
# TODO: add in a clean way backports and yarn
2018-05-01 20:43:05 +02:00
# 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
2018-05-01 20:43:05 +02:00
# Install source.list debian package backports & yarn
if [ "$(lsb_release --codename --short)" == "jessie" ]; then
2018-06-14 15:19:48 +02:00
echo "deb http://httpredir.debian.org/debian jessie-backports main" | tee /etc/apt/sources.list.d/jessie-backports.list
fi
2018-05-01 20:43:05 +02:00
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
2018-06-14 15:19:48 +02:00
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
2018-05-01 20:43:05 +02:00
ynh_package_update
2018-06-21 04:48:02 +02:00
# install nodejs
ynh_install_nodejs 8
2018-05-01 20:43:05 +02:00
# 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
#=================================================
2017-04-29 16:00:41 +02:00
2018-05-01 11:29:25 +02:00
# Restore PostgreSQL database
2018-06-21 04:48:02 +02:00
db_name=$(ynh_app_setting_get "$app" db_name)
2018-05-01 11:29:25 +02:00
db_pwd=$(ynh_app_setting_get "$app" db_pwd)
ynh_psql_test_if_first_run
2018-06-21 04:48:02 +02:00
ynh_psql_create_user "$app" "$db_pwd"
ynh_psql_execute_as_root \
"CREATE DATABASE $db_name ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 OWNER $app;"
2018-05-01 11:29:25 +02:00
ynh_psql_execute_file_as_root ./db.sql "$db_name"
2017-04-18 02:47:58 +02:00
2018-05-01 20:43:05 +02:00
#=================================================
# 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"
2018-06-21 04:48:02 +02:00
#=================================================
# ADVERTISE SERVICE IN ADMIN PANEL
#=================================================
yunohost service add $app-web
yunohost service add $app-sidekiq
yunohost service add $app-streaming
2018-05-01 20:43:05 +02:00
#=================================================
# GENERIC FINALIZATION
#=================================================
2018-06-21 04:48:02 +02:00
# RELOAD NGINX AND services
2018-05-01 20:43:05 +02:00
#=================================================
2018-06-13 13:59:47 +02:00
systemctl restart "$app-web" "$app-sidekiq" "$app-streaming"
2018-06-21 04:48:02 +02:00
# Waiting start all services
sleep 30
2018-05-01 20:43:05 +02:00
systemctl reload nginx