Skip to main content
The Node.js preset provides Node.js with npm, managed by a systemd service for automatic restarts and logging.

Available Versions

Select a version when creating your pod. If not specified, Node.js 22 is used.

What’s Included

Pre-installed utilities: curl, wget, vim, htop, unzip.

Directory Structure

  • App Root: /home/instapod/app
  • App Port: 3000 (your app must listen on this port)
  • Environment: NODE_ENV=production is set by default

How the App Service Works

Your Node.js app runs as a systemd service called app. It:
  • Runs /usr/bin/node index.js from /home/instapod/app
  • Starts automatically on boot
  • Restarts on crash (on-failure policy)
  • Logs to the system journal (viewable via the Logs tab or CLI)
  • Runs as the instapod user
The service expects your app to listen on port 3000. The nginx proxy on the server forwards traffic from your pod’s public URL to this port.
Your app must bind to 0.0.0.0 (not localhost or 127.0.0.1) on port 3000, otherwise it won’t be reachable from the public URL.

Deploying Your App

Upload and Reload

pods reload automatically runs npm install --production when it detects a package.json in your app directory. You don’t need to install dependencies manually.

Example Express App

No Hot Reload

Node.js does not support hot reloading of code. Every code change requires a full process restart via pods reload. The restart takes about 1 second and causes a brief interruption.

Viewing Logs

Adding a Database

Database services require the Build plan or higher.

Use Cases

  • Express / Fastify APIs
  • Next.js applications (standalone mode)
  • GraphQL servers
  • Real-time apps with WebSockets
  • Background workers and job queues