# Deployment

> Source: https://docs.strapi.io/cms/deployment

Deployment options cover hardware/software prerequisites, environment variable setup, and building the admin panel before launch. In the documentation: links to provider‑specific and advanced guides to help pick the right hosting strategy.

Strapi provides many deployment options for your project or application. Your Strapi applications can be deployed on traditional hosting servers or your preferred hosting provider.

The following documentation covers the basics of how to prepare Strapi for deployment on with several common hosting options.

:::strapi Strapi Cloud
You can use [Strapi Cloud](/cloud/intro) to quickly deploy and host your project.
:::

:::tip
If you already created a content structure with the Content-Type Builder and added some data through the Content Manager to your local (development) Strapi instance, you can leverage the [data management system](/cms/features/data-management) to transfer data from a Strapi instance to another one.

Another possible workflow is to first create the content structure locally, push your project to a git-based repository, deploy the changes to production, and only then add content to the production instance.
:::

:::caution
For self-hosted Kubernetes deployments, we recommend using **npm** rather than **pnpm**. `pnpm` aggressive hoisting of dependencies can break native modules, such as `mysql2`— that your application may rely on. `npm` flatter, more predictable `node_modules` layout helps ensure native packages load correctly.
:::

## General guidelines

### Hardware and software requirements

To provide the best possible environment for Strapi the following requirements apply to development (local) and staging and production workflows.

Before installing Strapi, the following requirements must be installed on your computer:

