diff --git a/datacentersim-server.service b/datacentersim-server.service new file mode 100644 index 0000000..688cd38 --- /dev/null +++ b/datacentersim-server.service @@ -0,0 +1,80 @@ +# /etc/systemd/system/datacentersim-server.service +# +# Service systemd pour le serveur dedie DatacenterSim +# Apres modification : sudo systemctl daemon-reload +# +# Usage : +# sudo cp datacentersim-server.service /etc/systemd/system/ +# sudo systemctl daemon-reload +# sudo systemctl enable datacentersim-server +# sudo systemctl start datacentersim-server +# sudo systemctl status datacentersim-server +# sudo journalctl -u datacentersim-server -f +# + +[Unit] +Description=DatacenterSim Dedicated Server +Documentation=https://github.com/YOUR_REPO/datacentersim +After=network-online.target +Wants=network-online.target + +[Service] +Type=simple + +# Utilisateur et groupe dedies (a creer : sudo useradd -r -s /bin/false dcsim) +User=dcsim +Group=dcsim + +# Repertoire de travail du serveur +WorkingDirectory=/opt/datacentersim-server + +# Commande de lancement : adapte les arguments selon ton besoin +ExecStart=/opt/datacentersim-server/DatacenterSim-Server.x86_64 \ + -server \ + -port 7777 \ + -servername "DC Dedicated Prod" \ + -maxplayers 8 \ + -mode sandbox \ + -langue FR \ + -masterurl https://dcsim.yeagerdan.com \ + -batchmode \ + -nographics \ + -logFile /var/log/datacentersim-server.log + +# Redemarrage automatique en cas de crash +Restart=on-failure +RestartSec=10s + +# Timeout pour Stop : le serveur a besoin de temps pour se desenregistrer du master +TimeoutStopSec=15s + +# Limitation ressources (optionnel, ajuste selon ta machine) +# CPUQuota=200% # max 2 coeurs +# MemoryMax=2G # max 2 Go RAM +# TasksMax=500 + +# Securite +NoNewPrivileges=true +ProtectSystem=strict +ProtectHome=true +ReadWritePaths=/opt/datacentersim-server /var/log +PrivateTmp=true +PrivateDevices=true +ProtectKernelTunables=true +ProtectKernelModules=true +ProtectControlGroups=true +RestrictAddressFamilies=AF_INET AF_INET6 +RestrictNamespaces=true +LockPersonality=true +RestrictRealtime=true +RestrictSUIDSGID=true +CapabilityBoundingSet= +AmbientCapabilities= + +# Logs redirigees vers journald en plus du fichier +StandardOutput=journal +StandardError=journal +SyslogIdentifier=datacentersim + +[Install] +WantedBy=multi-user.target diff --git a/datacentersim-server@.service b/datacentersim-server@.service new file mode 100644 index 0000000..277c214 --- /dev/null +++ b/datacentersim-server@.service @@ -0,0 +1,56 @@ +# /etc/systemd/system/datacentersim-server@.service +# +# Template pour lancer PLUSIEURS instances du serveur dedie sur la meme machine. +# Le parametre apres le @ est utilise comme nom d'instance ET comme port. +# +# Usage : +# sudo systemctl start datacentersim-server@7777 +# sudo systemctl start datacentersim-server@7778 +# sudo systemctl start datacentersim-server@7779 +# +# sudo systemctl enable datacentersim-server@7777 # au boot +# +# sudo journalctl -u datacentersim-server@7777 -f # logs d'une instance +# + +[Unit] +Description=DatacenterSim Dedicated Server (port %i) +After=network-online.target +Wants=network-online.target + +[Service] +Type=simple +User=dcsim +Group=dcsim +WorkingDirectory=/opt/datacentersim-server + +# %i est remplace par ce qu'on met apres le @ +# Exemple : "systemctl start datacentersim-server@7778" -> %i = "7778" +ExecStart=/opt/datacentersim-server/DatacenterSim-Server.x86_64 \ + -server \ + -port %i \ + -servername "DC Server #%i" \ + -maxplayers 8 \ + -mode sandbox \ + -langue FR \ + -masterurl https://dcsim.yeagerdan.com \ + -batchmode \ + -nographics \ + -logFile /var/log/datacentersim-server-%i.log + +Restart=on-failure +RestartSec=10s +TimeoutStopSec=15s + +NoNewPrivileges=true +ProtectSystem=strict +ProtectHome=true +ReadWritePaths=/opt/datacentersim-server /var/log +PrivateTmp=true + +StandardOutput=journal +StandardError=journal +SyslogIdentifier=datacentersim-%i + +[Install] +WantedBy=multi-user.target diff --git a/install-dedicated-server.sh b/install-dedicated-server.sh new file mode 100644 index 0000000..08f17f8 --- /dev/null +++ b/install-dedicated-server.sh @@ -0,0 +1,152 @@ +#!/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 ! 🚀"