source: bootstrapper/bootstrap.sh@ 31

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

Bootstrapper v1

File size: 5.6 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
12
13DEPENDENCIES="xvfb mono-runtime rsync xmlstarlet"
14
15if [ -n "$(command -v apt-get)" ]; then
16 ISDEBIAN=1
17else
18 ISDEBIAN=0
19fi
20
21if [ $(uname -m) == 'x86_64' ]; then
22 IS64BIT=1
23else
24 IS64BIT=0
25fi
26
27if [ $IS64BIT -eq 1 ]; then
28 DEPENDENCIES="$DEPENDENCIES lib32gcc1 wine:i386"
29else
30 DEPENDENCIES="$DEPENDENCIES wine"
31fi
32
33showHelp() {
34 echo "Usage: ./bootstrap.sh [-h] [-c] -i"
35 echo "Parameters:"
36 echo " -h Print this help screen and exit"
37# echo " -o Install optional dependencies ($OPTDEPENDENCIES)"
38 echo " -c Enable cron job for automatic backups"
39 echo " -i Required to actually start the installation"
40}
41
42intro() {
43 echo
44 echo "7DtD Linux dedicated server bootstrapper"
45 echo
46 echo "This will install a 7DtD server according to the information"
47 echo "given on:"
48 echo " https://7dtd.illy.bz/"
49 echo
50 read -p "Press enter to continue"
51 echo -e "\n=============================================================\n\n"
52}
53
54nonDebianWarning() {
55 if [ $ISDEBIAN -eq 0 ]; then
56 echo "NOTE: It seems like this system is not based on Debian."
57 echo "Although installation of the scripts and SteamCMD/7dtd"
58 echo "will work the installed management scripts will probably"
59 echo "fail because of missing dependencies. Make sure you check"
60 echo "the website regarding the prerequisites"
61 echo "(https://7dtd.illy.bz)."
62 echo "Do you want to continue anyway?"
63 select yn in "Yes" "No"; do
64 case $yn in
65 Yes)
66 echo "Continuing..."
67 break;;
68 No)
69 echo "Aborting."
70 exit 0
71 ;;
72 esac
73 done
74 echo -e "\n=============================================================\n\n"
75 fi
76}
77
78installAptDeps() {
79 echo -e "Installing dependencies\n"
80 if [ $IS64BIT -eq 1 ]; then
81 dpkg --add-architecture i386
82 fi
83 apt-get update
84 apt-get install $DEPENDENCIES
85 echo -e "\n=============================================================\n\n"
86}
87
88installOptionalDeps() {
89 echo -e "Installing optional dependencies\n"
90 apt-get install $OPTDEPENDENCIES
91 echo -e "\n=============================================================\n\n"
92}
93
94setupUser() {
95 echo -e "Setting up user and group \"sdtd\"\n"
96 useradd -d /home/sdtd -m -r -s /bin/bash -U sdtd
97 echo -e "\n=============================================================\n\n"
98}
99
100installManagementScripts() {
101 echo -e "Downloading and installing management scripts\n"
102 wget -nv http://illy.bz/fi/7dtd/management_scripts.tar.gz -O /tmp/management_scripts.tar.gz
103 tar --touch -xzf /tmp/management_scripts.tar.gz -C /
104
105 chown root.root /etc/7dtd.conf
106 chmod 0600 /etc/7dtd.conf
107
108 chown sdtd.sdtd /home/sdtd -R
109
110 chown root.root /etc/init.d/7dtd.sh
111 chown root.root /etc/bash_completion.d/7dtd
112 chown root.root /usr/local/bin/7dtd.sh
113 chown root.root /usr/local/lib/7dtd -R
114 chmod 0755 /etc/init.d/7dtd.sh
115 chmod 0755 /etc/bash_completion.d/7dtd
116 chmod 0755 /usr/local/bin/7dtd.sh
117 chmod 0755 /usr/local/lib/7dtd -R
118
119 if [ $ISDEBIAN -eq 1 ]; then
120 update-rc.d 7dtd.sh defaults
121 else
122 echo
123 echo "Compiling start-stop-daemon"
124 cd /usr/local/lib/7dtd/start-stop-daemon
125 make
126 make install
127
128 sed -ir "s/^export SSD=.*$/export SSD=\/usr\/local\/lib\/7dtd\/start-stop-daemon\/start-stop-daemon/" /etc/7dtd.conf
129 fi
130 echo -e "\n=============================================================\n\n"
131}
132
133setSteamLoginData() {
134 echo -e "Steam account data\n"
135 echo "Please enter your Steam login data for SteamCMD to get the 7dtd-server files:"
136 read -p "Steam username: " username
137 read -s -p "Steam password: " password
138 sed -i "s/export STEAM_USER=/export STEAM_USER=$username/" /etc/7dtd.conf
139 sed -i "s/export STEAM_PASS=/export STEAM_PASS=$password/" /etc/7dtd.conf
140 echo -e "\n=============================================================\n\n"
141}
142
143installSteamCmdAndSDTD() {
144 echo -e "Installing SteamCMD and 7DtD\n"
145 7dtd.sh updateengine
146 echo -e "\n=============================================================\n\n"
147}
148
149addCronJobs() {
150 echo -e "Enabling backup cron job\n"
151
152 echo -e "By default a backup of the save folder will be created once"
153 echo -e " per hour. This can be changed in /etc/cron.d/7dtd-backup."
154
155 cat /etc/cron.d/7dtd-backup | tr -d '#' > /tmp/7dtd-backup
156 cp /tmp/7dtd-backup /etc/cron.d
157
158 echo -e "\n=============================================================\n\n"
159}
160
161finish() {
162 if [ $ISDEBIAN -eq 0 ]; then
163 echo
164 echo "You are not running a Debian based distribution."
165 echo "The following things should manually be checked:"
166 echo " - Existence of prerequsities"
167 echo " - Running the init-script on boot"
168 else
169 echo -e "\n ALL DONE"
170 fi
171
172 echo
173 echo -e "You can now continue setting up instances as explained on the website:"
174 echo -e " https://7dtd.illy.bz/wiki/Instance%20management"
175 echo
176 echo -e "You might also need to manually enable bash auto completion, refer to:"
177 echo -e " https://7dtd.illy.bz/wiki/Installation#Bashcompletion"
178 echo
179 echo -e "For further configuration options check:"
180 echo -e " /etc/7dtd.conf"
181 echo
182 echo -e "For feedback, suggestions, problems please visit the bugtracker:"
183 echo -e " https://7dtd.illy.bz/"
184 echo
185}
186
187main() {
188 intro
189 nonDebianWarning
190
191 if [ $ISDEBIAN -eq 1 ]; then
192 installAptDeps
193 if [ $INSTALLOPTIONALDEPS -eq 1 ]; then
194# installOptionalDeps
195 echo
196 fi
197 fi
198 setupUser
199 installManagementScripts
200 setSteamLoginData
201 installSteamCmdAndSDTD
202 if [ $ADDCRONJOBS -eq 1 ]; then
203 addCronJobs
204 fi
205 finish
206}
207
208if [ -z $1 ]; then
209 showHelp
210 exit 0
211fi
212while getopts "hcoi" opt; do
213 case "$opt" in
214 h)
215 showHelp
216 exit 0
217 ;;
218 c)
219 ADDCRONJOBS=1
220 ;;
221 o)
222 INSTALLOPTIONALDEPS=1
223 ;;
224 i)
225 RUNINSTALL=1
226 ;;
227 esac
228done
229if [ $RUNINSTALL -eq 1 ]; then
230 main
231fi
232
Note: See TracBrowser for help on using the repository browser.