Skip to content
Cloudzyro

Replit hosting: deploy your Replit app

Built an app with Replit? Send its code to GitHub and Cloudzyro puts every change online, or upload a zip.

Last updated

Through GitHubReplit sends your code to a GitHub repository, and every change goes live by itself.
Or upload a zipDownload your project and upload it in the console. We build it for you.

How to deploy your Replit app

Create your free Cloudzyro account, then bring your Replit project over one of two ways.

Through GitHub (updates go live by themselves)

  1. 1

    In Replit, open Tools, then Git. Connect your GitHub account and a repository, then commit and push (or turn on auto-sync).

  2. 2

    On the Cloudzyro console's Home page, under Import from a repository, choose GitHub, then pick that repository and its branch.

    Read the Git guide
  3. 3

    Every change Replit pushes to the repository goes live by itself.

Download a zip

  1. 1

    In Replit, open the menu at the top of the file tree and choose Download as zip. Delete the .cache folder from the zip before you upload it: it can hold copies of your secrets.

  2. 2

    In the Cloudzyro console, create a site and upload the zip. We leave out node_modules and build it for you.

    Read the upload guide
On this page

Why host your Replit app on Cloudzyro

Replit is where you build. Cloudzyro is where your app lives once it's ready, with your code in your own repository:

  • Every version kept. Each push or upload becomes a version you can restore in one click (5 on Launch, 10 on Boost) or download. See Versions.
  • Never asleep. Sites never sleep, on the free plan too.
  • Free for business. Launch is free, and you can use it for a business.
  • Your own domain, free. Custom domains cost nothing extra on any plan.
  • No per-seat charges. Invite your team free.
  • Slowed, never cut off. A site over its monthly traffic is slowed for the rest of the month, never taken offline or charged extra.

What we build from your Replit project

Cloudzyro hosts static sites and Node.js apps, so your Repl needs an index.html or a package.json at the top. Projects in other languages, such as Python, won't deploy. We look at the top of your project to work out what it is:

  • An index.html goes online as it is. See HTML sites.
  • A package.json with a build script, like a Vite or React app, is built and the files it makes are served.
  • A Node.js app with a start script, including Next.js, runs on Node 24, or the version in engines.node or .nvmrc.

With a zip, upload the folder that holds index.html or package.json, not the folder above it. Launch takes uploads up to 100 MB and 20,000 files; Boost up to 1 GB and 50,000. See Upload files.

Listen on PORT and 0.0.0.0

A Node app on Cloudzyro must listen on the port in the PORT environment variable (3000), not a fixed one like 5000, and on all network addresses, not just localhost. If it doesn't, the deploy fails with “Your site started but didn't answer.”

const port = process.env.PORT || 3000;
app.listen(port, '0.0.0.0');

Your home page (/) must also answer within 5 seconds without an error. A normal page or a redirect, for example to /login, is fine.

How updates go live through GitHub

Once the repository is connected to your site, every push to its branch becomes a new version: we build it, check it starts, and switch over. Your current version stays online until the new one is ready, so a broken change never replaces a working site. Commit and push from Replit's Git tool, or turn on auto-sync, and each push goes live by itself.

To hold changes back for a while, open the site's Settings and select Pause automatic deploys. GitLab, Bitbucket and any Git address work too. See Deploy from Git.

Replit Secrets and environment variables

Add the values from Replit's Secrets on your site's Environment variables tab, rather than relying on them coming over with your code. You can paste several at once as .env lines, and tick Sensitive to make a value write-only for good.

If you download a zip, delete its .cache folder before uploading: it can hold copies of your secrets. We leave out .env files and offer to add their values for you.

Sites have no permanent disk, so an app that saves data in its own files (SQLite, an uploads folder) loses it on the next deploy. Move that data to a database, below.

See Set environment variables.

Connect a database

Sites on Cloudzyro have no permanent disk: files a site writes while it runs are cleared with each new version. So if your site keeps anything, like sign-ups, orders or bookings, keep it in a database such as Supabase or Neon.

On your site's Database tab, select Connect Supabase, sign in to Supabase and choose the project. We fill in the settings your code reads, test them and deploy. Or paste a connection string from Neon or any other provider. See Connect Supabase or Connect a database.

Replit custom domain

Every site gets a free address at <name>.cloudzyro.app, and you can add your own domain free on every plan. Add it once in the console:

  1. Open your site's Domains tab and add the address visitors will use, such as www.example.com.
  2. At your DNS provider, add a CNAME record for www pointing to domains.cloudzyro.app.
  3. For the bare domain (example.com), add an A record pointing to 173.234.137.167. It sends visitors to www over HTTPS.
  4. Wait for the domain to show Live. Certificates are automatic.

If your DNS is at Cloudflare, set the record to DNS only (the gray cloud). Point a domain at your site walks through it, and Connect a custom domain covers the details.

If a deploy fails

Your live site keeps running the previous version, and the deploy page says what went wrong in plain words, with the last lines of the build log and a fix. Select Ask your AI to fix it to copy a ready-made message you can paste into any AI tool. The usual causes:

  • Wrong port. The app listens on a fixed port or only on localhost. Use process.env.PORT and 0.0.0.0, as above.
  • Missing files. We need an index.html or a package.json at the top of what you sent. A zip that holds one folder with everything inside is a common cause.
  • Crashed on start. Often a missing environment variable or a database it can't reach. Add it on the Environment variables tab, then select Deploy now.

Fix a failed deploy explains every reason. Still stuck? Use Get help in the console or email support@cloudzyro.com.

What it costs

Every site starts on Launch, which is free and allows business use, with 100 GB of traffic a month. Boost is $20 a month per site plus tax, with more memory and CPU, priority builds, 10 versions to restore and 1 TB of traffic. Team members are free on every plan. See pricing.

Keep reading

Questions about Replit and Cloudzyro

My Replit app runs on a fixed port. Does that matter?
Yes. Your app must listen on the port in the PORT environment variable, not a fixed one like 5000, and on all addresses (0.0.0.0), not just localhost.
Where do my Replit Secrets go?
On your site's Environment variables tab in the console. Add them there before you deploy, rather than relying on them coming over with your code.
Does my Python Repl work?
No. Cloudzyro hosts static sites and Node.js apps, so your project needs an index.html or a package.json at the top.
Does it cost anything?
Cloudzyro's Launch plan is free, business use included. You only pay if you move a site to Boost.
Do changes I make in Replit go live by themselves?
Yes, through GitHub. Once the repository is connected, every change Replit pushes to its branch becomes a new version. With a zip, upload the new one yourself.
Where do my keys go, like Supabase's?
In the console, on your site's Environment variables tab. Never put keys in your code or a zip.
Does my site sleep when it's quiet?
No. Sites never sleep, on the free plan too.

Put your Replit app online free

Free to start, free for business, with every version kept.