From 4f021673003daf9a0b13dcf0b6ba2a11615fd281 Mon Sep 17 00:00:00 2001
From: sina <92541374+sinnayuh@users.noreply.github.com>
Date: Fri, 23 Aug 2024 07:43:50 +0100
Subject: [PATCH] Update install.sh & README.md (#37)
* Update install.sh
Add support for more Linux distros as opposed to only being Debian.
Now supports: Debian/Ubuntu, Fedora, CentOS & Arch Linux.
* Update README.md
* Update install.sh
Added a repository update before installing on all platforms, added output for what the script is doing i.e installing docker, compose, git etc
---
README.md | 52 +++++++++++++++++++++++++-----
install.sh | 93 ++++++++++++++++++++++++++++++++++++++++++++++++------
2 files changed, 128 insertions(+), 17 deletions(-)
diff --git a/README.md b/README.md
index fe5c8ed..42e0ce5 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,16 @@
# wand
-Wand makes it easy to configure dash, houdini and a media server.
+Wand makes it easy to configure dash, houdini and a media server utilizing docker & docker-compose.
-## Install script
+> [!NOTE]
+> This can also be ran on Windows using WSL.
+
+## Installation script
**Step 1** run the script
```bash
bash <(curl -s https://raw.githubusercontent.com/solero/wand/master/install.sh)
```
-**Step 2** Answer Questions
-the questions are:
+**Step 2** Answer Questions which are:
* Database password (Leave blank for random password)
* Hostname (example: `clubpenguin.com`) (Leave empty for localhost)
* External IP Address (Leave empty for localhost)
@@ -17,23 +19,57 @@ Run this command:
```bash
$ cd wand && sudo docker-compose up
```
-## Basic setup
+## Manual setup
-**Step 1** Install git, docker & docker-compose
+> [!IMPORTANT]
+> This is not recommended for beginners. If you're not sure what you're doing, use the install script.
+
+**Step 1** Choose your Linux Distribution
+
+
+ Debian/Ubuntu
```bash
$ sudo apt update
-$ sudo apt install docker.io git curl
+$ sudo apt install git curl
+$ curl -fsSL https://get.docker.com -o get-docker.sh
+$ sh get-docker.sh
$ 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
```
+
+
+
+ Fedora/RHEL
+
+```bash
+$ sudo dnf update
+$ sudo dnf install git curl
+$ curl -fsSL https://get.docker.com -o get-docker.sh
+$ sh get-docker.sh
+$ 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
+```
+
+
+
+ Arch based distros
+
+```bash
+$ sudo pacman -Syu
+$ sudo pacman -S docker docker-compose git curl
+$ systemctl start docker.service
+$ systemctl enable docker.service
+```
+
+
**Step 2** Clone the repository & submodules
```bash
$ git clone --recurse-submodules https://github.com/solero/wand && cd wand
```
-**Step 3** Edit the config file
+**Step 3** Edit the config file (optional, default values are fine for a local setup)
```bash
$ nano .env
```
diff --git a/install.sh b/install.sh
index 39fa16c..328ffd9 100644
--- a/install.sh
+++ b/install.sh
@@ -1,5 +1,20 @@
#!/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=""
@@ -36,20 +51,80 @@ 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."
- sudo apt update
- sudo apt install docker.io git curl -y
- 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
-elif [[$(uname) == "Darwin" ]]; then
- echo "Installing homebrew"
- sudo curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh
+ 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."
+ echo "This operating system isn't supported yet. Feel free to join the Discord and ask questions."
exit 1
fi