#!/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:-./DatacenterSim-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-Server.x86_64" ]; then echo "Erreur : binaire DatacenterSim-Server.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-Server.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-Server.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 ! 🚀"