If you’re running Debian 13 for a production server, Node.js 24 + PM2 is a practical setup, simple deployment, easy process management, and predictable restarts.
Below is a production-friendly installation guide, including PM2 log rotation.
1. Install Node.js 24 (via NodeSource)
Update packages and install prerequisites:
sudo apt update
sudo apt install -y ca-certificates curl gnupg
Add the NodeSource GPG key:
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \
| sudo gpg --dearmor -o /usr/share/keyrings/nodesource.gpg
Code language: JavaScript (javascript)
Add the Node.js 24 repository:
echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_24.x nodistro main" \
| sudo tee /etc/apt/sources.list.d/nodesource.list
Code language: PHP (php)
Install Node.js:
sudo apt update
sudo apt install -y nodejs
Verify:
node -v
npm -v
2. (Optional) Install Build Tools
Some npm packages (native modules) require compilation
sudo apt install -y build-essential python3 make g++
3) Install PM2
Install PM2 globally
sudo npm install -g pm2
Verify:
pm2 -v
4. Run Your App with PM2
If your app uses npm start
cd /var/www/myapp
pm2 start npm --name "myapp" -- start
Code language: JavaScript (javascript)
Check status
pm2 status
View logs:
pm2 logs myapp
5) Install PM2 Log Rotation (pm2-logrotate)
This prevents logs from growing endlessly and filling up disk space.
Install the module, donot use ‘sudo’, because it will install and run under roor, not current user
pm2 install pm2-logrotate
Confirm it’s installed
pm2 status
pm2 show pm2-logrotate
pm2 conf pm2-logrotate
6. Recommended Log Rotation Settings (Production-Friendly)
Example: rotate when logs reach 50MB, keep 14 files, compress old logs.
pm2 set pm2-logrotate:max_size 50M
pm2 set pm2-logrotate:retain 14
pm2 set pm2-logrotate:compress true
pm2 set pm2-logrotate:dateFormat YYYY-MM-DD
pm2 set pm2-logrotate:workerInterval 30
Code language: JavaScript (javascript)
Optional: rotate on a schedule (cron). Example: rotate daily at midnight
pm2 set pm2-logrotate:rotateInterval '0 0 * * *'
Code language: JavaScript (javascript)
Restart processes to keep everything clean:
pm2 save
pm2 restart all
7) Where PM2 Stores Logs
By default, PM2 logs live here:
~/.pm2/logs/
Code language: JavaScript (javascript)
Quick check
ls -lah ~/.pm2/logs/
Code language: JavaScript (javascript)
8) Uninstall Log Rotation (If Needed)
pm2 uninstall pm2-logrotate