server: config PM2 (lancement du serveur dans le nix-shell)
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
/**
|
||||
* 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 "<commande>"` 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'
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user