source: bootstrapper/bootstrap.sh@ 222

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

Scripts 63

File size: 6.9 KB
Line 
1#!/bin/bash
2VERSION=5
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 --no-overwrite-dir -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 /etc/cron.d/7dtd-backup
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
166 chmod 0755 /etc/cron.d/7dtd-backup
167 chmod 0755 /usr/local/bin/7dtd.sh
168 chmod 0755 /usr/local/lib/7dtd -R
169
170 if [ $ISDEBIAN -eq 1 ]; then
171 update-rc.d 7dtd.sh defaults
172 fi
173
174 echo
175 echo "Compiling start-stop-daemon"
176 cd /usr/local/lib/7dtd/start-stop-daemon
177
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
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"
197 7dtd.sh updateengine
198 echo -e "\n=============================================================\n\n"
199}
200
201addCronJobs() {
202 echo -e "Enabling backup cron job\n"
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."
206
207 cat /etc/cron.d/7dtd-backup | tr -d '#' > /tmp/7dtd-backup
208 cp /tmp/7dtd-backup /etc/cron.d
209
210 echo -e "\n=============================================================\n\n"
211}
212
213finish() {
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
224 echo
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
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
231 echo -e "For further configuration options check:"
232 echo -e " /etc/7dtd.conf"
233 echo
234 echo -e "For feedback, suggestions, problems please visit the bugtracker:"
235 echo -e " https://7dtd.illy.bz/"
236 echo
237}
238
239main() {
240 intro
241 nonDebianWarning
242
243 if [ $ISDEBIAN -eq 1 ]; then
244 installAptDeps
245 if [ $INSTALLOPTIONALDEPS -eq 1 ]; then
246# installOptionalDeps
247 echo
248 fi
249 else
250 checkSetupDeps
251 fi
252 setupUser
253 installManagementScripts
254 setSteamLoginData
255 installSteamCmdAndSDTD
256 if [ $ADDCRONJOBS -eq 1 ]; then
257 addCronJobs
258 fi
259 finish
260}
261
262if [ -z $1 ]; then
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
283if [ $RUNINSTALL -eq 1 ]; then
284 main
285fi
286
Note: See TracBrowser for help on using the repository browser.