source: bootstrapper/bootstrap.sh@ 48

Last change on this file since 48 was 48, checked in by alloc, 10 years ago

Scripts: added about, updatescripts; Bootstrapper: added version

File size: 7.3 KB
Line 
1#!/bin/bash
2VERSION=2
3
4if [ `id -u` -ne 0 ]; then
5 echo "This script has to be run as root!"
6 exit 1
7fi
8
9
10ADDCRONJOBS=0
11RUNINSTALL=0
12INSTALLOPTIONALDEPS=0
13
14DEPENDENCIES="gcc wget rsync xmlstarlet"
15
16if [ -n "$(command -v apt-get)" ]; then
17 ISDEBIAN=1
18else
19 ISDEBIAN=0
20fi
21
22if [ $(uname -m) == 'x86_64' ]; then
23 IS64BIT=1
24else
25 IS64BIT=0
26fi
27
28if [ $IS64BIT -eq 1 ]; then
29 DEPENDENCIES="$DEPENDENCIES lib32gcc1"
30fi
31
32showHelp() {
33 echo "7dtd bootstrapper version $VERSION"
34 echo
35 echo "Usage: ./bootstrap.sh [-h] [-c] -i"
36 echo "Parameters:"
37 echo " -h Print this help screen and exit"
38# echo " -o Install optional dependencies ($OPTDEPENDENCIES)"
39 echo " -c Enable cron job for automatic backups"
40 echo " -i Required to actually start the installation"
41}
42
43intro() {
44 echo
45 echo "7DtD Linux dedicated server bootstrapper"
46 echo
47 echo "This will install a 7DtD server according to the information"
48 echo "given on:"
49 echo " https://7dtd.illy.bz/"
50 echo
51 read -p "Press enter to continue"
52 echo -e "\n=============================================================\n\n"
53}
54
55nonDebianWarning() {
56 if [ $ISDEBIAN -eq 0 ]; then
57 echo "NOTE: It seems like this system is not based on Debian."
58 echo "Although installation of the scripts and SteamCMD/7dtd"
59 echo "will work the installed management scripts will probably"
60 echo "fail because of missing dependencies. Make sure you check"
61 echo "the website regarding the prerequisites"
62 echo "(https://7dtd.illy.bz)."
63 echo
64 echo "Do you want to continue anyway?"
65 select yn in "Yes" "No"; do
66 case $yn in
67 Yes)
68 echo "Continuing..."
69 break;;
70 No)
71 echo "Aborting."
72 exit 0
73 ;;
74 esac
75 done
76 echo -e "\n=============================================================\n\n"
77 fi
78}
79
80installAptDeps() {
81 echo -e "Installing dependencies\n"
82 if [ $IS64BIT -eq 1 ]; then
83 dpkg --add-architecture i386
84 fi
85 apt-get update
86 apt-get install $DEPENDENCIES
87 echo -e "\n=============================================================\n\n"
88}
89
90installOptionalDeps() {
91 echo -e "Installing optional dependencies\n"
92 apt-get install $OPTDEPENDENCIES
93 echo -e "\n=============================================================\n\n"
94}
95
96checkSetupDeps() {
97 for DEP in gcc wget tr rsync xmlstarlet; do
98 which $DEP > /dev/null 2>&1
99 if [ $? -ne 0 ]; then
100 echo "\"$DEP\" not installed. Please install it and run this script again."
101 exit 1
102 fi
103 done
104
105 ldconfig -p | grep ld-linux | grep "(ELF)" > /dev/null
106 if [ $? -ne 0 ]; then
107 echo "WARNING: There probably is no 32 Bit version of ld-linux installed."
108 echo "This is most probably part of a 32 Bit version of a glibc-package."
109 echo
110 echo "It will result in errors trying to run SteamCMD if this library is not available!."
111 echo "Do you want to continue anyway?"
112 select yn in "Yes" "No"; do
113 case $yn in
114 Yes)
115 break;;
116 No)
117 echo "Aborting."
118 exit 1
119 ;;
120 esac
121 done
122 fi
123
124 ldconfig -p | grep gcc | grep -v 64 > /dev/null
125 if [ $? -ne 0 ]; then
126 echo "WARNING: There probably is no 32 Bit version of libgcc installed."
127 echo
128 echo "It will result in errors trying to run SteamCMD if this library is not available!"
129 echo "Do you want to continue anyway?"
130 select yn in "Yes" "No"; do
131 case $yn in
132 Yes)
133 break;;
134 No)
135 echo "Aborting."
136 exit 1
137 ;;
138 esac
139 done
140 fi
141}
142
143setupUser() {
144 echo -e "Setting up user and group \"sdtd\"\n"
145 useradd -d /home/sdtd -m -r -s /bin/bash -U sdtd
146 echo -e "\n=============================================================\n\n"
147}
148
149installManagementScripts() {
150 echo -e "Downloading and installing management scripts\n"
151 wget -nv http://illy.bz/fi/7dtd/management_scripts.tar.gz -O /tmp/management_scripts.tar.gz
152 tar --touch -xzf /tmp/management_scripts.tar.gz -C /
153
154 chown root.root /etc/7dtd.conf
155 chmod 0600 /etc/7dtd.conf
156
157 chown sdtd.sdtd /home/sdtd -R
158
159 chown root.root /etc/init.d/7dtd.sh
160 chown root.root /etc/bash_completion.d/7dtd
161 chown root.root /usr/local/bin/7dtd.sh
162 chown root.root /usr/local/lib/7dtd -R
163 chmod 0755 /etc/init.d/7dtd.sh
164 chmod 0755 /etc/bash_completion.d/7dtd
165 chmod 0755 /usr/local/bin/7dtd.sh
166 chmod 0755 /usr/local/lib/7dtd -R
167
168 if [ $ISDEBIAN -eq 1 ]; then
169 update-rc.d 7dtd.sh defaults
170 fi
171
172 echo
173 echo "Compiling start-stop-daemon"
174 cd /usr/local/lib/7dtd/start-stop-daemon
175
176 gcc -Wall -Wextra -Wno-return-type -o start-stop-daemon start-stop-daemon.c
177 chown root.root start-stop-daemon
178 chmod 0755 start-stop-daemon
179
180 echo -e "\n=============================================================\n\n"
181}
182
183installLinuxEngine() {
184 echo -e "Downloading and installing Linux engine\n"
185 wget -nv http://illy.bz/fi/7dtd/linux_files.tar.gz -O /tmp/linux_files.tar.gz
186 tar --touch -xzf /tmp/linux_files.tar.gz -C /home/sdtd/
187
188 chown sdtd.sdtd -R /home/sdtd/linux_files
189 chmod 0644 -R /home/sdtd/linux_files
190 find /home/sdtd/linux_files -type d -exec chmod 0755 {} \;
191 chmod 0755 /home/sdtd/linux_files/engine/7DaysToDie.x86
192
193 echo -e "\n=============================================================\n\n"
194}
195
196setSteamLoginData() {
197 echo -e "Steam account data\n"
198 echo "Please enter your Steam login data for SteamCMD to get the 7dtd-server files:"
199 read -p "Steam username: " username
200 read -s -p "Steam password: " password
201 sed -i "s/export STEAM_USER=/export STEAM_USER=$username/" /etc/7dtd.conf
202 sed -i "s/export STEAM_PASS=/export STEAM_PASS=$password/" /etc/7dtd.conf
203 echo -e "\n=============================================================\n\n"
204}
205
206installSteamCmdAndSDTD() {
207 echo -e "Installing SteamCMD and 7DtD\n"
208 7dtd.sh updateengine
209 echo -e "\n=============================================================\n\n"
210}
211
212addCronJobs() {
213 echo -e "Enabling backup cron job\n"
214
215 echo -e "By default a backup of the save folder will be created once"
216 echo -e " per hour. This can be changed in /etc/cron.d/7dtd-backup."
217
218 cat /etc/cron.d/7dtd-backup | tr -d '#' > /tmp/7dtd-backup
219 cp /tmp/7dtd-backup /etc/cron.d
220
221 echo -e "\n=============================================================\n\n"
222}
223
224finish() {
225 if [ $ISDEBIAN -eq 0 ]; then
226 echo
227 echo "You are not running a Debian based distribution."
228 echo "The following things should manually be checked:"
229 echo " - Existence of prerequsities"
230 echo " - Running the init-script on boot"
231 else
232 echo -e "\n ALL DONE"
233 fi
234
235 echo
236 echo -e "You can now continue setting up instances as explained on the website:"
237 echo -e " https://7dtd.illy.bz/wiki/Instance%20management"
238 echo
239 echo -e "You might also need to manually enable bash auto completion, refer to:"
240 echo -e " https://7dtd.illy.bz/wiki/Installation#Bashcompletion"
241 echo
242 echo -e "For further configuration options check:"
243 echo -e " /etc/7dtd.conf"
244 echo
245 echo -e "For feedback, suggestions, problems please visit the bugtracker:"
246 echo -e " https://7dtd.illy.bz/"
247 echo
248}
249
250main() {
251 intro
252 nonDebianWarning
253
254 if [ $ISDEBIAN -eq 1 ]; then
255 installAptDeps
256 if [ $INSTALLOPTIONALDEPS -eq 1 ]; then
257# installOptionalDeps
258 echo
259 fi
260 else
261 checkSetupDeps
262 fi
263 setupUser
264 installManagementScripts
265 installLinuxEngine
266 setSteamLoginData
267 installSteamCmdAndSDTD
268 if [ $ADDCRONJOBS -eq 1 ]; then
269 addCronJobs
270 fi
271 finish
272}
273
274if [ -z $1 ]; then
275 showHelp
276 exit 0
277fi
278while getopts "hcoi" opt; do
279 case "$opt" in
280 h)
281 showHelp
282 exit 0
283 ;;
284 c)
285 ADDCRONJOBS=1
286 ;;
287 o)
288 INSTALLOPTIONALDEPS=1
289 ;;
290 i)
291 RUNINSTALL=1
292 ;;
293 esac
294done
295if [ $RUNINSTALL -eq 1 ]; then
296 main
297fi
298
Note: See TracBrowser for help on using the repository browser.