wand/install.sh

179 lines
4.9 KiB
Bash
Raw Normal View History

#!/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 docker-compose@2.20.3
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