Skip to content
← All guides

Devora Cloud · Blog

Deploy without Git: from ZIP to a live site in minutes

How to deploy a site or app on Devora Cloud by uploading just a ZIP file: supported stacks, automatic builds, PORT and 0.0.0.0, what to leave out of the ZIP and how to connect GitHub later.

project.zippackage.jsonsrc/public/not in the ZIPnode_modules/.next/.envAutomatic build› detected: Next.js› npm ci› npm run build› PORT=3000› listen 0.0.0.0✓ healthcheckloja.apps…LiveAutomatic HTTPSGitHub later, if you want
Technical illustration. Features and regions depend on the plan, availability and application compatibility.

Not every project is born in a Git repository. Sometimes the code came from a freelancer, was generated by an AI, sits in a folder on your computer or in a ZIP downloaded from somewhere. With many hosting services, that means learning Git, creating a repository and configuring Docker before you even see the site running.

On Devora Cloud you can deploy with a ZIP file. The platform detects the stack, runs the build itself and puts the site online with HTTPS. This guide covers what is supported, how to prepare the ZIP and the two details that break the most deploys: the port and the 0.0.0.0 address.

Stacks supported without a Dockerfile

StackHow it is detectedDefault port
Next.js and Node.jspackage.json (npm, pnpm or yarn) with build and start scripts3000
Vite / Reactpackage.json with Vite; the output is served by nginx with SPA fallback80
Python: Django, FastAPI, Flaskrequirements.txt or pyproject.toml8000
Gogo.mod8080
Static HTMLindex.html at the root80

If there is a Dockerfile at the root of the ZIP, it is used instead of the automatic recipe. When there is none, the build log shows the generated Dockerfile — handy for understanding and fixing an error.

Step by step

  • Create your account at devoracloud.com/register (7-day free trial, no card).
  • In the dashboard, create a new project and choose ZIP upload.
  • Upload the file (up to 512 MB).
  • Follow the build: analysis, build, publishing and health check.
  • When the status is ready, the site answers at https://your-project.apps.devoracloud.com with an automatic certificate.

Rather not do any of this? Generate the AI token in the dashboard and ask your AI to deploy: it prepares the ZIP, creates the project and follows the build for you.

How to build the ZIP

Put the file that identifies the project at the root of the ZIP: package.json, requirements.txt, go.mod or index.html. A single top-level folder also works. Use ZIP; tar archives are not accepted.

Leave out:

  • node_modules — dependencies are installed during the build.
  • .next, dist and build — the build runs again on the platform.
  • .git — history is not needed.
  • .env and any file with passwords or keys — use the project’s environment variables.
  • User uploads and local databases such as .sqlite files — files go to S3 and data to PostgreSQL.

A lean ZIP uploads faster and keeps things that only made sense on your machine out of the cloud.

PORT and 0.0.0.0: the most common mistake

The application must listen on 0.0.0.0 and on the port given by the PORT environment variable. If it listens only on localhost (127.0.0.1) or on a different fixed port, the build succeeds but the health check cannot reach the app, and the deploy fails.

  • Node.js: app.listen(process.env.PORT || 3000, "0.0.0.0").
  • Next.js: the default start script (next start) already honors PORT.
  • Python: run the server (uvicorn, gunicorn) with host 0.0.0.0 and the port from PORT.
  • Go: read os.Getenv("PORT") and listen on ":" + port.

Check your scripts too: in Node projects, package.json needs build (if there is a build step) and start.

Other common first-deploy errors

If the deploy fails, open the log before changing anything. The most frequent cases are easy to fix:

  • Missing dependency: the package works on your machine because you installed it by hand, but it is not in package.json or requirements.txt.
  • Wrong runtime version: the project needs a different Node.js or Python version from the one the build detected.
  • File name case mismatch: it works on Windows or macOS but not on the Linux build machine.
  • Environment variable missing at build time: the code reads a key that only existed in your local .env.

Fix it, create a new ZIP and deploy again. Meanwhile, the previous version stays live.

Variables, database and S3

Passwords and keys go in as project environment variables, available at build and run time. If the app uses a database, create PostgreSQL or Redis before the first deploy: the connection reaches the app as DATABASE_URL (or REDIS_URL). For images and documents, create the project’s private S3; the app receives ready-made S3_* variables.

Never put secrets in variables read by the browser, such as those starting with NEXT_PUBLIC_.

New versions, and GitHub later

To update, upload a new ZIP and deploy again. A failed deploy never replaces the version that is live: the site keeps running while you fix things.

When the project matures, connect GitHub once in the dashboard under Connections and link the repository to the project. From then on, every push to the chosen branch triggers a deploy. ZIP upload remains available if you prefer it.

Frequently asked questions

Do I need a Dockerfile?

No. Next.js, Node.js, Vite/React, Python (Django, FastAPI, Flask), Go and static HTML have automatic recipes. If you include a Dockerfile at the root, it is used.

What is the maximum ZIP size?

Up to 512 MB. Without node_modules and build folders, most projects are far below that.

The build passed but the deploy failed. Why?

Most of the time the application is not listening on 0.0.0.0 and the PORT variable, or the start script is missing. Check the deploy logs: they show the error and the generated Dockerfile.

Can I switch to GitHub later?

Yes. Connect GitHub under Connections and link the repository to the project; from then on, deploys come from each push.

Deploy without Git: from ZIP to a live site in minutes · Devora Cloud