Your First Render Deploy – Render Docs

Welcome! Let's get up and running on Render.

This tutorial uses free Render resources. No payment is required. All you need is a repository connected to a supported Git provider with the web app you want to deploy.

Want to deploy an example app using a particular language or framework? Check out our quickstarts.

1. Sign up

Signing up is fast and free:

Sign up for Render

2. Connect your Git provider

You can deploy to Render from a supported Git provider.

  1. Open your Account Settings page and scroll down to the Account Security section:

  2. Under Git Deployment Credentials, click Add credential and authorize Render with your provider.

3. Choose a service type

To deploy on Render, you create a service that pulls, builds, and runs your code.

For this tutorial, you'll create a Web Service or a Static Site:

Service type Description Common frameworks
Web Service Choose this if your web app runs any server-side code. The app also needs to listen for HTTP requests on a port.
Full-stack web apps, API servers, and mobile backends are all web services.
Express, Next.js, Fastify, Django, FastAPI, Flask, Rails, Phoenix
Static Site Choose this if your web app consists entirely of static content (mostly HTML/CSS/JS).
Blogs, portfolios, and documentation sets are often (but not always) static sites.
Astro, Hugo, Docusaurus, Next.js static exports

You can deploy either of these service types for free on Render.

Free web services "spin down" after 15 minutes of inactivity. They spin back up when they next receive an incoming HTTP request or new WebSocket connection. Learn more about free instance limitations.

4. Deploy your code

You can deploy using the Render Dashboard, the Render CLI, or a coding agent like Codex or Claude Code.

Select the tab for your preferred deployment method:

1. Connect your repo

  1. In the Render Dashboard, click + New in the top-right corner and select Web Service or Static Site:

The service creation form appears, showing a list of all the repos you have access to:

If you haven't connected your Git provider yet, you can do so from this form.

  1. Select the repo that contains your web app and click Connect.

The rest of the creation form appears.

2. Configure deployment

Complete the service creation form to define how Render will build and run your app.

Click the tab for your service type to view important field details:

Web service fields

Field Description
Branch Your service only deploys commits on the Git branch you specify, such as main.
Render can automatically redeploy your app whenever you push changes to this branch.
Root Directory Deploying from a monorepo? Specify the subdirectory that represents your application root. Your build and start commands will run from this directory.
Language If your app's programming language isn't listed in this dropdown, you can still deploy using the Docker runtime if you build your app from a Dockerfile.
Build Command This is the command that Render will use to build your app from source and install dependencies.
Common examples include:
Node.js
Python
Ruby
npm install

You can also use bun or yarn.

pip install -r requirements.txt

You can also use uv or poetry. To use uv, your project must include a uv.lock file.

bundle install

This usually resembles the command you run locally to install dependencies and perform any necessary compilation. | | Start Command | This is the command that Render will use to start your app.
Common examples include:
Node.js
Python
Ruby

npm start

You can also use bun or yarn.

gunicorn your_application.wsgi
./bin/rails server

For some frameworks, this might differ from the command you run locally to start your app. For example, a Flask app might use flask run locally but gunicorn for production. | | Compute | This determines your service's CPU and RAM, along with its cost.
Choose the Free compute plan to deploy for free:
| | Environment Variables | These will be available to your service at both build time and runtime.
If you forget any, you can always add them later and redeploy. |

Static site fields

Field Description
Branch Your site only deploys commits on the branch you specify, such as main. Render can automatically redeploy whenever you push changes to this branch.
Root Directory Deploying from a monorepo? Specify the subdirectory that represents your application root. Your build command will run from this directory.
Build Command This is the command that Render will use to install dependencies and then build your site's static assets.
Common examples include:
Next.js / Astro / Vue.js
Jekyll
npm install && npm run build

For Next.js, make sure you've set output: 'export' in your next.config.js file.

bundle install && bundle exec jekyll build

| | Publish Directory | This is the directory containing your site's static assets, which are usually generated by your build command.
Common examples include:
- build (Create React App, Vue.js, etc.)
- out (Next.js static export)
- _site (Jekyll) | | Environment Variables | These will be available to your service at build time.
Additionally, some static site generators substitute environment variable values into your generated static assets. For example:
- Create React App performs environment variable substitution for variables prefixed with REACT_APP_.
- Next.js does the same for variables prefixed with NEXT_PUBLIC_.
If you forget any, you can always add them later and redeploy. |

When you're done, click the Deploy button at the bottom of the form.

That's it! Render creates your service and kicks off your first deploy.

1. Install the CLI

Use any of the following methods to install the Render CLI or upgrade to the latest version:

Homebrew installation

Run the following commands:

$ brew update
$ brew install render
WinGet installation

Run the following command:

$ winget install render.cli
Installing with curl

Run the following command:

$ curl -fsSL https://raw.githubusercontent.com/render-oss/cli/refs/heads/main/bin/install.sh | sh
Direct download
  1. Open the CLI's GitHub releases page.
  2. Download the executable that corresponds to your system's architecture.

If you use an architecture besides those provided, you can build from source instead.

Building from source

We recommend building from source only if no other installation method works for your system.

  1. Install the Go programming language if you haven't already.
  2. Clone and build the CLI project with the following commands:
$ git clone git@github.com:render-oss/cli.git
$ cd cli
$ go build -o render

After installation completes, open a new terminal tab and run render with no arguments to confirm.

2. Log in

