source: bootstrapper/bootstrap.sh@ 37

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

Bootstrapper: Minor fixes

File size: 7.0 KB
Line 
1#!/bin/bash
2# Version 1
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 tr 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 "Usage: ./bootstrap.sh [-h] [-c] -i"
34 echo "Parameters:"
35 echo " -h Print this help screen and exit"
36# echo " -o Install optional dependencies ($OPTDEPENDENCIES)"
37 echo " -c Enable cron job for automatic backups"
38 echo " -i Required to actually start the installation"
39}
40
41intro() {
42 echo
43 echo "7DtD Linux dedicated server bootstrapper"
44 echo
45 echo "This will install a 7DtD server according to the information"
46 echo "given on:"
47 echo " https://7dtd.illy.bz/"
48 echo
49 read -p "Press enter to continue"
50 echo -e "\n=============================================================\n\n"
51}
52
53nonDebianWarning() {
54 if [ $ISDEBIAN -eq 0 ]; then
55 echo "NOTE: It seems like this system is not based on Debian."
56 echo "Although installation of the scripts and SteamCMD/7dtd"
57 echo "will work the installed management scripts will probably"
58 echo "fail because of missing dependencies. Make sure you check"
59 echo "the website regarding the prerequisites"
60 echo "(https://7dtd.illy.bz)."
61 echo
62 echo "Also make sure you have the 32 Bit version of libgcc installed!"
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 which gcc > /dev/null
98 if [ $? -ne 0 ]; then
99 echo "'gcc' not installed. Please install it and run this script again."
100 echo 0
101 return
102 fi
103
104 which wget > /dev/null
105 if [ $? -ne 0 ]; then
106 echo "'wget' not installed. Please install it and run this script again."
107 echo 0
108 return
109 fi
110
111 which tr > /dev/null
112 if [ $? -ne 0 ]; then
113 echo "'tr' not installed. Please install it and run this script again."
114 echo 0
115 return
116 fi
117
118 ldconfig -p | grep gcc | grep -v 64 > /dev/null
119 if [ $? -ne 0 ]; then
120 echo "There probably is no 32 Bit version of libgcc installed."
121 echo "Do you want to continue?"
122 select yn in "Yes" "No"; do
123 case $yn in
124 Yes)
125 break;;
126 No)
127 echo "Aborting."
128 exit 0
129 ;;
130 esac
131 done
132 fi
133
134 echo 1
135}
136
137setupUser() {
138 echo -e "Setting up user and group \"sdtd\"\n"
139 useradd -d /home/sdtd -m -r -s /bin/bash -U sdtd
140 echo -e "\n=============================================================\n\n"
141}
142
143installManagementScripts() {
144 echo -e "Downloading and installing management scripts\n"
145 wget -nv http://illy.bz/fi/7dtd/management_scripts.tar.gz -O /tmp/management_scripts.tar.gz
146 tar --touch -xzf /tmp/management_scripts.tar.gz -C /
147
148 chown root.root /etc/7dtd.conf
149 chmod 0600 /etc/7dtd.conf
150
151 chown sdtd.sdtd /home/sdtd -R
152
153 chown root.root /etc/init.d/7dtd.sh
154 chown root.root /etc/bash_completion.d/7dtd
155 chown root.root /usr/local/bin/7dtd.sh
156 chown root.root /usr/local/lib/7dtd -R
157 chmod 0755 /etc/init.d/7dtd.sh
158 chmod 0755 /etc/bash_completion.d/7dtd
159 chmod 0755 /usr/local/bin/7dtd.sh
160 chmod 0755 /usr/local/lib/7dtd -R
161
162 if [ $ISDEBIAN -eq 1 ]; then
163 update-rc.d 7dtd.sh defaults
164 fi
165
166 echo
167 echo "Compiling start-stop-daemon"
168 cd /usr/local/lib/7dtd/start-stop-daemon
169
170 gcc -Wall -Wextra -Wno-return-type -o start-stop-daemon start-stop-daemon.c
171 chown root.root start-stop-daemon
172 chmod 0755 start-stop-daemon
173
174 echo -e "\n=============================================================\n\n"
175}
176
177installLinuxEngine() {
178 echo -e "Downloading and installing Linux engine\n"
179 wget -nv http://illy.bz/fi/7dtd/linux_files.tar.gz -O /tmp/linux_files.tar.gz
180 tar --touch -xzf /tmp/linux_files.tar.gz -C /home/sdtd/
181
182 chown sdtd.sdtd -R /home/sdtd/linux_files
183 chmod 0644 -R /home/sdtd/linux_files
184 find /home/sdtd/linux_files -type d -exec chmod 0755 {} \;
185 chmod 0755 /home/sdtd/linux_files/engine/7DaysToDie.x86
186
187 echo -e "\n=============================================================\n\n"
188}
189
190setSteamLoginData() {
191 echo -e "Steam account data\n"
192 echo "Please enter your Steam login data for SteamCMD to get the 7dtd-server files:"
193 read -p "Steam username: " username
194 read -s -p "Steam password: " password
195 sed -i "s/export STEAM_USER=/export STEAM_USER=$username/" /etc/7dtd.conf
196 sed -i "s/export STEAM_PASS=/export STEAM_PASS=$password/" /etc/7dtd.conf
197 echo -e "\n=============================================================\n\n"
198}
199
200installSteamCmdAndSDTD() {
201 echo -e "Installing SteamCMD and 7DtD\n"
202 7dtd.sh updateengine
203 echo -e "\n=============================================================\n\n"
204}
205
206addCronJobs() {
207 echo -e "Enabling backup cron job\n"
208
209 echo -e "By default a backup of the save folder will be created once"
210 echo -e " per hour. This can be changed in /etc/cron.d/7dtd-backup."
211
212 cat /etc/cron.d/7dtd-backup | tr -d '#' > /tmp/7dtd-backup
213 cp /tmp/7dtd-backup /etc/cron.d
214
215 echo -e "\n=============================================================\n\n"
216}
217
218finish() {
219 if [ $ISDEBIAN -eq 0 ]; then
220 echo
221 echo "You are not running a Debian based distribution."
222 echo "The following things should manually be checked:"
223 echo " - Existence of prerequsities"
224 echo " - Running the init-script on boot"
225 else
226 echo -e "\n ALL DONE"
227 fi
228
229 echo
230 echo -e "You can now continue setting up instances as explained on the website:"
231 echo -e " https://7dtd.illy.bz/wiki/Instance%20management"
232 echo
233 echo -e "You might also need to manually enable bash auto completion, refer to:"
234 echo -e " https://7dtd.illy.bz/wiki/Installation#Bashcompletion"
235 echo
236 echo -e "For further configuration options check:"
237 echo -e " /etc/7dtd.conf"
238 echo
239 echo -e "For feedback, suggestions, problems please visit the bugtracker:"
240 echo -e " https://7dtd.illy.bz/"
241 echo
242}
243
244main() {
245 intro
246 nonDebianWarning
247
248 if [ $ISDEBIAN -eq 1 ]; then
249 installAptDeps
250 if [ $INSTALLOPTIONALDEPS -eq 1 ]; then
251# installOptionalDeps
252 echo
253 fi
254 else
255 if [ $(checkSetupDeps) -eq 0 ]; then
256 return
257 fi
258 fi
259 setupUser
260 installManagementScripts
261 installLinuxEngine
262 setSteamLoginData
263 installSteamCmdAndSDTD
264 if [ $ADDCRONJOBS -eq 1 ]; then
265 addCronJobs
266 fi
267 finish
268}
269
270if [ -z $1 ]; then
271 showHelp
272 exit 0
273fi
274while getopts "hcoi" opt; do
275 case "$opt" in
276 h)
277 showHelp
278 exit 0
279 ;;
280 c)
281 ADDCRONJOBS=1
282 ;;
283 o)
284 INSTALLOPTIONALDEPS=1
285 ;;
286 i)
287 RUNINSTALL=1
288 ;;
289 esac
290done
291if [ $RUNINSTALL -eq 1 ]; then
292 main
293fi
294
Note: See TracBrowser for help on using the repository browser.