Files
dwroller/docs/pm2.md
alex a4cabbd2b8 Clean rules database and add documentation
- 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>
2026-04-22 17:35:36 +02:00

189 lines
2.7 KiB
Markdown

# 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
```bash
# Install PM2 globally
npm install -g pm2
# Initialize PM2 ecosystem file
pm2 init
```
## Application Configuration
Create `ecosystem.config.js`:
```javascript
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
```bash
# 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
```bash
# View status
pm2 list
# View logs
pm2 logs
# Restart app
pm2 restart all
# Stop app
pm2 stop all
# Delete app
pm2 delete all
```
## Monitoring
```bash
# Enable monitoring
pm2 monitortype --interval 10000
# View stats
pm2 stats
```
## Logging
```bash
# 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:
```json
{
"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
```bash
# 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:
```bash
# Set environment variable
pm2 set ecosystem.config.js:* env:SESSION_SECRET="your-secret"
# List all env variables
pm2 env ecosystem.config.js
```
## Backup Strategy
```bash
# Create database backup
npm run backup
# Schedule backup with cron
0 2 * * * /path/to/db/backup.sh
```
## Scaling
For horizontal scaling, configure multiple instances:
```javascript
{
instances: 'max',
exec_mode: 'cluster',
watch: false
}
```
## Auto-restart on reboot
```bash
pm2 startup
pm2 save
```