# Deployment

Strapi gives you many possible deployment options for your project or application. Strapi can be deployed on traditional hosting servers or services such as Heroku, AWS, Azure and others. The following documentation covers how to develop locally with Strapi and deploy Strapi with various hosting options.

TIP

Deploying databases along with Strapi is covered in the Databases Guide.

# Hosting Provider Guides

Manual guides for deployment on various platforms, for One-click and docker please see the installation guides.

Amazon AWS

Step by step guide for deploying on AWS EC2

Azure

Step by step guide for deploying on Azure web app

DigitalOcean

Manual step by step guide for deploying on DigitalOcean droplets

Google App Engine

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

Heroku

Step by step guide for deploying on Heroku

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

Nginx

Overview of proxying Strapi with Nginx

# Application Configuration

# 1. Configure

Update the production settings with the IP or domain name where the project will be running.

Path — ./config/environments/production/server.json.

{
  "host": "0.0.0.0", // IP, localhost, or 0.0.0.0
  "port": 1337
}

In case your database is not running on the same server, make sure that the environment of your production database (./config/environments/production/database.json) is set properly.

If you are passing a number of configuration item values via environment variables, which is always encouraged for production environment, read the section for Dynamic Configuration. Here is an example:

Path — ./config/environments/production/server.json.

{
  "host": "${process.env.APP_HOST || '0.0.0.0'}",
  "port": "${process.env.NODE_PORT || 1337}"
}

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

WARNING

We highly recommend using 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:

const strapi = require('strapi');

strapi(/* {...} */).start();

# Advanced configurations

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