Removing Unnecessary Steps in Guide

This commit is contained in:
notepadguyOfficial
2025-05-10 08:21:07 +00:00
parent 926ab1d5df
commit dba2663ae7
5 changed files with 119 additions and 189 deletions

View File

@@ -27,34 +27,7 @@
wsl --install -d Debian wsl --install -d Debian
``` ```
2. Once Installed, Export the a backup to the desired location: 2. Launch Debian:
```cmd
wsl --export Debian C:\Example
```
or
```cmd
wsl --export Debian D:\Example
```
3. Unregister the Original Debian Image from WSL:
```cmd
wsl --unregister Debian
```
4. Import it back into your chosen location:
```cmd
wsl --import Debian C:\Debian C:\Example\Debian.tar --version 2
```
or
```cmd
wsl --import Debian D:\Debian D:\Example\Debian.tar --version 2
```
- (Optional) Delete the .tar file to free space:
```cmd
Remove-Item D:\Example\Debian.tar
```
5. Launch Debian:
```cmd ```cmd
wsl -d Debian wsl -d Debian
``` ```
@@ -78,21 +51,7 @@
4. run the sh file: 4. run the sh file:
```cmd ```cmd
./setup-docker-wsl.sh ./docker.sh
```
- (!Note) If you run the script but with error, This usually means Windows-style line endings instead of the Unix-style.
To fix this run this command
```cmd
sudo apt install dos2unix
#then
dos2unix *.sh
#final command
chmod +x *.sh
``` ```
5. wait until done then restart wsl: 5. wait until done then restart wsl:
@@ -156,7 +115,7 @@ Includes:
7. Edit your `<your wow root directory>\Data\enUS\realmlist.wtf` and type in the wsl ip address you get in the end of installing. 7. Edit your `<your wow root directory>\Data\enUS\realmlist.wtf` and type in the wsl ip address you get in the end of installing.
``` ```
set realmlist 172.17.0.1 set realmlist docker_ip
``` ```
8. Run the Game and your done. 8. Run the Game and your done.

63
docker.sh Normal file
View File

@@ -0,0 +1,63 @@
#!/bin/bash
set -e
set -o pipefail
echo "[*] Updating system..."
sudo apt-get update && sudo apt-get dist-upgrade -y
echo "[*] Installing base packages..."
sudo apt-get install -y ca-certificates curl wget gnupg lsb-release apt-transport-https
# Only install genie if not already present
if ! command -v genie &> /dev/null; then
echo "[*] Setting up WSL genie (if running in WSL)..."
sudo wget -O /etc/apt/trusted.gpg.d/wsl-transdebian.gpg https://arkane-systems.github.io/wsl-transdebian/apt/wsl-transdebian.gpg
sudo chmod a+r /etc/apt/trusted.gpg.d/wsl-transdebian.gpg
echo -e "deb https://arkane-systems.github.io/wsl-transdebian/apt/ $(lsb_release -cs) main\n\
deb-src https://arkane-systems.github.io/wsl-transdebian/apt/ $(lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/wsl-transdebian.list > /dev/null
sudo apt-get update
sudo apt-get install -y systemd-genie
echo 'genie -i' >> ~/.bashrc
else
echo "✔️ Genie already installed."
fi
# Docker check and install if not already installed
if ! command -v docker &> /dev/null; then
echo "[*] Docker not found. Installing Docker..."
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker $USER
echo "✔️ Docker installed. Please log out and back in to apply group changes."
exit 1
else
echo "✔️ Docker is already installed."
fi
# Optional: Install docker-compose if not present
if ! command -v docker-compose &> /dev/null; then
echo "[*] Installing docker-compose..."
sudo curl -L "https://github.com/docker/compose/releases/download/2.32.4/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
else
echo "✔️ docker-compose is already installed."
fi
echo "✅ System preparation complete."

View File

