- Remove OCR noise, credits, and duplicates from rules-database.json (288→255 rules) - Add clean_rules.py script for rule cleanup - Add CLAUDE.md, docs/, and update README with documentation links Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2.7 KiB
2.7 KiB
PM2 Configuration
This document explains how to use PM2 for managing Deathwatch Roller in production.
What is PM2?
PM2 is a production process manager for Node.js that keeps your application running 24/7.
Installation
# Install PM2 globally
npm install -g pm2
# Initialize PM2 ecosystem file
pm2 init
Application Configuration
Create ecosystem.config.js:
module.exports = {
apps: [
{
name: 'dwroller-frontend',
cwd: './frontend',
script: 'npm',
args: 'start',
env: {
NODE_ENV: 'production',
PORT: 3000
},
env_development: {
NODE_ENV: 'development'
},
instances: 1,
autorestart: true,
max_memory_restart: '500M'
},
{
name: 'dwroller-backend',
cwd: './backend',
script: 'npm',
args: 'start',
env: {
NODE_ENV: 'production',
PORT: 5000
},
env_development: {
NODE_ENV: 'development'
},
instances: 1,
autorestart: true,
max_memory_restart: '500M'
}
]
};
Starting the Application
# Start both apps
pm2 start ecosystem.config.js
# Start only backend
pm2 start ecosystem.config.js --only backend
# Start only frontend
pm2 start ecosystem.config.js --only frontend
Managing Apps
# View status
pm2 list
# View logs
pm2 logs
# Restart app
pm2 restart all
# Stop app
pm2 stop all
# Delete app
pm2 delete all
Monitoring
# Enable monitoring
pm2 monitortype --interval 10000
# View stats
pm2 stats
Logging
# Rotate logs
pm2 rotate logs
# Save log
pm2 save
# Load saved PM2 process list
pm2 startup
pm2 save
NPM Scripts
Update package.json with PM2 scripts:
{
"scripts": {
"start": "npm run build && pm2 start ecosystem.config.js",
"pm2:start": "pm2 start ecosystem.config.js",
"pm2:stop": "pm2 stop all",
"pm2:restart": "pm2 restart all",
"pm2:logs": "pm2 logs",
"pm2:list": "pm2 list",
"pm2:save": "pm2 save",
"pm2:startup": "pm2 startup"
}
}
Production Build
# Build frontend
cd frontend
npm run build
# Start with PM2
cd ../..
npm run pm2:start
Environment Variables
Store secrets in .env or use PM2 env:
# Set environment variable
pm2 set ecosystem.config.js:* env:SESSION_SECRET="your-secret"
# List all env variables
pm2 env ecosystem.config.js
Backup Strategy
# Create database backup
npm run backup
# Schedule backup with cron
0 2 * * * /path/to/db/backup.sh
Scaling
For horizontal scaling, configure multiple instances:
{
instances: 'max',
exec_mode: 'cluster',
watch: false
}
Auto-restart on reboot
pm2 startup
pm2 save