source: bootstrapper/bootstrap.sh@ 210

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

Scripts 63

File size: 6.9 KB
RevLine 
[1]1#!/bin/bash
[204]2VERSION=5
[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"
187 echo "Please enter your Steam login data for SteamCMD to get the 7dtd-server files:"
188 read -p "Steam username: " username
189 read -s -p "Steam password: " password
190 sed -i "s/export STEAM_USER=/export STEAM_USER=$username/" /etc/7dtd.conf
191 sed -i "s/export STEAM_PASS=/export STEAM_PASS=$password/" /etc/7dtd.conf
192 echo -e "\n=============================================================\n\n"
193}
194
195installSteamCmdAndSDTD() {
196 echo -e "Installing SteamCMD and 7DtD\n"
[30]197 7dtd.sh updateengine
[1]198 echo -e "\n=============================================================\n\n"
199}
200
201addCronJobs() {
[30]202 echo -e "Enabling backup cron job\n"
[1]203
204 echo -e "By default a backup of the save folder will be created once"
205 echo -e " per hour. This can be changed in /etc/cron.d/7dtd-backup."
[30]206
207 cat /etc/cron.d/7dtd-backup | tr -d '#' > /tmp/7dtd-backup
208 cp /tmp/7dtd-backup /etc/cron.d
[1]209
210 echo -e "\n=============================================================\n\n"
211}
212
213finish() {
[30]214 if [ $ISDEBIAN -eq 0 ]; then
215 echo
216 echo "You are not running a Debian based distribution."
217 echo "The following things should manually be checked:"
218 echo " - Existence of prerequsities"
219 echo " - Running the init-script on boot"
220 else
221 echo -e "\n ALL DONE"
222 fi
223
[1]224 echo
[30]225 echo -e "You can now continue setting up instances as explained on the website:"
226 echo -e " https://7dtd.illy.bz/wiki/Instance%20management"
227 echo
[31]228 echo -e "You might also need to manually enable bash auto completion, refer to:"
229 echo -e " https://7dtd.illy.bz/wiki/Installation#Bashcompletion"
230 echo
[1]231 echo -e "For further configuration options check:"
232 echo -e " /etc/7dtd.conf"
233 echo
[30]234 echo -e "For feedback, suggestions, problems please visit the bugtracker:"
235 echo -e " https://7dtd.illy.bz/"
[1]236 echo
237}
238
239main() {
240 intro
241 nonDebianWarning
242
[30]243 if [ $ISDEBIAN -eq 1 ]; then
[1]244 installAptDeps
[30]245 if [ $INSTALLOPTIONALDEPS -eq 1 ]; then
246# installOptionalDeps
[1]247 echo
248 fi
[32]249 else
[38]250 checkSetupDeps
[1]251 fi
252 setupUser
253 installManagementScripts
254 setSteamLoginData
255 installSteamCmdAndSDTD
[30]256 if [ $ADDCRONJOBS -eq 1 ]; then
[1]257 addCronJobs
258 fi
259 finish
260}
261
[30]262if [ -z $1 ]; then
[1]263 showHelp
264 exit 0
265fi
266while getopts "hcoi" opt; do
267 case "$opt" in
268 h)
269 showHelp
270 exit 0
271 ;;
272 c)
273 ADDCRONJOBS=1
274 ;;
275 o)
276 INSTALLOPTIONALDEPS=1
277 ;;
278 i)
279 RUNINSTALL=1
280 ;;
281 esac
282done
[30]283if [ $RUNINSTALL -eq 1 ]; then
[1]284 main
285fi
286
Note: See TracBrowser for help on using the repository browser.