# Deployment

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 how to develop locally with Strapi and deploy Strapi with several common hosting options.

☁️ Strapi Cloud

Don't want to deploy Strapi by yourself? Join the cloud waitlist to soon get access to a platform to easily deploy and host your project.

🤓 Community Guides

In addition to the official deployment guides maintained by Strapi that are found here, community-maintained guides for additional providers are available in the Strapi Forum (opens new window).

# 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.

  • Node LTS (v14 or v16) Odd-number releases of Node are not supported (e.g. v13, v15).
  • NPM v6 (or the version shipped with the LTS Node versions)
  • Standard build tools for your OS (the build-essentials package on most Debian-based systems)
  • Hardware specifications for your server (CPU, RAM, storage):
Hardware Minimum Recommended
CPU 1 core 2+ cores
Memory 2GB 4GB+
Disk 8GB 32GB+
  • A supported database version:

🤓 Database deployment

Deploying databases along with Strapi is covered in the databases guide.

Database Minimum Recommended
MySQL 5.7.8 8.0
MariaDB 10.3 10.6
PostgreSQL 11.0 14.0
SQLite 3 3
  • A supported operating system:
Operating System Minimum Recommended
Ubuntu (LTS) 20.04 22.04
Debian 10.x 11.x
CentOS/RHEL 8.x 9.x
macOS 10.15 11.0
Windows Desktop 10 11
Windows Server 2019 2022

# Application Configuration

# 1. Configure

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

// Path: ./config/server.js

module.exports = ({ env }) => ({
  host: env('APP_HOST', '0.0.0.0'),
  port: env.int('NODE_PORT', 1337),
});
1
2
3
4
5
6

Then you can create a .env file or directly set environment variables in your chosen deployment platform:

APP_HOST=10.0.0.1
NODE_PORT=1338
1
2

💡 TIP

To learn more about configuration details, see the configurations documentation.

# 2. Launch the server

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

Run the server with the production settings:

✋ CAUTION

We highly recommend using pm2 (opens new window) 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:

// path: `./server.js`

const strapi = require('@strapi/strapi');
strapi(/* {...} */).start();
1
2
3
4

✋ 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.

# Advanced configurations

If you want to host the administration on another server than the API, please take a look at this dedicated section.

# Hosting Provider Guides

Manual guides for deployment on the following platforms:

Amazon AWS

Step by step guide for deploying on AWS EC2

foo

Azure

Step by step guide for deploying on Azure

foo

DigitalOcean App Platform

Manual step by step guide for deploying on DigitalOcean App Platform

foo

DigitalOcean Droplets

Manual step by step guide for deploying on DigitalOcean droplets

foo

Google App Engine

Manual step by step guide for deploying on GCP's App Engine

foo

Heroku

Step by step guide for deploying on Heroku

foo

# Optional Software Guides

Additional guides for optional software additions that compliment or improve the deployment process when using Strapi in a production or production-like environment.

CAD

Caddy

Overview of proxying Strapi with Caddy

foo
HAP

HAProxy

Overview of proxying Strapi with HAProxy

foo

Nginx

Overview of proxying Strapi with Nginx

foo
PM2

PM2 Process Manager

Overview of using the PM2 process manager with Strapi.

foo