dcsim-gameserver/Installation/install-dedicated-server.sh

153 lines
6.6 KiB
Bash
Executable File

#!/bin/bash
#
# install-dedicated-server.sh
# Script d'installation automatique du serveur dedie DatacenterSim sur Debian 13 / Ubuntu 22+
#
# Usage :
# sudo bash install-dedicated-server.sh [chemin-du-build]
#
# Exemple :
# sudo bash install-dedicated-server.sh ./DatacenterSim-Server-Linux/
#
set -e
# ═══════════════════════════════════════════════════════
# CONFIGURATION
# ═══════════════════════════════════════════════════════
INSTALL_DIR="/opt/datacentersim-server"
SERVICE_USER="dcsim"
SERVICE_FILE="datacentersim-server.service"
TEMPLATE_FILE="datacentersim-server@.service"
LOG_DIR="/var/log"
BUILD_DIR="${1:-../Dedicated_Server_Linux}"
# ═══════════════════════════════════════════════════════
# VERIFICATIONS
# ═══════════════════════════════════════════════════════
if [ "$EUID" -ne 0 ]; then
echo "Ce script doit etre lance avec sudo"
exit 1
fi
if [ ! -d "$BUILD_DIR" ]; then
echo "Erreur : dossier de build introuvable : $BUILD_DIR"
echo "Usage : sudo bash $0 [chemin-du-build]"
exit 1
fi
if [ ! -f "$BUILD_DIR/DatacenterSim.x86_64" ]; then
echo "Erreur : binaire DatacenterSim.x86_64 introuvable dans $BUILD_DIR"
exit 1
fi
echo "════════════════════════════════════════════════════"
echo " Installation DatacenterSim Dedicated Server"
echo "════════════════════════════════════════════════════"
echo "Build source : $BUILD_DIR"
echo "Installation : $INSTALL_DIR"
echo "Utilisateur : $SERVICE_USER"
echo ""
# ═══════════════════════════════════════════════════════
# 1. DEPENDANCES
# ═══════════════════════════════════════════════════════
echo "[1/6] Installation des dependances runtime..."
apt-get update -qq
apt-get install -y libstdc++6 libgcc-s1 ca-certificates ufw
# ═══════════════════════════════════════════════════════
# 2. UTILISATEUR DEDIE
# ═══════════════════════════════════════════════════════
echo "[2/6] Creation de l'utilisateur $SERVICE_USER..."
if ! id "$SERVICE_USER" &>/dev/null; then
useradd -r -s /bin/false -d "$INSTALL_DIR" "$SERVICE_USER"
echo " ✓ Utilisateur $SERVICE_USER cree"
else
echo " ✓ Utilisateur $SERVICE_USER existe deja"
fi
# ═══════════════════════════════════════════════════════
# 3. COPIE DES FICHIERS
# ═══════════════════════════════════════════════════════
echo "[3/6] Copie du build vers $INSTALL_DIR..."
mkdir -p "$INSTALL_DIR"
# Si une install existe deja, backup
if [ -f "$INSTALL_DIR/DatacenterSim.x86_64" ]; then
BACKUP="$INSTALL_DIR.backup-$(date +%Y%m%d-%H%M%S)"
echo " Une install existe deja, backup vers $BACKUP"
mv "$INSTALL_DIR" "$BACKUP"
mkdir -p "$INSTALL_DIR"
fi
cp -r "$BUILD_DIR"/* "$INSTALL_DIR/"
chmod +x "$INSTALL_DIR/DatacenterSim.x86_64"
chown -R "$SERVICE_USER:$SERVICE_USER" "$INSTALL_DIR"
# ═══════════════════════════════════════════════════════
# 4. SERVICE SYSTEMD
# ═══════════════════════════════════════════════════════
echo "[4/6] Installation du service systemd..."
if [ -f "$SERVICE_FILE" ]; then
cp "$SERVICE_FILE" /etc/systemd/system/
echo "$SERVICE_FILE installe"
fi
if [ -f "$TEMPLATE_FILE" ]; then
cp "$TEMPLATE_FILE" /etc/systemd/system/
echo "$TEMPLATE_FILE installe"
fi
# Creation du fichier log avec bons droits
touch /var/log/datacentersim-server.log
chown "$SERVICE_USER:$SERVICE_USER" /var/log/datacentersim-server.log
systemctl daemon-reload
# ═══════════════════════════════════════════════════════
# 5. FIREWALL
# ═══════════════════════════════════════════════════════
echo "[5/6] Configuration du firewall..."
if ufw status | grep -q "Status: active"; then
ufw allow 7777/udp comment "DatacenterSim"
echo " ✓ Port 7777/udp autorise"
else
echo " - UFW non actif, aucune regle ajoutee"
fi
# ═══════════════════════════════════════════════════════
# 6. RECAP
# ═══════════════════════════════════════════════════════
echo "[6/6] Installation terminee !"
echo ""
echo "════════════════════════════════════════════════════"
echo " PROCHAINES ETAPES"
echo "════════════════════════════════════════════════════"
echo ""
echo "1. Verifier / editer la configuration :"
echo " sudo nano /etc/systemd/system/$SERVICE_FILE"
echo ""
echo "2. Activer le service au boot :"
echo " sudo systemctl enable datacentersim-server"
echo ""
echo "3. Demarrer le serveur :"
echo " sudo systemctl start datacentersim-server"
echo ""
echo "4. Suivre les logs en direct :"
echo " sudo journalctl -u datacentersim-server -f"
echo ""
echo "5. Verifier le status :"
echo " sudo systemctl status datacentersim-server"
echo ""
echo "Bon jeu ! 🚀"