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.
You can use Strapi Cloud to quickly deploy and host your project.
If you already created a data 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 to transfer data from a Strapi instance to another one.
Another possible workflow is to first create the data structure locally, push your project to a git-based repository, deploy the changes to production, and only then add content to the production instance.
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: Only Active LTS or Maintenance LTS versions are supported (currently
v18
andv20
). Odd-number releases of Node, known as "current" versions of Node.js, are not supported (e.g. v19, v21). - Your preferred Node.js package manager:
- Python (if using a SQLite database)
Hardware | Recommended | Minimum |
---|---|---|
CPU | 2+ cores | 1 core |
Memory | 4GB+ | 2GB |
Disk | 32GB+ | 8GB |
- A supported database version:
Database Recommended Minimum MySQL 8.0 5.7.8 MariaDB 10.6 10.3 PostgreSQL 14.0 11.0 SQLite 3 3
Deploying databases along with Strapi is covered in the databases guide.
A supported operating system:
Operating System Recommended Minimum Ubuntu (LTS) 22.04 20.04 Debian 11.x 10.x CentOS/RHEL 9.x 8.x macOS 11.0 10.15 Windows Desktop 11 10 Windows Server 2022 2019
Application Configuration
1. Configure
We recommend using environment variables to configure your application based on the environment, for example:
module.exports = ({ env }) => ({
host: env('HOST', '0.0.0.0'),
port: env.int('PORT', 1337),
});
Then you can create a .env
file or directly set environment variables in your chosen deployment platform:
HOST=10.0.0.1
PORT=1338
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:
- yarn
- npm
- windows
NODE_ENV=production yarn build
NODE_ENV=production npm run build
npm install cross-env
Then in your package.json
scripts section:
"build:win": "cross-env NODE_ENV=production npm run build",
And run:
npm run build:win
Run the server with the production
settings:
- yarn
- npm
- windows
NODE_ENV=production yarn start
NODE_ENV=production npm run start
npm install cross-env
Then in your package.json
scripts section:
"start:win": "cross-env NODE_ENV=production npm start",
And run:
npm run start:win
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');
strapi(/* {...} */).start();
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.
Deployment guides
Click on any of the following cards to read manual guides for deployment and optional software:
☁️ Strapi Cloud
Deploy your project to Strapi Cloud.
🗃️ 3rd-party hosting guides
Deploy your project to various 3rd-party providers.
➕ Optional software guides
Compliment or improve the deployment process when using Strapi in a production environment.
In addition to the deployment guides found here, community-maintained guides for additional providers are available in the Strapi Forum.