Server configuration
The ./config/server.js
file is used to define the server configuration for a Strapi application.
Changes to the server.js
file require rebuilding the admin panel. After saving the modified file run either yarn build
or npm run build
in the terminal to implement the changes.
Available options
The ./config/server.js
file can include the following parameters:
Parameter | Description | Type | Default |
---|---|---|---|
host ❗️ Mandatory | Host name | string | localhost |
port ❗️ Mandatory | Port on which the server should be running. | integer | 1337 |
app.keys ❗️ Mandatory | Declare session keys (based on Koa session), which is used by the session middleware for the Users & Permissions plugin and the Documentation plugin. | array of strings | undefined |
socket | Listens on a socket. Host and port are cosmetic when this option is provided and likewise use url to generate proper urls when using this option. This option is useful for running a server without exposing a port and using proxy servers on the same machine (e.g Heroku nginx buildpack) | string | integer | /tmp/nginx.socket |
emitErrors | Enable errors to be emitted to koa when they happen in order to attach custom logic or use error reporting services. | boolean | false |
url | Public url of the server. Required for many different features (ex: reset password, third login providers etc.). Also enables proxy support such as Apache or Nginx, example: https://mywebsite.com/api . The url can be relative, if so, it is used with http://${host}:${port} as the base url. An absolute url is however recommended. | string | '' |
proxy | Proxy configuration | object | |
proxy.global | Defines the proxy agent for all external requests. To be used if the Strapi project is behind a forward proxy. | string | |
proxy.fetch | The proxy for all requests made within strapi.fetch (used for licenses check, telemetry and webhooks) | string | ProxyAgent.Options | |
proxy.http | The proxy for all (non-fetch) http requests | string | |
proxy.https | The proxy for all (non-fetch) https requests | string | |
proxy.koa | Set the koa variable app.proxy . When true , proxy header fields will be trusted. | boolean | false |
cron | Cron configuration (powered by node-schedule ) | object | |
cron.enabled | Enable or disable CRON jobs to schedule jobs at specific dates. | boolean | false |
cron.tasks | Declare CRON jobs to be run at specific dates. | object | |
dirs | Path configuration of different directories Strapi uses. | object | |
dirs.public | Customize the path of the public folder. | string | ./public |
http | Configuration of the http server used by Strapi | object | |
http.serverOptions | Options passed to http createServer | http.serverOptions | |
transfer.remote.enabled | Toggle the ability to use the transfer feature | boolean | true |
logger.startup.enabled | Toggle the the startup message in the terminal | boolean | true |
logger.updates.enabled | Toggle the notification message about updating strapi in the terminal | boolean | true |
Configurations
The ./config/server.js
minimal configuration requires the host
and port
parameters for development. Additional parameters can be included for a full configuration.
Environmental configurations (i.e. using the env()
helper) do not need to contain all the values so long as they exist in the default ./config/server.js
.
The default configuration created with any new project should at least include the following:
- Minimal configuration
- Full configuration
- JavaScript
- TypeScript
module.exports = ({ env }) => ({
host: env('HOST', '0.0.0.0'),
port: env.int('PORT', 1337),
app: {
keys: env.array('APP_KEYS'),
},
});
export default ({ env }) => ({
host: env('HOST', '0.0.0.0'),
port: env.int('PORT', 1337),
app: {
keys: env.array('APP_KEYS'),
},
});
The following is an example of a full configuration file. Not all of these keys are required (see available options).
- JavaScript
- TypeScript
module.exports = ({ env }) => ({
host: env('HOST', '0.0.0.0'),
port: env.int('PORT', 1337),
app: {
keys: env.array('APP_KEYS'),
},
socket: '/tmp/nginx.socket', // only use if absolutely required
emitErrors: false,
url: env('PUBLIC_URL', 'https://api.example.com'),
proxy: env.bool('IS_PROXIED', true),
cron: {
enabled: env.bool('CRON_ENABLED', false),
},
transfer: {
remote: {
enabled: false,
},
},
logger: {
updates: {
enabled: false,
},
startup: {
enabled: false,
},
},
});
export default ({ env }) => ({
host: env('HOST', '0.0.0.0'),
port: env.int('PORT', 1337),
app: {
keys: env.array('APP_KEYS'),
},
socket: '/tmp/nginx.socket', // only use if absolutely required
emitErrors: false,
url: env('PUBLIC_URL', 'https://api.example.com'),
proxy: env.bool('IS_PROXIED', true),
cron: {
enabled: env.bool('CRON_ENABLED', false),
},
transfer: {
remote: {
enabled: false,
},
},
logger: {
updates: {
enabled: false,
},
startup: {
enabled: false,
},
},
});