@@ -1,28 +0,0 @@
#!/bin/bash
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install ca-certificates curl wget gnupg lsb-release apt-transport-https
wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O /tmp/packages-microsoft-prod.deb
sudo dpkg -i /tmp/packages-microsoft-prod.deb
rm /tmp/packages-microsoft-prod.deb
sudo wget -O /etc/apt/trusted.gpg.d/wsl-transdebian.gpg https://arkane-systems.github.io/wsl-transdebian/apt/wsl-transdebian.gpg
sudo chmod a+r /etc/apt/trusted.gpg.d/wsl-transdebian.gpg
echo -e "deb https://arkane-systems.github.io/wsl-transdebian/apt/ $(lsb_release -cs) main
deb-src https://arkane-systems.github.io/wsl-transdebian/apt/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/wsl-transdebian.list > /dev/null
sudo apt-get update
sudo apt-get install systemd-genie
curl https://get.docker.com | sh
sudo usermod -aG docker $USER
sudo curl -L "https://github.com/docker/compose/releases/download/2.32.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
echo "genie -i" >> ~/.bashrc
exit

170
setup.sh
View File

@@ -1,159 +1,95 @@
#!/bin/bash #!/bin/bash
function ask_user() { set -e
read -p "$1 (y/n): " choice set -o pipefail
case "$choice" in
y|Y ) return 0;;
* ) return 1;;
esac
}
sed -i "s|^TZ=.*$|TZ=$(cat /etc/timezone)|" src/.env # Ensure Docker is running
if ! command -v docker &> /dev/null; then
echo "❌ Docker not installed or not in PATH. Run system-prep.sh first."
exit 1
fi
sudo apt update # Set timezone in .env
if [ -f "src/.env" ]; then
timezone=$(cat /etc/timezone)
sed -i "s|^TZ=.*$|TZ=$timezone|" src/.env
else
echo "src/.env not found. Aborting."
exit 1
fi
if ! command -v mysql &> /dev/null if ! command -v mysql &> /dev/null; then
then echo "[*] MySQL client not found. Installing mariadb-client..."
echo "MySQL client is not installed. Installing mariadb-client now..." sudo apt-get update
sudo apt install -y mariadb-client sudo apt install -y mariadb-client
else else
echo "MySQL client is already installed." echo "✔️ MySQL client is already installed."
fi
if ! command -v docker &> /dev/null
then
echo "Docker is not installed. Installing Docker now..."
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker $USER
echo "::NOTE::"
echo "Added your user to docker group to manage docker without root."
echo "Log out and back in and rerun setup.sh."
exit 1;
else
echo "Docker is already installed."
fi fi
# Clone AzerothCore if not already
if [ -d "azerothcore-wotlk" ]; then if [ -d "azerothcore-wotlk" ]; then
echo "✔️ azerothcore-wotlk already exists. Cleaning SQL..."
destination_dir="data/sql/custom" destination_dir="data/sql/custom"
rm -rf "$destination_dir/db_world/"*.sql
world=$destination_dir"/db_world/" rm -rf "$destination_dir/db_characters/"*.sql
chars=$destination_dir"/db_characters/" rm -rf "$destination_dir/db_auth/"*.sql
auth=$destination_dir"/db_auth/"
cd azerothcore-wotlk
rm -rf $world/*.sql
rm -rf $chars/*.sql
rm -rf $auth/*.sql
cd ..
cp src/.env azerothcore-wotlk/
cp src/*.yml azerothcore-wotlk/
cd azerothcore-wotlk
else else
if ask_user "Download and install AzerothCore Playerbots?"; then echo "[*] Cloning AzerothCore..."
git clone https://github.com/liyunfan1223/azerothcore-wotlk.git --branch=Playerbot git clone https://github.com/liyunfan1223/azerothcore-wotlk.git --branch=Playerbot
cp src/.env azerothcore-wotlk/ echo "[*] Copying environment files..."
cp src/*.yml azerothcore-wotlk/ cp src/.env azerothcore-wotlk/
cd azerothcore-wotlk/modules cp src/*.yml azerothcore-wotlk/
git clone https://github.com/liyunfan1223/mod-playerbots.git --branch=master
cd .. # Install modules
else cd azerothcore-wotlk/modules
echo "Aborting..." git clone https://github.com/liyunfan1223/mod-playerbots.git --branch=master
exit 1 git clone https://github.com/noisiver/mod-learnspells.git
fi git clone https://github.com/azerothcore/mod-autobalance.git
git clone https://github.com/azerothcore/mod-solo-lfg.git
git clone https://github.com/azerothcore/mod-individual-xp.git
cd ..
fi fi
if ask_user "Install modules?"; then # Build and start containers
cd modules
function install_mod() {
local mod_name=$1
local repo_url=$2
if [ -d "${mod_name}" ]; then
echo "${mod_name} exists. Skipping..."
else
if ask_user "Install ${mod_name}?"; then
git clone "${repo_url}"
fi
fi
}
install_mod "mod-aoe-loot" "https://github.com/azerothcore/mod-aoe-loot.git"
install_mod "mod-learn-spells" "https://github.com/noisiver/mod-learnspells.git"
install_mod "mod-fireworks-on-level" "https://github.com/azerothcore/mod-fireworks-on-level.git"
install_mod "mod-individual-progression" "https://github.com/notepadguyOfficial/mod-individual-progression"
install_mod "mod-junk-to-gold" "https://github.com/notepadguyOfficial/mod-junk-to-gold.git"
install_mod "mod-DungeonRespawn" "https://github.com/notepadguyOfficial/DungeonRespawn.git"
cd ..
fi
docker compose up -d --build docker compose up -d --build
cd .. cd ..
# Fix ownership (if needed)
sudo chown -R 1000:1000 wotlk sudo chown -R 1000:1000 wotlk
# Execute SQL
custom_sql_dir="src/sql" custom_sql_dir="src/sql"
auth="acore_auth" auth="acore_auth"
world="acore_world" world="acore_world"
chars="acore_characters" chars="acore_characters"
ip_address=$(hostname -I | awk '{print $1}') ip_address=$(hostname -I | awk '{print $1}')
temp_sql_file="/tmp/temp_custom_sql.sql"
function execute_sql() { function execute_sql() {
local db_name=$1 local db_name=$1
local sql_files=("$custom_sql_dir/$db_name"/*.sql) local dir="$custom_sql_dir/$db_name"
if [ -e "${sql_files[0]}" ]; then if [ -d "$dir" ] && compgen -G "$dir/*.sql" > /dev/null; then
for custom_sql_file in "${sql_files[@]}"; do for sql_file in "$dir"/*.sql; do
echo "Executing $custom_sql_file" echo "Executing $sql_file"
temp_sql_file=$(mktemp) temp_sql_file=$(mktemp)
if [[ "$(basename "$custom_sql_file")" == "update_realmlist.sql" ]]; then if [[ "$(basename "$sql_file")" == "update_realmlist.sql" ]]; then
sed -e "s/{{IP_ADDRESS}}/$ip_address/g" "$custom_sql_file" > "$temp_sql_file" sed "s/{{IP_ADDRESS}}/$ip_address/g" "$sql_file" > "$temp_sql_file"
else else
cp "$custom_sql_file" "$temp_sql_file" cp "$sql_file" "$temp_sql_file"
fi fi
mysql -h "$ip_address" -uroot -proot "$db_name" < "$temp_sql_file" mysql -h "$ip_address" -uroot -proot "$db_name" < "$temp_sql_file"
rm "$temp_sql_file"
done done
else else
echo "No SQL files found in $custom_sql_dir/$db_name, skipping..." echo "No SQL files found in $dir, skipping..."
fi fi
} }
echo "Running custom SQL files..." echo "[*] Running SQL imports..."
execute_sql "$auth" execute_sql "$auth"
execute_sql "$world" execute_sql "$world"
execute_sql "$chars" execute_sql "$chars"
rm "$temp_sql_file"
echo "" echo ""
echo "NOTE:" echo "✅ AzerothCore project setup complete!"
echo "" echo "👉 `docker attach ac-worldserver` Use the worldserver console to create accounts and set GM level as needed."
echo "!!! If ac-db-import failed, run 'sudo chown -R 1000:1000 wotlk' and './setup.sh' again !!!"
echo ""
echo "1. Execute 'docker attach ac-worldserver'"
echo "2. 'account create username password' creates an account."
echo "3. 'account set gmlevel username 3 -1' sets the account as gm for all servers."
echo "4. Ctrl+p Ctrl+q will take you out of the world console."
echo "5. Edit your gameclients realmlist.wtf and set it to $ip_address."
echo "6. Now login to wow with 3.3.5a client!"
echo "7. All config files are copied into the wotlk folder created with setup.sh."