/** * PM2 — SurviePote serveur Minecraft (MC 26.3 / Fabric 0.20.0 / Java 25). * * Démarre le serveur DANS le shell Nix du repo (shell.nix => jdk25), sans * dépendre du Java du système. * * cd /srv/mc/server * pm2 start ecosystem.config.cjs * pm2 logs surviepote-mc * pm2 restart surviepote-mc * pm2 stop surviepote-mc * pm2 save * * Les chemins sont résolus depuis ce fichier (__dirname) : * SERVER_DIR = /srv/mc/server * ROOT_DIR = /srv/mc * donc le fichier marche quel que soit l'endroit d'où pm2 est lancé. */ const path = require('path') const SERVER_DIR = __dirname const ROOT_DIR = path.resolve(__dirname, '..') const START_SCRIPT = path.join(SERVER_DIR, 'start.sh') // cd /srv/mc/server && nix-shell /srv/mc --run "bash /srv/mc/server/start.sh" const command = [ `cd ${JSON.stringify(SERVER_DIR)}`, `exec nix-shell ${JSON.stringify(ROOT_DIR)} --run ${JSON.stringify(`bash ${START_SCRIPT}`)}` ].join(' && ') module.exports = { apps: [ { name: 'surviepote-mc', cwd: SERVER_DIR, // On exécute `bash -lc ""` directement (pas un script Node). script: 'bash', args: ['-lc', command], interpreter: 'none', autorestart: true, max_restarts: 10, restart_delay: 5000, min_uptime: '60s', kill_timeout: 30000, treekill: true, // SIGINT/SIGKILL propagés jusqu'à java (arrêt propre) watch: false, env: { // On est déjà dans nix-shell : empêche start.sh de s'y relancer. SURVIEPOTE_NIX: '1' } } ] }