maj readme
This commit is contained in:
parent
421bc13383
commit
ca8eb8b36e
115
README.md
115
README.md
@ -1,8 +1,115 @@
|
||||
# wow private server (vmangos)
|
||||
# WORLD OF WARCRAFT SERVER INSTALL (VERSION 1.12)
|
||||
|
||||
- dump db:
|
||||
## PRE REQUIS
|
||||
|
||||
- debian 12
|
||||
- user wow
|
||||
- ports:
|
||||
- TCP: 3724, 8085
|
||||
- UDP: 3724, 8085
|
||||
|
||||
- WOW 1.12 client: https://drive.usercontent.google.com/download?id=1TDoNNUXCtsgIUhLw96biPCqjv3AcLYkg&export=download
|
||||
|
||||
## CONFIG
|
||||
|
||||
- Mettre en place les données du server:
|
||||
```bash
|
||||
docker exec nom_du_conteneur_db mysqldump -u root -pMOTDEPASS --databases realmd mangos characters logs > full_dump.sql
|
||||
wget https://www.mediafire.com/file_premium/j6cyqjeif3dvrv2/data.7z
|
||||
7z x data.7z
|
||||
rm -r data.7z
|
||||
mv data/ storage/mangosd/extracted-data/
|
||||
```
|
||||
|
||||
mysql -u root -p < full_dump.sql
|
||||
- Modifier l'IP du server:
|
||||
```bash
|
||||
nano compose.yml
|
||||
```
|
||||
|
||||
## LANCER LA STACK
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
## CREER UN UTILISATEURS
|
||||
|
||||
Lancer le service mangosd:
|
||||
```bash
|
||||
docker attach vmangos-deploy-mangosd-1
|
||||
```
|
||||
|
||||
- Créer un utilisateur:
|
||||
```bash
|
||||
account create <username> <password>
|
||||
```
|
||||
|
||||
[autres commandes](https://github.com/dkpminus/mangos-gm-commands)
|
||||
|
||||
## PROTEGER LE SERVEUR VIA FAIL2BAN
|
||||
|
||||
- Installer fail2ban:
|
||||
```bash
|
||||
sudo apt install fail2ban -y
|
||||
```
|
||||
|
||||
- Créer `/etc/fail2ban/filter.d/realmd.conf`:
|
||||
```conf
|
||||
[Definition]
|
||||
failregex = \[AuthChallenge\] Account '.*' using IP '<HOST>' tried to login with wrong password!
|
||||
ignoreregex =
|
||||
```
|
||||
|
||||
- Créer `/etc/fail2ban/jail.local`:
|
||||
|
||||
```conf
|
||||
[realmd]
|
||||
enabled = true
|
||||
filter = realmd
|
||||
port = 3724
|
||||
protocol = tcp
|
||||
logpath = /home/wow/vmangos/logs/realmd/realmd.log
|
||||
maxretry = 5
|
||||
findtime = 600
|
||||
bantime = 36000
|
||||
```
|
||||
|
||||
- Redémarrer fail2ban:
|
||||
```bash
|
||||
sudo systemctl restart fail2ban
|
||||
sudo fail2ban-client reload
|
||||
```
|
||||
|
||||
## SE CONNECTER AU SERVEUR
|
||||
|
||||
- Télécharger le [client (v1.12)](https://drive.usercontent.google.com/download?id=1TDoNNUXCtsgIUhLw96biPCqjv3AcLYkg&export=download)
|
||||
|
||||
- Editer le fichier `realmlist.wtf` pour y mettre l'IP du serveur:
|
||||
```bash
|
||||
set <server_ip>
|
||||
```
|
||||
|
||||
## BACKUP DATABASE ET RESTORE
|
||||
|
||||
- Exporter la base de données:
|
||||
```bash
|
||||
docker exec nom_du_conteneur_db mysqldump -u root -pMOTDEPASS --databases realmd mangos characters logs > wow-db-dump.sql
|
||||
```
|
||||
|
||||
- Importer la base de données:
|
||||
```bash
|
||||
docker cp wow-db-dump.sql <database_container>:/
|
||||
docker exec -it <database_container> bash
|
||||
apt update && apt install -y mysql-client
|
||||
mysql -u root -ppassword < wow-db-dump.sql
|
||||
```
|
||||
|
||||
## SOURCES
|
||||
|
||||
- [vmangos](https://github.com/vmangos)
|
||||
- [tuto](https://www.youtube.com/watch?v=ac1mVFz2u1o)
|
||||
- [docker version](https://github.com/mserajnik/vmangos-deploy)
|
||||
|
||||
## TO DO
|
||||
|
||||
- [ ] jail for realmd port
|
||||
- [ ] Server IP as env for confs et Dockerfiles
|
198
install.sh
198
install.sh
@ -1,198 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
CURRENT_USER=${SUDO_USER:-$CURRENT_USER}
|
||||
REALM_IP=$(hostname -I | awk '{print $1}')
|
||||
|
||||
# CONFIG
|
||||
MANGOS_ETC="/home/"$CURRENT_USER"/vmangos/etc"
|
||||
MANGOS_DATA="/home/"$CURRENT_USER"/vmangos/data"
|
||||
MANGOS_LOGS="/home/"$CURRENT_USER"/vmangos/logs"
|
||||
|
||||
MYSQL_ROOT_PASS="greg"
|
||||
MANGOS_DB_PASS="mangos"
|
||||
|
||||
REALM_NAME="wow-garage"
|
||||
|
||||
# DEPENDENCIES
|
||||
echo "[INFO] Configuration & dependencies installation ..."
|
||||
|
||||
sudo systemctl stop apt-daily.timer
|
||||
sudo systemctl disable apt-daily.timer
|
||||
|
||||
sudo apt update && sudo apt install p7zip-full git wget g++ cmake openssl libssl-dev build-essential checkinstall zlib1g-dev mariadb-server mariadb-client libmariadb-dev libmariadb-dev-compat libreadline-dev -y
|
||||
|
||||
sudo apt install -qq libace-dev -y
|
||||
export ACE_ROOT=/usr/include/ace
|
||||
|
||||
sudo apt install -y libtbb-dev -y
|
||||
export TBB_ROOT_DIR=/usr/include/tbb
|
||||
|
||||
# CLONING PROJECT
|
||||
echo "[INFO] Cloning project ..."
|
||||
|
||||
sudo mkdir -p /home/$CURRENT_USER/vmangos
|
||||
sudo chown -R $CURRENT_USER:$CURRENT_USER /home/$CURRENT_USER
|
||||
cd /home/$CURRENT_USER/vmangos
|
||||
git clone -b development https://github.com/vmangos/core && git clone https://github.com/brotalnia/database vmangos/db
|
||||
|
||||
mkdir -p /home/$CURRENT_USER/build
|
||||
cd /home/$CURRENT_USER/build
|
||||
sudo cmake /home/$CURRENT_USER/vmangos/core -DDEBUG=0 -DSUPPORTED_CLIENT_BUILD=5875 -DUSE_EXTRACTORS=0 -DCMAKE_INSTALL_PREFIX=$HOME/vmangos
|
||||
|
||||
# BUILDING PROJECT
|
||||
echo "[INFO] building $CURRENT_USER ..."
|
||||
|
||||
sudo make -j $(nproc) install
|
||||
|
||||
# GETTING DATAS
|
||||
echo "[INFO] Getting datas ..."
|
||||
|
||||
cd /home/$CURRENT_USER/vmangos
|
||||
wget https://www.mediafire.com/file_premium/j6cyqjeif3dvrv2/data.7z
|
||||
7z x data.7z
|
||||
rm -r data.7z
|
||||
|
||||
# MISE EN PLACE DES FICHIERS
|
||||
echo "[INFO] Mise en place des fichiers ..."
|
||||
|
||||
mkdir /home/$CURRENT_USER/vmangos/etc
|
||||
|
||||
sudo chown -R $CURRENT_USER:$CURRENT_USER /home/$CURRENT_USER/vmangos
|
||||
|
||||
sudo cp /root/vmangos/etc/realmd.conf.dist /home/$CURRENT_USER/vmangos/etc/mangosd.conf
|
||||
sudo cp /root/vmangos/etc/mangosd.conf.dist /home/$CURRENT_USER/vmangos/etc/realmd.conf
|
||||
|
||||
sudo chown -R $CURRENT_USER:$CURRENT_USER /home/$CURRENT_USER/vmangos
|
||||
|
||||
mkdir -p /home/$CURRENT_USER/vmangos/logs/{mangosd,realmd,honor}
|
||||
|
||||
# CONFIG AGAIN
|
||||
echo "[INFO] Configuration de mangosd.conf ..."
|
||||
|
||||
sed -i \
|
||||
-e "s|^DataDir.*|DataDir = \"$MANGOS_DATA\"|" \
|
||||
-e "s|^LogsDir.*|LogsDir = \"$MANGOS_LOGS/mangosd\"|" \
|
||||
-e "s|^HonorDir.*|HonorDir = \"$MANGOS_LOGS/honor\"|" \
|
||||
"$MANGOS_ETC/mangosd.conf"
|
||||
|
||||
echo "[INFO] Configuration de realmd.conf ..."
|
||||
sed -i \
|
||||
-e "s|^LogsDir.*|LogsDir = \"$MANGOS_LOGS/realmd\"|" \
|
||||
"$MANGOS_ETC/realmd.conf"
|
||||
|
||||
# MYSQL SECURE INSTALLATION
|
||||
echo "[INFO] Sécurisation de MySQL ..."
|
||||
|
||||
sudo mysql <<EOF
|
||||
DELETE FROM mysql.user WHERE User='';
|
||||
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost');
|
||||
DROP DATABASE IF EXISTS test;
|
||||
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
|
||||
FLUSH PRIVILEGES;
|
||||
EOF
|
||||
|
||||
sudo mysql --user=root --password="${MYSQL_ROOT_PASS}" <<EOF
|
||||
DROP USER IF EXISTS 'mangos'@'localhost';
|
||||
|
||||
CREATE USER 'mangos'@'localhost' IDENTIFIED BY '${MANGOS_DB_PASS}'
|
||||
WITH MAX_QUERIES_PER_HOUR 0
|
||||
MAX_CONNECTIONS_PER_HOUR 0
|
||||
MAX_UPDATES_PER_HOUR 0;
|
||||
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'mangos'@'localhost' WITH GRANT OPTION;
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS \`realmd\`
|
||||
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
|
||||
CREATE DATABASE IF NOT EXISTS \`mangos\`
|
||||
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
|
||||
CREATE DATABASE IF NOT EXISTS \`characters\`
|
||||
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
|
||||
CREATE DATABASE IF NOT EXISTS \`logs\`
|
||||
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
|
||||
|
||||
GRANT ALL PRIVILEGES ON \`realmd\`.* TO 'mangos'@'localhost' WITH GRANT OPTION;
|
||||
GRANT ALL PRIVILEGES ON \`mangos\`.* TO 'mangos'@'localhost' WITH GRANT OPTION;
|
||||
GRANT ALL PRIVILEGES ON \`characters\`.* TO 'mangos'@'localhost' WITH GRANT OPTION;
|
||||
GRANT ALL PRIVILEGES ON \`logs\`.* TO 'mangos'@'localhost' WITH GRANT OPTION;
|
||||
|
||||
FLUSH PRIVILEGES;
|
||||
EOF
|
||||
|
||||
# not sure of usefullness
|
||||
sudo mysql -u root -p"${MYSQL_ROOT_PASS}" -e "SHOW GRANTS FOR 'mangos'@'localhost';"
|
||||
# end of 'not sure of usefullness'
|
||||
|
||||
sudo mysql -u root -p"${MYSQL_ROOT_PASS}" <<EOF
|
||||
DROP USER IF EXISTS 'mangos'@'localhost';
|
||||
CREATE USER 'mangos'@'localhost' IDENTIFIED BY 'mangos';
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'mangos'@'localhost' WITH GRANT OPTION;
|
||||
FLUSH PRIVILEGES;
|
||||
EOF
|
||||
|
||||
# FINAL CONFIGS
|
||||
cd /home/$CURRENT_USER/vmangos/vmangos/db/
|
||||
|
||||
wget https://github.com/brotalnia/database/blob/master/world_full_14_june_2021.7z?raw=true
|
||||
|
||||
7z x world_full_14_june_2021.7z
|
||||
sudo mysql -u mangos -pmangos --database=mangos < world_full_14_june_2021.sql
|
||||
rm -r world_full_14_june_2021.sql
|
||||
|
||||
cd /home/$CURRENT_USER/vmangos/core/sql/
|
||||
|
||||
mysql -u mangos -pmangos --database=characters < characters.sql
|
||||
mysql -u mangos -pmangos --database=logs < logs.sql
|
||||
mysql -u mangos -pmangos --database=realmd < logon.sql
|
||||
|
||||
sudo mysql -u root -p"${MYSQL_ROOT_PASS}" <<EOF
|
||||
|
||||
USE mangos;
|
||||
|
||||
ALTER TABLE locales_item
|
||||
MODIFY COLUMN name_loc1 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc2 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc3 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc4 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc5 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc6 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc7 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc8 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci';
|
||||
|
||||
ALTER TABLE locales_creature
|
||||
MODIFY COLUMN name_loc1 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc2 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc3 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc4 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc5 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc6 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc7 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc8 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci';
|
||||
|
||||
ALTER TABLE locales_gameobject
|
||||
MODIFY COLUMN name_loc1 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc2 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc3 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc4 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc5 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc6 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc7 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci',
|
||||
MODIFY COLUMN name_loc8 VARCHAR(100) NULL DEFAULT '' COLLATE 'utf8_general_ci';
|
||||
|
||||
USE realmd;
|
||||
|
||||
DELETE FROM realmlist WHERE id=1;
|
||||
INSERT INTO realmlist (id, name, address, localAddress, localSubnetMask, icon, timezone, realmbuilds)
|
||||
VALUES (1, $REALM_NAME, $REALM_IP, '127.0.0.1', '255.255.255.0', 1, 2, '5875 6005 6141');
|
||||
|
||||
EOF
|
||||
|
||||
# MIGRATIONS
|
||||
cd /home/$CURRENT_USER/vmangos/core/sql/migrations
|
||||
|
||||
./merge.sh
|
||||
|
||||
mysql -u mangos -pmangos --database=mangos < world_db_updates.sql
|
||||
mysql -u mangos -pmangos --database=logs < logs_db_updates.sql
|
||||
mysql -u mangos -pmangos --database=characters < characters_db_updates.sql
|
||||
mysql -u mangos -pmangos --database=realmd < logon_db_updates.sql
|
||||
|
Loading…
x
Reference in New Issue
Block a user