Skip to main content

Requirements

  • Deno 2.8+ installed locally
  • Account on Vertra Cloud
  • A deno.json (or deno.jsonc) at the project root

Project Structure

The platform detects Deno from deno.json, deno.jsonc or deno.lock at the root of the project. Dependencies are installed with deno install, and the app runs with full permissions inside its container.

Configuration

deno.json

vertracloud.config

MAIN is the entry file. With a deno.json, deno.jsonc or deno.lock at the root the project is always detected as Deno, even if it also has a package.json. Add LANGUAGE=deno only for a Deno project without any of these files.

Example: HTTP Server

Deploy

  1. Compress the project into a .zip or push it to GitHub.
  2. In the dashboard, click New Project and upload the .zip or paste the repository URL.
  3. In Build, check the runtime (Deno), the main file (main.ts) and the memory. Start and build commands are under Advanced settings.
  4. Add your environment variables in Environment.
  5. In Network, turn on web publishing so the app gets a *.vertraweb.app address (Pro plan or higher, 512 MB of memory). The app must listen on port 80.
  6. Review and deploy. Follow the output in the Logs tab.
The full walkthrough is in First deploy.

Available Versions

Notes

  • Dependencies: declare them in deno.json and commit deno.lock so installs are reproducible
  • Permissions: the app runs with full permissions, so Deno.env, network and file access work without flags
  • Environment variables: use Deno.env.get("KEY")
  • Logging: use console.log() for logs that appear in real time
  • Listen on 0.0.0.0 on port 80

Common Errors

  • Entry file not found: MAIN must point to the entry file relative to the root of the zip, for example main.ts.
  • Detected as another language: a Deno project with none of deno.json, deno.jsonc or deno.lock at the root is not recognized. Add one of them, or set LANGUAGE=deno in vertracloud.config.
  • App starts but the site doesn’t open: the server must listen on 0.0.0.0 and port 80, not on localhost.