aboutsummaryrefslogtreecommitdiff
path: root/scripts/restore
blob: a800966e7cc9074932569df1e01953864511a169 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#!/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
	cp ../conf/backports.list /etc/apt/sources.list.d/
fi
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
cp ../conf/yarn.list /etc/apt/sources.list.d/
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_6.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_sanitize_dbid "$app")
db_pwd=$(ynh_app_setting_get "$app" db_pwd)

ynh_psql_test_if_first_run
ynh_psql_setup_db "$db_name" "$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 reload "$app-web" "$app-sidekiq" "$app-streaming"
systemctl reload nginx