source: bootstrapper/bootstrap.sh @ 40

Last change on this file since 40 was 40, checked in by alloc, 8 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.