Deploys a Node.js application for a website by generating a systemd unit for it, wiring up a reverse-proxy vhost, and managing the process from the panel. On deploy the plugin picks a free port in the 8300–8399 range, writes /etc/systemd/system/<app>.service through the root agent with PORT and NODE_ENV=production in the environment, and configures the site's vhost for whichever web server is in use — Nginx, Apache2, or OpenLiteSpeed. You can preview the exact unit file before anything is written. Start, stop, restart, and reload act on that unit, and logs are read back per domain.
Node runtimes are managed with nvm under /opt/nvm; the version picker offers the LTS majors 22, 20, and 18 plus whatever is already installed, and a deployment can be pinned to a specific version instead of the system default. Version probes and builds are routed to the node that actually holds the site's code rather than running on the panel host. A bootstrap step scaffolds a starter project — express, fastify, or a plain skeleton — and runs npm install as the site owner via runuser, never overwriting existing code. Dependency tooling covers npm install, installing named packages, listing installed packages, and detecting the entry point; a small web-rules form sets static and media aliases and directory indexing.
The plugin registers a website_deleting hook so an app's unit is stopped, disabled, and removed before its website is torn down. It requires websites.manage and the deploy tooling is admin-only; tenants can only call the read-only Node version listing that the create form needs. Despite the tag list, the shipped scaffolds are Express, Fastify, and plain — there is no Next.js/Nest/Nuxt template.
Use VinzaPanel's REST API to download and install this app programmatically.
POST /plugins/api/download/node-deploy/ Content-Type: application/json { "panel_version": "1.0.0" }
{
"success": true,
"plugin_id": "node-deploy",
"version": "1.0.14",
"download_url": "..."
}