@jxa13/pm2ui
v1.18.0
Published
Local PM2 dashboard web UI for managing Node.js services
Maintainers
Readme
Node WebUI
A local web dashboard for monitoring and managing PM2 processes on macOS.
Node WebUI provides a clean browser-based interface for viewing running services, checking system usage, managing PM2 apps, and reading logs without needing to keep a Terminal window open.
Features
- View all PM2-managed processes
- Start, stop, and restart individual processes
- Bulk start, stop, and restart actions
- View PM2 process ID, CPU usage, RAM usage, uptime, restart count, and start time
- Search and filter processes by name and status
- Sort processes by status, name, CPU, RAM, restarts, uptime, and started time
- Show or hide table columns
- Save table preferences in local storage
- Open the process folder in Finder
- View recent logs for each process
- Auto-refresh logs
- Search within logs
- Copy, clear, and download logs
- Toggle line wrapping in logs
- Differentiate stdout and stderr log lines
- View host CPU and RAM usage
- View service counts and restart totals
- React operations-console UI served locally by Express
Requirements
- macOS
- Node.js 18+
- One or more PM2-managed processes
The package includes PM2 as a runtime dependency for the dashboard. Install PM2 globally only if you want to use the pm2 command directly from your terminal:
npm install -g pm2Installation
Install Or Update
Install the CLI globally from npm:
npm install -g @jxa13/pm2uiStart the dashboard:
pm2uiBy default, the dashboard runs locally on:
http://127.0.0.1:3210Upgrade to the latest published version:
npm install -g @jxa13/pm2ui@latestCheck the installed version:
npm list -g @jxa13/pm2ui --depth=0Install A Specific Version
Install a specific version:
npm install -g @jxa13/[email protected]Roll back to a previous version:
npm install -g @jxa13/[email protected]View all published versions:
npm view @jxa13/pm2ui versions --jsonInstall From Source
Clone the repository:
git clone <repo-url>
cd Node-WebUIInstall dependencies:
npm installThis installs runtime and development dependencies so the React frontend can be rebuilt from source. Global npm installs use the prebuilt frontend bundle shipped in the package.
Start the app:
npm startnpm start builds the React frontend and starts the local Express server.
Publish A New Version
Only maintainers with npm publish access can release new versions.
Run the checks:
npm run react:build
npm run react:smoke
npm pack --dry-runThe package metadata includes public npm access. Publish from a supported CI environment with npm publish --provenance when you want npm provenance attached to the release.
Bump the package version:
npm version patchUse minor for backward-compatible feature releases and major for breaking changes:
npm version minor
npm version majorPublish the release:
npm publishAfter publishing, users can upgrade with:
npm install -g @jxa13/pm2ui@latestPM2 Setup
Start a sample process:
pm2 start app.js --name my-appView PM2 processes:
pm2 listSave PM2 process state:
pm2 saveEnable PM2 to start automatically after reboot:
pm2 startupAvailable Actions
Per Process
- Start
- Stop
- Restart
- Open logs
- Open folder in Finder
Bulk Actions
- Start all stopped processes
- Stop all running processes
- Restart all running processes
Logs Viewer
The logs viewer supports:
- stdout and stderr lines
- Auto refresh
- Search within logs
- Copy logs
- Clear logs
- Download logs
- Toggle line wrapping
Recent log history is read from the selected PM2 process log files. Live updates use PM2's Node API event bus instead of shelling out to pm2 logs.
Security
This app is designed for local use only.
Recommended:
- Keep it bound to localhost
- Do not expose it directly to the internet
- If remote access is needed, place it behind authentication and a reverse proxy
Unsafe local API methods such as process actions, PM2 save, log clearing, create, delete, and Finder reveal require a same-origin browser session token. This helps block drive-by POST or DELETE requests from unrelated websites, but it is not a substitute for authentication if the app is exposed beyond localhost.
Future Ideas
Potential future improvements:
- Authentication for LAN access
- Automated backend route coverage
- Split backend routes and frontend modules
- Import/export for operator preference profiles
- Process grouping and tags
License
MIT