Run the following command to authenticate:

$ render login

Your browser opens a confirmation page. Click Authorize CLI, then return to your terminal and select your workspace when prompted.

For details, see the CLI setup guide.

3. Create a service

Use render services create to create and deploy a new service via the Render CLI. For example, the following command deploys a Node.js web service:

$ render services create \
    --name express-hello-world-example \
    --type web_service \
    --repo https://github.com/render-examples/express-hello-world \
    --runtime node \
    --build-command "npm install" \
    --start-command "npm start" \
    --plan free

Select the tab for your service type to learn which CLI options to supply:

Web Service

Option Description
--name A name for your service (appears in the Dashboard and your onrender.com URL).
--type Set to web_service.
--repo The Git repository URL for your app. For private repos, first connect your Git provider account.
--runtime Your app's runtime environment (node, python, ruby, go, or elixir). You can also use docker to build your app from a Dockerfile.
--build-command This is the command that Render will use to build your app from source and install dependencies.
Common examples include npm install, pip install -r requirements.txt, and bundle install.
This command resembles the command you run locally to install dependencies and perform any necessary compilation.
--start-command This is the command that Render will use to start your app.
Common examples include npm start and bundle exec puma.
For some frameworks, this might differ from the command you run locally. For example, a Flask app might use flask run locally but gunicorn for production.
--env-var Environment variables are available to your service at both build time and runtime.
Repeat the flag for multiple variables. If you forget any, you can always add them later and redeploy.
--plan Determines your service's CPU and RAM, along with its cost. Provide free to deploy this service for free.

For the full list of options, see the services create reference.

Static Site

Option Description
--name A name for your site (appears in the Dashboard and your onrender.com URL).
--type Set to static_site.
--repo The Git repository URL for your site. For private repos, first connect your Git provider account.
--build-command This is the command that Render will use to install dependencies and build your site's static assets.
Common examples include npm install && npm run build and bundle install && bundle exec jekyll build.
This command resembles the command you run locally to install dependencies and build your site.
--publish-directory The directory containing your built static assets, usually generated by your build command.
Common examples include:
- build (Create React App, Vue.js, etc.)
- out (Next.js static export)
- _site (Jekyll)
--env-var Environment variables are available to your site at build time. Some static site generators substitute them into your generated assets, for example:
- Variables prefixed with REACT_APP_ (Create React App)
- Variables prefixed with NEXT_PUBLIC_ (Next.js)
Repeat the flag for multiple variables. If you forget any, you can always add them later and redeploy.
--auto-deploy By default, Render automatically redeploys your site whenever you push to your linked branch. Set to false to disable automatic redeploys.

For the full list of options, see the services create reference.

That's it! After running render services create, Render creates your service and returns its ID. You'll use this ID to monitor your deploy in the next step.

5. Monitor your deploy

In the Render Dashboard, open your new service's Deploys page to see a log explorer showing your deploy's progress:

Follow along as the deploy proceeds through your build and start commands.

# Web service
==> Deploying...
==> Running 'npm start' # (or your start command)
==> Your service is live 🎉

# Static site
==> Uploading build...
==> Your site is live 🎉

Stream your deploy's logs in real time with render logs:

$ render logs --resources srv-abc123 --tail

Follow along as the deploy proceeds through your build and start commands.

# Web service
==> Deploying...
==> Running 'npm start' # (or your start command)
==> Your service is live 🎉

# Static site
==> Uploading build...
==> Your site is live 🎉

Prompt your coding agent to check on your deploy. For example:

Show me the deploy status and logs for my-service

Your coding agent retrieves the deploy status and logs.

Why did the deploy for my-service fail?

Also see Troubleshooting Your Deploy for common solutions. After fixing the issue, prompt your coding agent to redeploy, or push a new commit to your linked branch to trigger a redeploy automatically.

6. Open your app

After your app deploys successfully, you're ready to view it live.

Every Render web service and static site receives a unique onrender.com URL. You can find this URL on your service's page in the Render Dashboard:

Click the URL to open it in your browser. Your service will serve the content for its root path.

Congratulations! You've deployed your first app on Render 🎉

Next steps

Connect a datastore

Render provides fully managed Postgres and Key Value instances for your data needs. Both provide a Free compute plan to help you get started.

Free Render Postgres databases expire 30 days after creation.

You can upgrade to a paid instance at any time to keep your data. Learn more about free instance limitations.

Learn how to create datastores and connect them to your app:

Paid services can also attach a disk for persistence of local filesystem data (by default, local filesystem changes are lost with each deploy).

Install the Render CLI

The Render CLI helps you manage your Render services right from your terminal. Trigger deploys, view logs, initiate psql sessions, and more.

Get started with the Render CLI.

Add a custom domain

Each Render web service and static site receives its own onrender.com URL. You can also add your own custom domains to these service types. Learn how.

Learn about operational controls

Deploying your app is just the beginning. Check out a few of the ways you can manage and monitor your running services on Render:

Note that some of these capabilities require running your service on a paid compute plan.

Explore other service types

In addition to supporting web services and static sites, Render offers a variety of other service types to support any use case:

Service type Description
Private services Run servers that aren't reachable from the public internet.
Background Workers Offload long-running and computationally expensive tasks from your web servers.
Cron Jobs Run periodic tasks on a schedule you define.
Workflows Define collections of composable, long-running tasks that execute across distributed compute.

Note that free instances are not available for these service types.