source: bootstrapper/bootstrap.sh@ 79

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

Bootstrapper v4

File size: 7.4 KB
Line 
1#!/bin/bash
2VERSION=4
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
185installLinuxEngine() {
186 echo -e "Downloading and installing Linux engine\n"
187 wget -nv http://illy.bz/fi/7dtd/linux_files.tar.gz -O /tmp/linux_files.tar.gz
188 tar --touch -xzf /tmp/linux_files.tar.gz -C /home/sdtd/
189
190 chown sdtd.sdtd -R /home/sdtd/linux_files
191 chmod 0644 -R /home/sdtd/linux_files
192 find /home/sdtd/linux_files -type d -exec chmod 0755 {} \;
193 chmod 0755 /home/sdtd/linux_files/engine/7DaysToDie.x86
194
195 echo -e "\n=============================================================\n\n"
196}
197
198setSteamLoginData() {
199 echo -e "Steam account data\n"
200 echo "Please enter your Steam login data for SteamCMD to get the 7dtd-server files:"
201 read -p "Steam username: " username
202 read -s -p "Steam password: " password
203 sed -i "s/export STEAM_USER=/export STEAM_USER=$username/" /etc/7dtd.conf
204 sed -i "s/export STEAM_PASS=/export STEAM_PASS=$password/" /etc/7dtd.conf
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 installLinuxEngine
268 setSteamLoginData
269 installSteamCmdAndSDTD
270 if [ $ADDCRONJOBS -eq 1 ]; then
271 addCronJobs
272 fi
273 finish
274}
275
276if [ -z $1 ]; then
277 showHelp
278 exit 0
279fi
280while getopts "hcoi" opt; do
281 case "$opt" in
282 h)
283 showHelp
284 exit 0
285 ;;
286 c)
287 ADDCRONJOBS=1
288 ;;
289 o)
290 INSTALLOPTIONALDEPS=1
291 ;;
292 i)
293 RUNINSTALL=1
294 ;;
295 esac
296done
297if [ $RUNINSTALL -eq 1 ]; then
298 main
299fi
300
Note: See TracBrowser for help on using the repository browser.