Categories: Technology

How to Deploy a Node.js App Without Touching SSH

Deploying a Node.js app traditionally means SSH keys, PM2 flags, nginx virtual hosts, and a “works on my machine” moment somewhere along the line. It doesn’t have to. This guide walks through a real deployment done conversationally – the same one I now use for side projects – where an agent handles the server-side mechanics while I review and confirm each step in Broodle Studio.

What You Need Before Starting

  • A Linux server (Ubuntu 22.04 or Debian 12 preferred) with Node 20+ installed, or ask the agent to install it
  • Your app repository (GitHub URL works; private repos handled through the GitHub integration)
  • A domain pointed at the server (optional, for the reverse proxy step)

Step 1: Connect the Server

On Broodle-hosted servers the agent is pre-connected. For a VPS anywhere else, attach it via BYOS – one command on your box opens an outbound tunnel to Studio; no firewall holes. The agent then runs a quick environment check: Node version, available RAM, whether a process manager exists, whether ports 80/443 are bound.

Step 2: Ask for the Deployment Plan

My prompt: “Deploy the app at github.com/you/cool-app to this server. It’s an Express API with a Postgres dependency. Use PM2 and put it behind nginx with a letsencrypt cert for app.domain.com.” The agent responds with a plan:

  • Clone the repo into /var/www/cool-app
  • npm ci, then build (if the repo has a build step)
  • Create .env from your values, permissions locked to the app user
  • Install PM2, start the app, save the process list for reboot survival
  • Write an nginx vhost with proxy_pass to the app’s port, run certbot for HTTPS

You review the plan, tweak anything odd (like changing the app port), and approve. Every command executes visibly.

Step 3: Verify Like a Load Balancer Would

After the “deploy complete” message, the agent runs its own health checks: curl to the local port, curl through nginx on HTTPS, PM2 status with restart counts, error log tail for the first minute of traffic. If anything fails – say Postgres isn’t reachable – it reports the exact error and proposes the fix rather than leaving you to grep logs.

Step 4: Ongoing Maintenance

  • “Deploy the latest main branch with zero downtime” – it pulls, restarts PM2 with a short overlap, verifies health before and after
  • “Roll back to the previous commit” – one sentence, done
  • “Is the app leaking memory?” – it reads PM2 memory metrics over time and suggests a restart policy if growth looks linear

Common Gotchas the Agent Handles

Where This Fits With the Rest of Studio

Deployments are one node in a bigger graph. Once your app runs, the same agent can harden the server, the n8n agent can trigger it from schedules, and a Store Manager can call your API from WooCommerce hooks. If you’re new to the whole space, start with the agentic AI explainer

, then the Studio review, then come back here when you have an app to ship.

10,000 free tokens ride along with every Broodle hosting plan, enough for several small deployments – launch Studio and try it on a staging box first.