source: bootstrapper/bootstrap.sh@ 248

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

Scripts 79: Do not require to store Steam account data

File size: 7.3 KB
RevLine 
[1]1#!/bin/bash
[229]2VERSION=6
[1]3
[30]4if [ `id -u` -ne 0 ]; then
5 echo "This script has to be run as root!"
6 exit 1
7fi
8
9
[1]10ADDCRONJOBS=0
11RUNINSTALL=0
[32]12INSTALLOPTIONALDEPS=0
[1]13
[44]14DEPENDENCIES="gcc wget rsync xmlstarlet"
[1]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
[30]28if [ $IS64BIT -eq 1 ]; then
[35]29 DEPENDENCIES="$DEPENDENCIES lib32gcc1"
[1]30fi
31
32showHelp() {
[48]33 echo "7dtd bootstrapper version $VERSION"
34 echo
[30]35 echo "Usage: ./bootstrap.sh [-h] [-c] -i"
[1]36 echo "Parameters:"
37 echo " -h Print this help screen and exit"
[30]38# echo " -o Install optional dependencies ($OPTDEPENDENCIES)"
[31]39 echo " -c Enable cron job for automatic backups"
[1]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:"
[30]49 echo " https://7dtd.illy.bz/"
[1]50 echo
51 read -p "Press enter to continue"
52 echo -e "\n=============================================================\n\n"
53}
54
55nonDebianWarning() {
[30]56 if [ $ISDEBIAN -eq 0 ]; then
[1]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"
[30]60 echo "fail because of missing dependencies. Make sure you check"
61 echo "the website regarding the prerequisites"
62 echo "(https://7dtd.illy.bz)."
[35]63 echo
[1]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"
[30]82 if [ $IS64BIT -eq 1 ]; then
[1]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
[32]96checkSetupDeps() {
[40]97 for DEP in gcc wget tr rsync xmlstarlet; do
[41]98 which $DEP > /dev/null 2>&1
[39]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
[35]104
[42]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."
[43]109 echo
110 echo "It will result in errors trying to run SteamCMD if this library is not available!."
[42]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
[35]124 ldconfig -p | grep gcc | grep -v 64 > /dev/null
125 if [ $? -ne 0 ]; then
[42]126 echo "WARNING: There probably is no 32 Bit version of libgcc installed."
[43]127 echo
128 echo "It will result in errors trying to run SteamCMD if this library is not available!"
[42]129 echo "Do you want to continue anyway?"
[35]130 select yn in "Yes" "No"; do
131 case $yn in
132 Yes)
133 break;;
134 No)
135 echo "Aborting."
[38]136 exit 1
[35]137 ;;
138 esac
139 done
140 fi
[32]141}
142
[1]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
[51]152 tar --touch --no-overwrite-dir -xzf /tmp/management_scripts.tar.gz -C /
[30]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
[65]161 chown root.root /etc/cron.d/7dtd-backup
[30]162 chown root.root /usr/local/bin/7dtd.sh
163 chown root.root /usr/local/lib/7dtd -R
164 chmod 0755 /etc/init.d/7dtd.sh
165 chmod 0755 /etc/bash_completion.d/7dtd
[65]166 chmod 0755 /etc/cron.d/7dtd-backup
[30]167 chmod 0755 /usr/local/bin/7dtd.sh
168 chmod 0755 /usr/local/lib/7dtd -R
169
170 if [ $ISDEBIAN -eq 1 ]; then
[1]171 update-rc.d 7dtd.sh defaults
[32]172 fi
173
174 echo
175 echo "Compiling start-stop-daemon"
176 cd /usr/local/lib/7dtd/start-stop-daemon
[31]177
[32]178 gcc -Wall -Wextra -Wno-return-type -o start-stop-daemon start-stop-daemon.c
179 chown root.root start-stop-daemon
180 chmod 0755 start-stop-daemon
181
[1]182 echo -e "\n=============================================================\n\n"
183}
184
185setSteamLoginData() {
186 echo -e "Steam account data\n"
[229]187 echo -e "Steam account login data is required for SteamCMD to get the 7dtd-server files.\n"
188 echo -e "Store account login data in /etc/7dtd.conf which will be only readable by root?"
189 echo -e "If you select to NOT store the data you will have to enter it each time you want"
190 echo -e "to update the server files.\n"
191 while : ; do
192 local STOREDATA
193 read -p "Store data in /etc/7dtd.conf? (yn) " STOREDATA
194 case $STOREDATA in
195 y)
196 read -p "Steam username: " username
197 read -s -p "Steam password: " password
198 sed -i "s/export STEAM_USER=/export STEAM_USER=$username/" /etc/7dtd.conf
199 sed -i "s/export STEAM_PASS=/export STEAM_PASS=$password/" /etc/7dtd.conf
200 echo -e "\n=============================================================\n\n"
201 break
202 ;;
203 n)
204 break
205 ;;
206 *)
207 echo "Wrong input"
208 esac
209 done
[1]210}
211
212installSteamCmdAndSDTD() {
213 echo -e "Installing SteamCMD and 7DtD\n"
[30]214 7dtd.sh updateengine
[1]215 echo -e "\n=============================================================\n\n"
216}
217
218addCronJobs() {
[30]219 echo -e "Enabling backup cron job\n"
[1]220
221 echo -e "By default a backup of the save folder will be created once"
222 echo -e " per hour. This can be changed in /etc/cron.d/7dtd-backup."
[30]223
224 cat /etc/cron.d/7dtd-backup | tr -d '#' > /tmp/7dtd-backup
225 cp /tmp/7dtd-backup /etc/cron.d
[1]226
227 echo -e "\n=============================================================\n\n"
228}
229
230finish() {
[30]231 if [ $ISDEBIAN -eq 0 ]; then
232 echo
233 echo "You are not running a Debian based distribution."
234 echo "The following things should manually be checked:"
235 echo " - Existence of prerequsities"
236 echo " - Running the init-script on boot"
237 else
238 echo -e "\n ALL DONE"
239 fi
240
[1]241 echo
[30]242 echo -e "You can now continue setting up instances as explained on the website:"
243 echo -e " https://7dtd.illy.bz/wiki/Instance%20management"
244 echo
[31]245 echo -e "You might also need to manually enable bash auto completion, refer to:"
246 echo -e " https://7dtd.illy.bz/wiki/Installation#Bashcompletion"
247 echo
[1]248 echo -e "For further configuration options check:"
249 echo -e " /etc/7dtd.conf"
250 echo
[30]251 echo -e "For feedback, suggestions, problems please visit the bugtracker:"
252 echo -e " https://7dtd.illy.bz/"
[1]253 echo
254}
255
256main() {
257 intro
258 nonDebianWarning
259
[30]260 if [ $ISDEBIAN -eq 1 ]; then
[1]261 installAptDeps
[30]262 if [ $INSTALLOPTIONALDEPS -eq 1 ]; then
263# installOptionalDeps
[1]264 echo
265 fi
[32]266 else
[38]267 checkSetupDeps
[1]268 fi
269 setupUser
270 installManagementScripts
271 setSteamLoginData
272 installSteamCmdAndSDTD
[30]273 if [ $ADDCRONJOBS -eq 1 ]; then
[1]274 addCronJobs
275 fi
276 finish
277}
278
[30]279if [ -z $1 ]; then
[1]280 showHelp
281 exit 0
282fi
283while getopts "hcoi" opt; do
284 case "$opt" in
285 h)
286 showHelp
287 exit 0
288 ;;
289 c)
290 ADDCRONJOBS=1
291 ;;
292 o)
293 INSTALLOPTIONALDEPS=1
294 ;;
295 i)
296 RUNINSTALL=1
297 ;;
298 esac
299done
[30]300if [ $RUNINSTALL -eq 1 ]; then
[1]301 main
302fi
303
Note: See TracBrowser for help on using the repository browser.