source: bootstrapper/bootstrap.sh@ 40

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

Minor bootstrapper changes

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