-
Notifications
You must be signed in to change notification settings - Fork 40
/
Copy pathinstall.sh
178 lines (142 loc) · 4.89 KB
/
install.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
#!/bin/bash
clear
print_banner() {
echo '
__ __ _ _ _____
\ \ / /\ | \ | | __ \
\ \ /\ / / \ | \| | | | |
\ \/ \/ / /\ \ | . ` | | | |
\ /\ / ____ \| |\ | |__| |
\/ \/_/ \_\_| \_|_____/
Wand Installation Script
'
}
print_banner
echo "Please answer these questions to set up the game:"
echo "Enter password for the database (leave empty for a random password):"
dbpass=""
while IFS= read -r -s -n1 char; do
if [[ -z $char ]]; then
break
elif [[ $char == $'\177' ]]; then # handle backspace
if [ ${#dbpass} -gt 0 ]; then
dbpass="${dbpass%?}" # remove last character
echo -ne '\b \b' # erase last character on the screen
fi
else
echo -n '*'
dbpass+="$char"
fi
done
if [ -z "$dbpass" ]; then
dbpass=$(openssl rand -base64 12)
fi
echo "Enter the hostname for the game (example: example.com) (leave empty for localhost):"
read hostname
if [ -z "$hostname" ]; then
hostname=localhost
fi
echo "Enter your external IP address (leave empty for localhost):"
read ipadd
if [ -z "$ipadd" ]; then
ipadd=127.0.0.1
fi
read -p "Do you want to run the game when the installation ends? (y/N): " run_game
install_docker_official() {
echo "Installing Docker..."
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo systemctl start docker
sudo systemctl enable docker
}
if [[ $(uname) == "Linux" ]]; then
echo "Setting up the environment for Linux."
# Detect the package manager
if command -v apt &> /dev/null || command -v dnf &> /dev/null || command -v yum &> /dev/null; then
if command -v apt &> /dev/null; then
PKG_MANAGER="apt"
INSTALL_CMD="sudo apt"
elif command -v dnf &> /dev/null; then
PKG_MANAGER="dnf"
INSTALL_CMD="sudo dnf"
elif command -v yum &> /dev/null; then
PKG_MANAGER="yum"
INSTALL_CMD="sudo yum"
fi
echo "Detected package manager: $PKG_MANAGER"
# Update the system
echo "Updating system repositories..."
$INSTALL_CMD update
# Install git and curl
echo "Installing Curl and Git..."
$INSTALL_CMD install -y git curl
# Install Docker using the official script supports Debian, Ubuntu, and CentOS
install_docker_official
# Installer for Arch because they do it a little differently over there
elif command -v pacman &> /dev/null; then
PKG_MANAGER="pacman"
INSTALL_CMD="sudo pacman -S --noconfirm"
echo "Detected package manager: $PKG_MANAGER"
# Update the system
echo "Updating system repositories..."
sudo pacman -Syu --noconfirm
# Install Docker, git, and curl
echo "Installing Curl and Git, Docker and Docker Compose..."
$INSTALL_CMD docker docker-compose git curl
sudo systemctl start docker
sudo systemctl enable docker
else
echo "This operating system isn't supported yet. Feel free to join the Discord and ask questions."
exit 1
fi
# Install Docker Compose for non-Arch systems
if [[ $PKG_MANAGER != "pacman" ]]; then
echo "Installing Docker Compose..."
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
fi
elif [[ $(uname) == "Darwin" ]]; then
echo "Installing Homebrew..."
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo "Installing Docker, git, and Docker Compose..."
brew install docker
brew install git
brew install [email protected]
else
echo "This operating system isn't supported yet. Feel free to join the Discord and ask questions."
exit 1
fi
echo "Done setting up the environment."
echo "Downloading Game Files"
git clone --recurse-submodules https://github.com/solero/wand && cd wand
echo "Done Downloading the game files."
sudo rm -r .env
echo "# Database
POSTGRES_USER=postgres
POSTGRES_PASSWORD=$dbpass
# Web
WEB_PORT=80
WEB_HOSTNAME=$hostname
WEB_LEGACY_PLAY=http://old.$hostname
WEB_LEGACY_MEDIA=http://legacy.$hostname
WEB_VANILLA_PLAY=http://play.$hostname
WEB_VANILLA_MEDIA=http://media.$hostname
WEB_RECAPTCHA_SITE=
WEB_RECAPTCHA_SECRET=
WEB_SENDGRID_KEY=
# Game
GAME_ADDRESS=$ipadd
GAME_LOGIN_PORT=6112
# Snowflake
SNOWFLAKE_HOST=$ipadd
SNOWFLAKE_PORT=7002
APPLY_WINDOWMANAGER_OFFSET=False
ALLOW_FORCESTART_SNOW=False
ALLOW_FORCESTART_TUSK=True
MATCHMAKING_TIMEOUT=30" > .env
echo "Done!"
if [ "$run_game" == "y" ] || [ "$run_game" == "Y" ]; then
sudo docker-compose up
else
echo "You chose not to run the game. To run the game later, execute the command: cd wand && sudo docker-compose up"
fi