feat: add PM2 ecosystem configuration and documentation for Web GUI deployment

This commit is contained in:
Rizqi 2026-06-21 12:22:22 +07:00
parent 7b4688b792
commit b06961d915
2 changed files with 55 additions and 0 deletions

View File

@ -23,3 +23,35 @@ Notes & caveats
- The script attempts to use `zstd -19` if available; otherwise it falls back to Python `zstandard`. - The script attempts to use `zstd -19` if available; otherwise it falls back to Python `zstandard`.
- SSL verification is disabled with `--no-verify-ssl` for convenience with self-signed vCenter/ESXi certs. - SSL verification is disabled with `--no-verify-ssl` for convenience with self-signed vCenter/ESXi certs.
- Test carefully in dev before using in production. This is a minimal DIY backup tool and does not replace a full backup product. - Test carefully in dev before using in production. This is a minimal DIY backup tool and does not replace a full backup product.
## Web GUI
A Flask-based web interface to manage your backups, schedules, and NFS mounts.
### Running with PM2 (Recommended for Linux production)
PM2 natively supports Python applications and can keep the server running across restarts.
1. **Install PM2** (requires Node.js):
```bash
npm install -g pm2
```
2. **Start the Web GUI**:
Using the provided `ecosystem.config.js`:
```bash
pm2 start ecosystem.config.js
```
*(Optional)* If you are running inside a Python virtual environment (e.g. `venv`), edit `ecosystem.config.js` to uncomment and point the `interpreter` to your venv's python executable:
```javascript
interpreter: './venv/bin/python3'
```
3. **Useful PM2 Commands**:
- Status: `pm2 status`
- Logs: `pm2 logs vsphere-backup-gui`
- Restart: `pm2 restart vsphere-backup-gui`
- Stop: `pm2 stop vsphere-backup-gui`
- Setup auto-start on server boot: `pm2 startup` and then run the command it outputs, followed by `pm2 save`.

View File

@ -0,0 +1,23 @@
module.exports = {
apps: [
{
name: 'vsphere-backup-gui',
script: 'gui_app.py',
// If you are using a virtual environment (recommended), set the interpreter to:
// interpreter: './venv/bin/python3',
interpreter: 'python3',
cwd: './',
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: '500M',
env: {
PORT: '5000',
SECRET_KEY: 'vsphere-backup-production-key-change-this'
},
error_file: './logs/pm2_err.log',
out_file: './logs/pm2_out.log',
log_date_format: 'YYYY-MM-DD HH:mm:ss'
}
]
};