source: bootstrapper/bootstrap.sh @ 1

Last change on this file since 1 was 1, checked in by alloc, 5 years ago

Initial commit

File size: 6.9 KB
Line 
1#!/bin/bash
2
3INSTALLOPTIONALDEPS=0
4ADDCRONJOBS=0
5RUNINSTALL=0
6
7DEPENDENCIES="xvfb mono-runtime screen rsync libxml2-utils"
8OPTDEPENDENCIES="sendemail sendxmpp"
9
10if [ -n "$(command -v apt-get)" ]; then
11        ISDEBIAN=1
12else
13        ISDEBIAN=0
14fi
15
16if [ $(uname -m) == 'x86_64' ]; then
17        IS64BIT=1
18else
19        IS64BIT=0
20fi
21
22if [[ $IS64BIT == 1 ]]; then
23        DEPENDENCIES="$DEPENDENCIES lib32gcc1 wine:i386"
24else
25        DEPENDENCIES="$DEPENDENCIES wine"
26fi
27
28showHelp() {
29        echo "Usage: ./bootstrap.sh [-h] [-o] [-c] -i"
30        echo "Parameters:"
31        echo "  -h   Print this help screen and exit"
32        echo "  -o   Install optional dependencies ($OPTDEPENDENCIES)"
33        echo "  -c   Add cron jobs for save backups and memory checking"
34        echo "  -i   Required to actually start the installation"
35}
36
37intro() {
38        echo
39        echo "7DtD Linux dedicated server bootstrapper"
40        echo
41        echo "This will install a 7DtD server according to the information"
42        echo "given on:"
43        echo "   http://7daystodie.gamepedia.com/Linux_Server"
44        echo
45        read -p "Press enter to continue"
46        echo -e "\n=============================================================\n\n"
47}
48
49nonDebianWarning() {
50        if [[ $ISDEBIAN == 0 ]]; then
51                echo "NOTE: It seems like this system is not based on Debian."
52                echo "Although installation of the scripts and SteamCMD/7dtd"
53                echo "will work the installed management scripts will probably"
54                echo "*NOT* work out of the box and installation of dependencies"
55                echo "will fail too."
56                echo "Do you want to continue anyway?"
57                select yn in "Yes" "No"; do
58                        case $yn in
59                                Yes)
60                                        echo "Continuing..."
61                                        break;;
62                                No)
63                                        echo "Aborting."
64                                        exit 0
65                                        ;;
66                        esac
67                done
68                echo -e "\n=============================================================\n\n"
69        fi
70}
71
72installAptDeps() {
73        echo -e "Installing dependencies\n"
74        if [[ $IS64BIT == 1 ]]; then
75                dpkg --add-architecture i386
76        fi
77        apt-get update
78        apt-get install $DEPENDENCIES
79        echo -e "\n=============================================================\n\n"
80}
81
82installOptionalDeps() {
83        echo -e "Installing optional dependencies\n"
84        apt-get install $OPTDEPENDENCIES
85        echo -e "\n=============================================================\n\n"
86}
87
88setupUser() {
89        echo -e "Setting up user and group \"sdtd\"\n"
90        useradd -d /home/sdtd -m -r -s /bin/bash -U sdtd
91        echo -e "\n=============================================================\n\n"
92}
93
94installManagementScripts() {
95        echo -e "Downloading and installing management scripts\n"
96        wget -nv http://illy.bz/fi/7dtd/management_scripts.tar.gz -O /tmp/management_scripts.tar.gz
97        tar -xzf /tmp/management_scripts.tar.gz --no-same-owner --owner=root --group=root -C /
98        chmod go-rwx /etc/7dtd.conf
99        chmod +x /etc/init.d/7dtd.sh
100        chmod +x /usr/local/bin/7dtd-*
101        if [[ $ISDEBIAN == 1 ]]; then
102                update-rc.d 7dtd.sh defaults
103        fi
104        echo -e "\n=============================================================\n\n"
105}
106
107setSteamLoginData() {
108        echo -e "Steam account data\n"
109        echo "Please enter your Steam login data for SteamCMD to get the 7dtd-server files:"
110        read -p "Steam username: " username
111        read -s -p "Steam password: " password
112        sed -i "s/export STEAM_USER=/export STEAM_USER=$username/" /etc/7dtd.conf
113        sed -i "s/export STEAM_PASS=/export STEAM_PASS=$password/" /etc/7dtd.conf
114        echo -e "\n=============================================================\n\n"
115}
116
117installSteamCmdAndSDTD() {
118        echo -e "Installing SteamCMD and 7DtD\n"
119        7dtd-update.sh
120        cp -p /home/sdtd/7dtd/serverconfig.xml /home/sdtd/
121        echo -e "\n=============================================================\n\n"
122}
123
124setupServerConfig() {
125        echo -e "Setting up basic 7DtD server config\n"
126
127        until [[ $public == "y" || $public == "n" ]]; do
128                read -p "Should the server be public [yn]? " public
129        done
130        if [[ "$public" == "y" ]]; then public=true; else public=false; fi
131        echo
132
133        read -p "Server name: " servername
134        echo
135        read -p "Server password (empty for none): " serverpassword
136        echo
137
138        echo "Select world to play on:"
139        select worldname in "Navezgane" "MP Forest Horde" "MP Forest Skirmish" "MP Wasteland Horde" "MP Wasteland Skirmish" "MP Wasteland War"; do
140                if [[ -n $worldname ]]; then
141                        break
142                fi
143        done
144        echo
145
146        echo "Select game mode:"
147        select gamemode in "GameModeSurvival" "GameModeZombieHorde" "GameModeDeathmatch"; do
148                if [[ -n $gamemode ]]; then
149                        break
150                fi
151        done
152        echo
153
154        read -p "Game name: " gamename
155        echo
156        read -p "Difficulty (0-4): " difficulty
157        echo
158
159        sed -i "s/name=\"ServerIsPublic\".*value=\"[^\"]*\"/name=\"ServerIsPublic\" value=\"$public\"/" /home/sdtd/serverconfig.xml
160        sed -i "s/name=\"ServerName\".*value=\"[^\"]*\"/name=\"ServerName\" value=\"$servername\"/" /home/sdtd/serverconfig.xml
161        sed -i "s/name=\"ServerPassword\".*value=\"[^\"]*\"/name=\"ServerPassword\" value=\"$serverpassword\"/" /home/sdtd/serverconfig.xml
162        sed -i "s/name=\"GameWorld\".*value=\"[^\"]*\"/name=\"GameWorld\" value=\"$worldname\"/" /home/sdtd/serverconfig.xml
163        sed -i "s/name=\"GameName\".*value=\"[^\"]*\"/name=\"GameName\" value=\"$gamename\"/" /home/sdtd/serverconfig.xml
164        sed -i "s/name=\"GameDifficulty\".*value=\"[^\"]*\"/name=\"GameDifficulty\" value=\"$difficulty\"/" /home/sdtd/serverconfig.xml
165        sed -i "s/name=\"GameMode\".*value=\"[^\"]*\"/name=\"GameMode\" value=\"$gamemode\"/" /home/sdtd/serverconfig.xml
166        sed -i "s/name=\"TelnetPort\".*value=\"[^\"]*\"/name=\"TelnetPort\" value=\"25003\"/" /home/sdtd/serverconfig.xml
167
168        echo -e "\n=============================================================\n\n"
169}
170
171addCronJobs() {
172        echo -e "Adding cron jobs\n"
173
174        echo -e "By default a backup of the save folder will be created once"
175        echo -e "  per hour. This can be changed in /etc/cron.d/7dtd-backup."
176        echo -e "Memory monitor will be run every five minutes by default."
177        echo -e "  This can be changed in /etc/cron.d/7dtd-check_mem."
178
179        echo "0 *     * * *   root    /usr/local/bin/7dtd-backup.sh" > /etc/cron.d/7dtd-backup
180        echo "*/5 *   * * *   root    /usr/local/bin/7dtd-check_mem.sh" > /etc/cron.d/7dtd-check_mem
181
182        echo -e "\nNOTE: Do not forget to edit /etc/7dtd.conf to match\nyour notification needs!"
183        echo -e "\n=============================================================\n\n"
184}
185
186finish() {
187        echo -e "\n ALL DONE\n"
188        echo -e "You should now be able to start your 7dtd server by running\n"
189        echo -e "      7dtd-start.sh\n"
190        echo
191        echo -e "For further configuration options check:"
192        echo -e "  /etc/7dtd.conf"
193        echo -e "  /home/sdtd/serverconfig.xml"
194        echo
195        echo -e "For feedback, suggestions, problems please visit the forum:"
196        echo -e "  http://7daystodie.com/forums/showthread.php?2188"
197        echo
198}
199
200main() {
201        intro
202        nonDebianWarning
203
204        if [[ $ISDEBIAN == 1 ]]; then
205                installAptDeps
206                if [[ $INSTALLOPTIONALDEPS == 1 ]]; then
207                        installOptionalDeps
208                        echo
209                fi
210        fi
211        setupUser
212        installManagementScripts
213        setSteamLoginData
214        installSteamCmdAndSDTD
215        if [[ $ADDCRONJOBS == 1 ]]; then
216                addCronJobs
217        fi
218        setupServerConfig
219        finish
220}
221
222if [[ -z $1 ]]; then
223        showHelp
224        exit 0
225fi
226while getopts "hcoi" opt; do
227        case "$opt" in
228                h)
229                        showHelp
230                        exit 0
231                        ;;
232                c)
233                        ADDCRONJOBS=1
234                        ;;
235                o)
236                        INSTALLOPTIONALDEPS=1
237                        ;;
238                i)
239                        RUNINSTALL=1
240                        ;;
241        esac
242done
243if [[ $RUNINSTALL == 1 ]]; then
244        main
245fi
246
Note: See TracBrowser for help on using the repository browser.