source: bootstrapper/bootstrap.sh@ 464

Last change on this file since 464 was 264, checked in by alloc, 9 years ago

v99 + bootstrapper 9

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