# Deploy Astro on Render — Host your site for free in minutes. You can deploy your Astro site on Render for free. How you deploy depends on whether your site includes server-side logic (SSR, API routes, etc.): [diagram] See instructions for each service type below. > *Not sure if you have a server-side component?* > > Check your project's `astro.config.mjs` file. If it sets `output: 'server'` or `output: 'hybrid'` (removed in Astro v5), deploy as a [web service](#web-service). ## Static site (no server-side logic) Sites without a server-side component use Render's *static site* service type. Static sites are served over a global CDN. They include fully managed TLS certificates and support custom domains out of the box. 1. In the [Render Dashboard](https://dashboard.render.com), click *New > Static Site*: [image: Selecting Static Site from the New menu] 2. In the creation form, connect your Astro project's GitHub repository. - (GitLab and Bitbucket work too.) 3. For your site's *Build Command* and *Publish Directory*, set the following: | Setting | Value | | --- | --- | | *Build Command* | `npm install && npm run build` If you use a different package manager (such as `bun`, `pnpm`, or `yarn`), use its equivalent command instead. | | *Publish Directory* | `dist` | 4. Click *Deploy Static Site*. Render kicks off your site's first build and deploy. That's it! Your site will be live at its `onrender.com` URL as soon as the deploy finishes: [image: An Astro static site's URL in the Render Dashboard] As next steps, you can [add a custom domain](custom-domains) to your site and set up [pull request previews](service-previews#pull-request-previews-git-backed). ## Web service Astro sites with a server-side component use Render's *web service* service type. Web services support both [horizontal and vertical scaling](scaling). They include fully managed TLS certificates and support custom domains out of the box. 1. If necessary, update your Astro project to use the `@astrojs/node` adapter if you currently use a different adapter: ```shell npx astro add node ``` After making this change, push it to your repository. 2. In the [Render Dashboard](https://dashboard.render.com), click *New > Web Service*: [image: Selecting Web Service from the New menu] 3. In the creation form, connect your Astro project's GitHub repository. - (GitLab and Bitbucket work too.) 4. For your web service's *Build Command* and *Start Command*, set the following: | Setting | Value | | --- | --- | | *Build Command* | `npm install && npm run build` If you use a different package manager (such as `bun`, `pnpm`, or `yarn`), use its equivalent command instead. | | *Start Command* | `node dist/server/entry.mjs` If you've customized your site's builds, confirm this path by building your site locally and checking the output of the `build` command. | 5. Set your service's *Instance Type* to *Free*. - You can upgrade to a paid instance type at any time. - Learn more about [free instance types](free). 6. Under *Environment Variables*, add the following variables: | Name | Value | | --- | --- | | `HOST` | `0.0.0.0` (By default, dynamic Astro sites bind to `127.0.0.1` (i.e., `localhost`). Render web services must bind to `0.0.0.0` instead.) | | `NODE_VERSION` (optional) | Optionally set this to the version of Node.js you want to use for your site. Newly created services use Node.js `22.22.0` by default. | 7. Click *Deploy Web Service*. Render kicks off your service's first build and deploy. That's it! Your site will be live at its `onrender.com` URL as soon as the deploy finishes: [image: An Astro web service's URL in the Render Dashboard] As next steps, you can [add a custom domain](custom-domains) to your site and set up [pull request previews](service-previews#pull-request-previews-git-backed). --- ##### Appendix: Glossary definitions ###### build command The command that Render runs to build your service from source. Common examples include `npm install` for Node.js and `pip install -r requirements.txt` for Python. Related article: https://render.com/docs/deploys.md#build-command ###### start command The command that Render runs to start your built service in a newly deployed *instance*. Common examples include `npm start` for Node.js and `gunicorn your_application.wsgi` for Python. Related article: https://render.com/docs/deploys.md#start-command