source: bootstrapper/bootstrap.sh@ 38

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

Bootstrapper

File size: 6.9 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 exit 1
101 fi
102
103 which wget > /dev/null
104 if [ $? -ne 0 ]; then
105 echo "'wget' not installed. Please install it and run this script again."
106 exit 1
107 fi
108
109 which tr > /dev/null
110 if [ $? -ne 0 ]; then
111 echo "'tr' not installed. Please install it and run this script again."
112 exit 1
113 fi
114
115 ldconfig -p | grep gcc | grep -v 64 > /dev/null
116 if [ $? -ne 0 ]; then
117 echo "There probably is no 32 Bit version of libgcc installed."
118 echo "Do you want to continue?"
119 select yn in "Yes" "No"; do
120 case $yn in
121 Yes)
122 break;;
123 No)
124 echo "Aborting."
125 exit 1
126 ;;
127 esac
128 done
129 fi
130}
131
132setupUser() {
133 echo -e "Setting up user and group \"sdtd\"\n"
134 useradd -d /home/sdtd -m -r -s /bin/bash -U sdtd
135 echo -e "\n=============================================================\n\n"
136}
137
138installManagementScripts() {
139 echo -e "Downloading and installing management scripts\n"
140 wget -nv http://illy.bz/fi/7dtd/management_scripts.tar.gz -O /tmp/management_scripts.tar.gz
141 tar --touch -xzf /tmp/management_scripts.tar.gz -C /
142
143 chown root.root /etc/7dtd.conf
144 chmod 0600 /etc/7dtd.conf
145
146 chown sdtd.sdtd /home/sdtd -R
147
148 chown root.root /etc/init.d/7dtd.sh
149 chown root.root /etc/bash_completion.d/7dtd
150 chown root.root /usr/local/bin/7dtd.sh
151 chown root.root /usr/local/lib/7dtd -R
152 chmod 0755 /etc/init.d/7dtd.sh
153 chmod 0755 /etc/bash_completion.d/7dtd
154 chmod 0755 /usr/local/bin/7dtd.sh
155 chmod 0755 /usr/local/lib/7dtd -R
156
157 if [ $ISDEBIAN -eq 1 ]; then
158 update-rc.d 7dtd.sh defaults
159 fi
160
161 echo
162 echo "Compiling start-stop-daemon"
163 cd /usr/local/lib/7dtd/start-stop-daemon
164
165 gcc -Wall -Wextra -Wno-return-type -o start-stop-daemon start-stop-daemon.c
166 chown root.root start-stop-daemon
167 chmod 0755 start-stop-daemon
168
169 echo -e "\n=============================================================\n\n"
170}
171
172installLinuxEngine() {
173 echo -e "Downloading and installing Linux engine\n"
174 wget -nv http://illy.bz/fi/7dtd/linux_files.tar.gz -O /tmp/linux_files.tar.gz
175 tar --touch -xzf /tmp/linux_files.tar.gz -C /home/sdtd/
176
177 chown sdtd.sdtd -R /home/sdtd/linux_files
178 chmod 0644 -R /home/sdtd/linux_files
179 find /home/sdtd/linux_files -type d -exec chmod 0755 {} \;
180 chmod 0755 /home/sdtd/linux_files/engine/7DaysToDie.x86
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 installLinuxEngine
255 setSteamLoginData
256 installSteamCmdAndSDTD
257 if [ $ADDCRONJOBS -eq 1 ]; then
258 addCronJobs
259 fi
260 finish
261}
262
263if [ -z $1 ]; then
264 showHelp
265 exit 0
266fi
267while getopts "hcoi" opt; do
268 case "$opt" in
269 h)
270 showHelp
271 exit 0
272 ;;
273 c)
274 ADDCRONJOBS=1
275 ;;
276 o)
277 INSTALLOPTIONALDEPS=1
278 ;;
279 i)
280 RUNINSTALL=1
281 ;;
282 esac
283done
284if [ $RUNINSTALL -eq 1 ]; then
285 main
286fi
287
Note: See TracBrowser for help on using the repository browser.