Files
punimtag/ecosystem.config.js.example
T
ilia 15633a1d37 Switch viewer PM2 template to next start and add deploy-viewer.sh.
DEV should build once then run production Next.js instead of long-lived next dev.
2026-08-04 21:48:25 -04:00

83 lines
3.5 KiB
Plaintext

module.exports = {
apps: [
{
name: 'punimtag-api',
script: 'venv/bin/uvicorn',
args: 'backend.app:app --host 0.0.0.0 --port 8000',
cwd: '/opt/punimtag', // CHANGE: Update to your deployment directory
interpreter: 'none',
env: {
PYTHONPATH: '/opt/punimtag', // CHANGE: Update to your deployment directory
PATH: '/opt/punimtag/venv/bin:/usr/local/bin:/usr/bin:/bin', // CHANGE: Update paths
},
error_file: '/home/appuser/.pm2/logs/punimtag-api-error.log', // CHANGE: Update user home directory
out_file: '/home/appuser/.pm2/logs/punimtag-api-out.log', // CHANGE: Update user home directory
log_date_format: 'YYYY-MM-DD HH:mm:ss Z',
merge_logs: true,
autorestart: true,
watch: false,
max_memory_restart: '1G',
// Prevent infinite crash loops - stop after 10 failed restarts
max_restarts: 10,
min_uptime: '10s', // Require 10 seconds of uptime before considering stable
restart_delay: 4000, // Wait 4 seconds between restarts
kill_timeout: 5000, // Allow 5 seconds for graceful shutdown
},
{
name: 'punimtag-worker',
script: 'venv/bin/python',
args: '-m backend.worker',
cwd: '/opt/punimtag', // CHANGE: Update to your deployment directory
interpreter: 'none',
env: {
PYTHONPATH: '/opt/punimtag', // CHANGE: Update to your deployment directory
PATH: '/opt/punimtag/venv/bin:/usr/local/bin:/usr/bin:/bin', // CHANGE: Update paths
},
error_file: '/home/appuser/.pm2/logs/punimtag-worker-error.log', // CHANGE: Update user home directory
out_file: '/home/appuser/.pm2/logs/punimtag-worker-out.log', // CHANGE: Update user home directory
log_date_format: 'YYYY-MM-DD HH:mm:ss Z',
merge_logs: true,
autorestart: true,
watch: false,
max_memory_restart: '1G',
// Prevent infinite crash loops - stop after 10 failed restarts
max_restarts: 10,
min_uptime: '10s', // Require 10 seconds of uptime before considering stable
restart_delay: 4000, // Wait 4 seconds between restarts
kill_timeout: 5000, // Allow 5 seconds for graceful shutdown
},
{
name: 'punimtag-admin',
script: './serve.sh',
cwd: '/opt/punimtag/admin-frontend', // CHANGE: Update to your deployment directory
interpreter: 'bash',
error_file: '/home/appuser/.pm2/logs/punimtag-admin-error.log', // CHANGE: Update user home directory
out_file: '/home/appuser/.pm2/logs/punimtag-admin-out.log', // CHANGE: Update user home directory
log_date_format: 'YYYY-MM-DD HH:mm:ss Z',
merge_logs: true,
autorestart: true,
watch: false,
},
{
name: 'punimtag-viewer',
// Production: run `npm run build` in viewer-frontend before `pm2 start`.
// Do not use `next dev` on long-lived hosts (slow, wrong behavior vs prod).
script: './scripts/with-sharp-libpath.sh',
args: 'next start -p 3001',
cwd: '/opt/punimtag/viewer-frontend', // CHANGE: Update to your deployment directory
interpreter: 'bash',
env: {
PORT: '3001',
NODE_ENV: 'production',
},
error_file: '/home/appuser/.pm2/logs/punimtag-viewer-error.log', // CHANGE: Update user home directory
out_file: '/home/appuser/.pm2/logs/punimtag-viewer-out.log', // CHANGE: Update user home directory
log_date_format: 'YYYY-MM-DD HH:mm:ss Z',
merge_logs: true,
autorestart: true,
watch: false,
},
],
};