- [Node.js](https://nodejs.org): Only [Active LTS or Maintenance LTS versions](https://nodejs.org/en/about/previous-releases) are supported (currently `v22`, `v24`, and `v26`). Odd-number releases of Node, known as "current" versions of Node.js, are not supported (e.g. v23, v25).
- Your preferred Node.js package manager:
    - [npm](https://docs.npmjs.com/cli/v6/commands/npm-install) (`v6` and above)
    - [pnpm](https://pnpm.io/) (pnpm is fixed to v9 on Strapi Cloud)
- [Python](https://www.python.org/downloads/) (if using a SQLite database)
- A supported web browser: The Admin panel targets browsers matching the default [Browserslist](https://github.com/browserslist/browserslist) query: `last 3 major versions`, `Firefox ESR`, `last 2 Opera versions`, and `not dead`. See [browsersl.ist](https://browsersl.ist/#q=last+3+major+versions%2C+Firefox+ESR%2C+last+2+Opera+versions%2C+not+dead) for the current coverage matrix. Projects can override these defaults with a Browserslist configuration at the project root.

- Standard build tools for your OS (the `build-essentials` package on most Debian-based systems)
- Hardware specifications for your server (CPU, RAM, storage):

| Hardware | Recommended | Minimum |
|----------|-------------|---------|
| CPU      |  2+ cores   | 1 core  |
| Memory   | 4GB+        | 2GB     |
| Disk     |  32GB+      | 8GB     |

- A supported database version:

| Database   | Recommended | Minimum |
|------------|-------------|---------|
| MySQL      | 8.4         | 8.0     |
| MariaDB    | 11.4        | 10.3    |
| PostgreSQL | 17.0        | 14.0    |
| SQLite     | 3           | 3       |

Strapi does not support MongoDB (or any NoSQL databases), nor does it support any "Cloud Native" databases (e.g., Amazon Aurora, Google Cloud SQL, etc.).

:::strapi Database deployment
Deploying databases along with Strapi is covered in the [databases guide](/cms/configurations/database#databases-installation).
:::

- A supported operating system:

| Operating System |  Recommended   | Minimum       |
|------------------|----------------|---------------|
| Ubuntu (LTS)     |  24.04         | 20.04         |
| Debian           |  11.x          | 10.x          |
| RHEL             |  10.x          | 8.x           |
| macOS            |  26.0          | 11.x          |
| Windows Desktop  |  11            | 10            |
| Windows Server   |  Not Supported | Not Supported |

### Application Configuration

<br/>

#### 1. Configure

We recommend using environment variables to configure your application based on the environment, for example:

```js title="/config/server.js"

module.exports = ({ env }) => ({
  host: env('HOST', '0.0.0.0'),
  port: env.int('PORT', 1337),
});
```

Strapi generates a `.env` file with default values when you create a new project. You can edit this file or set variables in your chosen deployment platform (see [example `.env` file](/cms/configurations/environment#example-env-file)):

```
HOST=10.0.0.1
PORT=1338
```

:::tip
To learn more about configuration details, see the [configurations](/cms/configurations) documentation.
:::

#### 2. Launch the server

Before running your server in production you need to build your admin panel for production:

```bash
NODE_ENV=production yarn build
```

```bash
NODE_ENV=production npm run build
```

```bash
npm install cross-env
```

Then in your `package.json` scripts section:

```bash
"build:win": "cross-env NODE_ENV=production npm run build",
```

And run:

```bash
npm run build:win
```

Run the server with the `production` settings:

```bash
NODE_ENV=production yarn start
```

```bash
NODE_ENV=production npm run start
```

```bash
npm install cross-env
```

Then in your `package.json` scripts section:

```bash
"start:win": "cross-env NODE_ENV=production npm start",
```

And run:

```bash
npm run start:win
```

:::caution
We highly recommend using [pm2](https://github.com/Unitech/pm2/) to manage your process.
:::

If you need a server.js file to be able to run `node server.js` instead of `npm run start` then create a `./server.js` file as follows:

```js title="./server.js"

const strapi = require('@strapi/strapi');
strapi.createStrapi(/* {...} */).start();
```

:::caution

If you are developing a `TypeScript`-based project you must provide the `distDir` option to start the server.
For more information, consult the [TypeScript documentation](/cms/typescript/development#use-the-createstrapi-factory).
:::

:::tip Health check endpoint
Strapi exposes a lightweight health check route at `/_health` for uptime monitors and load balancers. When the server is ready, it responds with an HTTP `204 No Content` status and a `strapi: You are so French!` header value, which you can use to confirm the application is reachable.
:::

### Advanced configurations

If you want to host the administration on another server than the API, [please take a look at this dedicated section](/cms/configurations/admin-panel#deploy-on-different-servers).

## Additional resources

:::prerequisites
* Your Strapi project is [created](/cms/installation) and its code is hosted on GitHub.
* You have read the [general deployment guidelines](/cms/deployment#general-guidelines).
:::

The [integrations page](https://strapi.io/integrations) of the Strapi website include information on how to integrate Strapi with many resources, including how to deploy Strapi on the following 3rd-party platforms:

- [Deploy Strapi on AWS](https://strapi.io/integrations/aws)

- [Deploy Strapi on Azure](https://strapi.io/integrations/azure)

- [Deploy Strapi on DigitalOcean App Platform](https://strapi.io/integrations/digital-ocean)

- [Deploy Strapi on Heroku](https://strapi.io/integrations/heroku)

<br/>

In addition, community-maintained guides for additional providers are available in the [Strapi Forum](https://forum.strapi.io/c/community-guides/28). This includes the following guides:

- [Proxying with Caddy](https://forum.strapi.io/t/caddy-proxying-with-strapi/)
- [Proxying with HAProxy](https://forum.strapi.io/t/haproxy-proxying-with-strapi/)
- [Proxying with NGinx](https://forum.strapi.io/t/nginx-proxing-with-strapi/)
- [Using the PM2 process manager](https://forum.strapi.io/t/how-to-use-pm2-process-manager-with-strapi/)

<br/>

The following external guide(s), not officially maintained by Strapi, might also help deploy Strapi on various environments:

- [[Microsoft Community] Deploying on Azure](https://techcommunity.microsoft.com/blog/appsonazureblog/strapi-on-app-service-quick-start/4401398)

:::strapi Multi-tenancy
If you're looking for multi-tenancy options, the Strapi Blog has a [comprehensive guide](https://strapi.io/blog/multi-tenancy-in-strapi-a-comprehensive-guide).
:::
