ecosystem.config.cjs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. // pm2 process config for chess-io.
  2. //
  3. // CommonJS (.cjs) on purpose: package.json has "type": "module", so a plain
  4. // ecosystem.config.js would be parsed as ESM and `module.exports` would throw.
  5. // pm2 reads .cjs fine.
  6. //
  7. // pm2 start ecosystem.config.cjs
  8. // pm2 logs chess-io --lines 5 # confirm basePath":"/chess"
  9. // pm2 save # remember this process across restarts
  10. // pm2 startup # prints a sudo command to enable on boot
  11. //
  12. module.exports = {
  13. apps: [
  14. {
  15. name: 'chess-io',
  16. script: 'server.js',
  17. cwd: __dirname,
  18. // Single process, fork mode -- NOT cluster. The `games` object lives in
  19. // memory in one process; multiple workers would each hold a different
  20. // slice, so a player routed to the wrong worker sees "token-invalid", and
  21. // socket.io would additionally need a shared adapter + sticky sessions.
  22. // One process is correct for this app.
  23. instances: 1,
  24. exec_mode: 'fork',
  25. env: {
  26. NODE_ENV: 'production',
  27. PORT: 8181,
  28. BASE_PATH: '/chess',
  29. TRUST_PROXY: 1,
  30. // DAW_ORIGIN is intentionally omitted -- it is a local-dev-only shim for
  31. // the shared chrome and must stay unset in production.
  32. },
  33. },
  34. ],
  35. };