pm2 fork mode require()s the resolved script rather than spawning a
shell, and on o2switch `npm` resolves to CloudLinux's bash npm_wrapper,
so pm2 crashed instantly (SyntaxError) and restart-looped forever.
Point pm2 at tsx's real ESM entry (node_modules/tsx/dist/cli.mjs)
instead. Also renames the pm2 process to video-downloader-worker.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Passenger only manages the Next.js app process; the worker now gets
the same crash-recovery/auto-restart via pm2, replacing the cron-driven
PID-file restart hack. Updates README deployment steps accordingly.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>