Skip to content

Deploy

What your repo needs, and how a deploy proceeds.

Supported runtime

Right now only Node.js / Next.js is supported. Other runtimes like Python, Go, PHP, and Rust are planned but not in this release.

Build from repo

You provide an https git repo URL (--repo / the dashboard's "Deploy"). The repo is cloned, the framework is auto-detected, a container image is built, and it runs in an isolated pod — no config file needed.

Next.js repo requirements

The build engine copies the standalone output. So you need to set this in next.config.js (or .ts):

/** @type {import('next').NextConfig} */
module.exports = {
  output: 'standalone',
};

Without this setting, the build fails — the engine expects the .next/standalone and .next/static directories.

DocsDeploy.nextReq.callout

Plain Node.js repo requirements

  • The start script in package.json must run with node ... — the engine runs npm start.
  • Your server must listen on the PORT environment variable and bind to 0.0.0.0 (not just localhost).

Security: non-root execution

Built images always run non-root (UID 10001) — the engine sets this automatically, you don't need to do anything extra in your repo. If your container doesn't need to bind to a port below 1024 (usually not needed for Next.js/Node), this restriction doesn't affect you.

Repo URL restrictions

--repo only accepts a public https git URL. Internal network, link-local, and localhost addresses are rejected — this is a security measure, not a user error.

Deploy lifecycle

  1. Queued — request received, waiting in the queue.
  2. Building — repo mode only: cloning + image build.
  3. Deploying — the image is being placed into a container.
  4. Live — health check passed, URL is ready.
  5. Failed — the build or deploy errored; details are in the logs.
  6. Canceled — the deploy was canceled.

Viewing logs

Build logs — historical, captured records. In the dashboard's deploy history, or via the API at GET /api/deployments/:id/build-logs.

Runtime logs — a live stream (SSE). The "Logs" button in the dashboard, or detpul logs -f in the terminal.

Subdomain and SSL

Every live deploy automatically gets an address: <deployment-id>.detpul.app.

Right now this address returns over http:// in the development environment. Automatic SSL (Let's Encrypt) will kick in when we move to production.

Free tier limit

On the free tier you can create at most 1 project. Once the limit is reached, project creation requests are rejected; see the Concepts page for details.

Deploy — DETPUL Docs