DeployGroveDocumentationOpen dashboard

Deploy Node.js 24

Structure and deploy Node.js, Express, Fastify, NestJS, Next.js, and Nuxt apps on DeployGrove.

Put the manifest and lockfile at the repository root. Commit source and lockfiles, but keep credentials, local dependencies, virtual environments, and database files out of Git. DeployGrove scans the whole checkout: Dockerfiles, Containerfiles, Compose files, symlinks, Git submodules, package-manager config files, and unsupported dependency sources are rejected, even in unused folders.

Repository layout

my-app/
  package.json
  package-lock.json
  server.js

Commit exactly one lockfile: package-lock.json or npm-shrinkwrap.json for npm, pnpm-lock.yaml for pnpm, or yarn.lock for Yarn. Do not include a Bun lockfile. Use "type": "module" in package.json for the example below.

A small app that passes health checks

import { createServer } from 'node:http';
createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello from DeployGrove');
}).listen(8080, '0.0.0.0');

Save this as server.js. Test it with node server.js. Your app must listen on 0.0.0.0:8080 and return a successful response at / without login. The health probe uses this path.

Build and start rules

DeployGrove installs locked dependencies and runs the existing build script when present. It starts Node directly; it does not run your start script. The runtime has no npm, pnpm, Yarn, or compiler. Keep runtime packages in production dependencies.

  • Plain Node, Express, and Fastify: default entry server.js; set a repository-relative entry file if needed.
  • NestJS: build to dist/main.js, or set the entry file to your actual output.
  • Next.js: select Next.js, provide a build script that runs next build, and keep Next in runtime dependencies. DeployGrove runs next start -p 8080.
  • Nuxt: select Nuxt, build the server output, and use .output/server/index.mjs. Configure it to listen on port 8080 on all interfaces.

Ready to release? Follow the deploy steps and account setup.