github.com/ddev/ddev@v1.23.2-0.20240519125000-d824ffe36ff3/docs/content/users/configuration/config.md (about)

     1  ---
     2  search:
     3    boost: 0.5
     4  ---
     5  
     6  # Config Options
     7  
     8  DDEV configuration is stored in YAML files that come in two flavors:
     9  
    10  1. :octicons-file-directory-16: **Project** `.ddev/config.yaml` settings, with optional [environmental override](#environmental-overrides) variants.
    11  2. :octicons-globe-16: **Global** `$HOME/.ddev/global_config.yaml` settings that can apply to all projects.
    12  
    13  Most of these settings take effect when you run [`ddev start`](../usage/commands.md#start).
    14  
    15  ## Managing Configuration
    16  
    17  ### Setting Options
    18  
    19  You can hand-edit the YAML files DDEV creates for you after running [`ddev config`](../usage/commands.md#config), and you can also define most settings with equivalent CLI arguments:
    20  
    21  === "config.yaml"
    22  
    23      ```yaml
    24      php_version: "8.3"
    25      ```
    26  === "`ddev config`"
    27  
    28      ```shell
    29      ddev config --php-version 8.3
    30      ```
    31  
    32      Run `ddev help config` to see all the available config arguments.
    33  
    34  ### Environmental Overrides
    35  
    36  You can override the per-project `config.yaml` with files named `config.*.yaml`, and files like this are often created by [DDEV add-ons](../extend/additional-services.md). For example, `config.elasticsearch.yaml` in [Elasticsearch add-on](https://github.com/ddev/ddev-elasticsearch) adds additional configuration related to Elasticsearch.
    37  
    38  Many teams use `config.local.yaml` for configuration that is specific to one environment, and not checked into the team’s default `config.yaml`. You might [enable Mutagen](../install/performance.md#mutagen) or [enable NFS](../install/performance.md#nfs) for the project, for example, only on your machine. Or maybe use a different database type. The file `config.local.yaml` is gitignored by default.
    39  
    40  For examples, see the [Extending and Customizing Environments](../extend/customization-extendibility.md#extending-configyaml-with-custom-configyaml-files) page.
    41  
    42  ---
    43  
    44  ## `additional_fqdns`
    45  
    46  An array of [extra fully-qualified domain names](../extend/additional-hostnames.md) to be used for a project.
    47  
    48  | Type | Default | Usage
    49  | -- | -- | --
    50  | :octicons-file-directory-16: project | `[]` | ‌
    51  
    52  Example: `additional_fqdns: ["example.com", "sub1.example.com"]` would provide HTTP and HTTPS URLs for `example.com` and `sub1.example.com`.
    53  
    54  See [Hostnames and Wildcards and DDEV, Oh My!](https://ddev.com/blog/ddev-name-resolution-wildcards/) for more information on DDEV hostname resolution.
    55  
    56  !!!warning
    57      Take care with `additional_fqdns`; it adds items to your `/etc/hosts` file which can cause confusion.
    58  
    59  ## `additional_hostnames`
    60  
    61  An array of [extra hostnames](../extend/additional-hostnames.md) to be used for a project.
    62  
    63  | Type | Default | Usage
    64  | -- | -- | --
    65  | :octicons-file-directory-16: project | `[]` | ‌
    66  
    67  Example: `additional_hostnames: ["somename", "someothername", "*.thirdname"]` would provide HTTP and HTTPS URLs for `somename.ddev.site`, `someothername.ddev.site`, and `one.thirdname.ddev.site` + `two.thirdname.ddev.site`.
    68  
    69  The wildcard (`*.<whatever>`) setting only works if you’re [using DNS to resolve hostnames (default)](#use_dns_when_possible) and connected to the internet and using `ddev.site` as your [`project_tld`](#project_tld).
    70  
    71  See [Hostnames and Wildcards and DDEV, Oh My!](https://ddev.com/blog/ddev-name-resolution-wildcards/) for more information on DDEV hostname resolution.
    72  
    73  ## `bind_all_interfaces`
    74  
    75  When the network interfaces of a project should be exposed to the local network, you can specify `bind_all_interfaces: true` to do that. This is an unusual application, sometimes used to [share projects on a local network](../topics/sharing.md#exposing-a-host-port-and-providing-a-direct-url).
    76  
    77  | Type | Default | Usage
    78  | -- | -- | --
    79  | :octicons-file-directory-16: project | `false` | Can be `true` or `false`.
    80  
    81  ## `composer_root`
    82  
    83  The relative path, from the project root, to the directory containing `composer.json`. (This is where all Composer-related commands are executed.)
    84  
    85  | Type | Default | Usage
    86  | -- | -- | --
    87  | :octicons-file-directory-16: project | &zwnj; | &zwnj;
    88  
    89  ## `composer_version`
    90  
    91  Composer version for the web container and the [`ddev composer`](../usage/commands.md#composer) command.
    92  
    93  | Type | Default | Usage
    94  | -- | -- | --
    95  | :octicons-file-directory-16: project | `2` | Can be `2`, `1`, or empty (`""`) for latest major version at container build time.<br><br>Can also be a minor version like `2.2` for the latest release of that branch, an explicit version like `1.0.22`, or a keyword like `stable`, `preview` or `snapshot`. See Composer documentation.
    96  
    97  ## `corepack_enable`
    98  
    99  Whether to `corepack enable` on Node.js configuration.
   100  
   101  | Type | Default | Usage
   102  | -- | -- | --
   103  | :octicons-file-directory-16: project | `false` | Can be `true` or `false`.
   104  
   105  When `true`, `corepack_enable` will be executed, making latest `yarn` and `pnpm` package managers available.
   106  
   107  ## `database`
   108  
   109  The type and version of the database engine the project should use.
   110  
   111  | Type | Default       | Usage
   112  | -- |---------------| --
   113  | :octicons-file-directory-16: project | MariaDB 10.11 | Can be MariaDB 5.5–10.8 or 10.11, MySQL 5.5–8.0, or PostgreSQL 9–15.<br>See [Database Server Types](../extend/database-types.md) for examples and caveats.
   114  
   115  ## `dbimage_extra_packages`
   116  
   117  Extra Debian packages for the project’s database container. (This is rarely used.)
   118  
   119  | Type | Default | Usage
   120  | -- | -- | --
   121  | :octicons-file-directory-16: project | `[]` | &zwnj;
   122  
   123  Example: `dbimage_extra_packages: ["less"]` will add the `less` package when the database container is built.
   124  
   125  ## `ddev_version_constraint`
   126  
   127  You can configure a [version constraint](https://github.com/Masterminds/semver#checking-version-constraints) for DDEV that will be validated against the running DDEV executable and prevent `ddev start` from running if it doesn't validate. For example:
   128  
   129  ```yaml
   130  ddev_version_constraint: '>=v1.23.0-alpha1'
   131  ```
   132  
   133  This is only supported with DDEV versions above v1.22.4; older DDEV versions will ignore this setting.
   134  
   135  | Type | Default | Usage
   136  | -- | -- | --
   137  | :octicons-file-directory-16: project | | `>= 1.22.4`
   138  
   139  ## `default_container_timeout`
   140  
   141  Seconds DDEV will wait for all containers to become ready.
   142  
   143  | Type | Default | Usage
   144  | -- | -- | --
   145  | :octicons-file-directory-16: project | `120` | Can be adjusted to avoid timeouts on slower systems or for huge snapshot restores.
   146  
   147  ## `developer_mode`
   148  
   149  Not currently used.
   150  
   151  | Type | Default | Usage
   152  | -- | -- | --
   153  | :octicons-globe-16: global | `false` | Can `true` or `false`.
   154  
   155  ## `disable_http2`
   156  
   157  Whether to disable HTTP/2 listen in `ddev-router`.
   158  
   159  | Type | Default | Usage
   160  | -- | -- | --
   161  | :octicons-globe-16: global | `false` | Can be `true` or `false`.
   162  
   163  Only available with legacy `router: nginx-proxy`, not the default `router: traefik`. When `true`, the router will not listen for HTTP/2, but use HTTP/1.1 SSL. (Some browsers don’t work well with HTTP/2.)
   164  
   165  ## `disable_settings_management`
   166  
   167  Whether to disable CMS-specific settings file management.
   168  
   169  | Type | Default | Usage
   170  | -- | -- | --
   171  | :octicons-file-directory-16: project | `false` | Can be `true` or `false`.
   172  
   173  When `true`, DDEV will not create or update CMS-specific settings files.
   174  
   175  ## `disable_upload_dirs_warning`
   176  
   177  Whether to disable the standard warning issued when a project is using `performance_mode: mutagen` but `upload_dirs` is not configured.
   178  
   179  | Type | Default | Usage
   180  | -- | -- | --
   181  | :octicons-file-directory-16: project | `false` | Can be `true` or `false`.
   182  
   183  When `true`, DDEV will not issue the normal warning on `ddev start`: "You have Mutagen enabled and your 'php' project type doesn't have `upload_dirs` set". See [Mutagen and User-Generated Uploads](../install/performance.md#mutagen-and-user-generated-uploads) for context on why DDEV avoids doing the Mutagen sync on `upload_dirs`.
   184  
   185  ## `docroot`
   186  
   187  Relative path to the document root containing `index.php` or `index.html`.
   188  
   189  | Type | Default | Usage
   190  | -- | -- | --
   191  | :octicons-file-directory-16: project | automatic | DDEV will attempt to detect this and set it for you, otherwise falling back to the current directory.
   192  
   193  ## `fail_on_hook_fail`
   194  
   195  Whether [`ddev start`](../usage/commands.md#start) should be interrupted by a failing [hook](../configuration/hooks.md), on a single project or for all projects if used globally.
   196  
   197  | Type | Default | Usage
   198  | -- | -- | --
   199  | :octicons-file-directory-16: project<br>:octicons-globe-16: global | `false` | Can be `true` or `false`.
   200  
   201  ## `hooks`
   202  
   203  DDEV-specific lifecycle [hooks](hooks.md) to be executed.
   204  
   205  | Type | Default | Usage
   206  | -- | -- | --
   207  | :octicons-file-directory-16: project | `` | &zwnj;
   208  
   209  ## `host_db_port`
   210  
   211  Port for binding database server to localhost interface.
   212  
   213  | Type | Default | Usage
   214  | -- | -- | --
   215  | :octicons-file-directory-16: project | automatic | &zwnj;
   216  
   217  Not commonly used. Can be a specific port number for a fixed database port. If unset, the port will be assigned automatically and change each time [`ddev start`](../usage/commands.md#start) is run.
   218  
   219  Can be a specific port number for a fixed database port, which can be useful for configuration of host-side database clients. (May still be easier to use [`ddev mysql`](../usage/commands.md#mysql), `ddev psql`, `ddev sequelace`, etc., which handle changing ports automatically, as does the sample command `ddev mysqlworkbench`.)
   220  
   221  ## `host_https_port`
   222  
   223  Specific, persistent HTTPS port for direct binding to localhost interface.
   224  
   225  | Type | Default | Usage
   226  | -- | -- | --
   227  | :octicons-file-directory-16: project | automatic | &zwnj;
   228  
   229  Not commonly used. Can be a specific port number for a fixed HTTPS URL. If unset, the port will be assigned automatically and change each time [`ddev start`](../usage/commands.md#start) is run.
   230  
   231  Example: `59001` will have the project always use `https://127.0.0.1:59001` for the localhost URL—used less commonly than the named URL which is better to rely on.
   232  
   233  ## `host_mailpit_port`
   234  
   235  Specific, persistent Mailpit port for direct binding to localhost interface.
   236  
   237  | Type | Default | Usage
   238  | -- | -- | --
   239  | :octicons-file-directory-16: project | automatic | &zwnj;
   240  
   241  Not commonly used. Can be a specific port number for a fixed Mailpit URL. If unset, the port will be assigned automatically and change each time [`ddev start`](../usage/commands.md#start) is run.
   242  
   243  ## `host_webserver_port`
   244  
   245  Specific, persistent HTTP port for direct binding to localhost interface.
   246  
   247  | Type | Default | Usage
   248  | -- | -- | --
   249  | :octicons-file-directory-16: project | automatic | &zwnj;
   250  
   251  Not commonly used. Can be a specific port number for a fixed HTTP URL. If unset, the port will be assigned automatically and change each time [`ddev start`](../usage/commands.md#start) is run.
   252  
   253  Example: `59000` will have the project always use `http://127.0.0.1:59000` for the localhost URL—used less commonly than the named URL which is better to rely on.
   254  
   255  ## `instrumentation_opt_in`
   256  
   257  Whether to allow [instrumentation reporting](../usage/diagnostics.md).
   258  
   259  | Type | Default | Usage
   260  | -- | -- | --
   261  | :octicons-globe-16: global | `true` | Can be `true` or `false`.
   262  
   263  When `true`, anonymous usage information is collected via [Amplitude](https://amplitude.com/).
   264  
   265  ## `instrumentation_queue_size`
   266  
   267  Maximum number of locally collected events for [instrumentation reporting](../usage/diagnostics.md).
   268  
   269  | Type | Default | Usage
   270  | -- | -- | --
   271  | :octicons-globe-16: global | `100` | Can be any integer.
   272  
   273  ## `instrumentation_reporting_interval`
   274  
   275  Reporting interval in hours for [instrumentation reporting](../usage/diagnostics.md).
   276  
   277  | Type | Default | Usage
   278  | -- | -- | --
   279  | :octicons-globe-16: global | `24` | Can be any integer.
   280  
   281  ## `instrumentation_user`
   282  
   283  Specific name identifier for [instrumentation reporting](../usage/diagnostics.md).
   284  
   285  | Type | Default | Usage
   286  | -- | -- | --
   287  | :octicons-globe-16: global | `` | &zwnj;
   288  
   289  ## `internet_detection_timeout_ms`
   290  
   291  Internet detection timeout in milliseconds.
   292  
   293  | Type | Default | Usage
   294  | -- | -- | --
   295  | :octicons-globe-16: global | `3000` (3 seconds) | Can be any integer.
   296  
   297  DDEV must detect whether the internet is working to determine whether to add hostnames to `/etc/hosts`. In rare cases, you may need to increase this value if you have slow but working internet. See [FAQ](../usage/faq.md) and [GitHub issue](https://github.com/ddev/ddev/issues/2409#issuecomment-662448025).
   298  
   299  ## `letsencrypt_email`
   300  
   301  Email associated with Let’s Encrypt feature. (Works in conjunction with [`use_letsencrypt`](#use_letsencrypt).) (Not currently compatible with Traefik router.)
   302  
   303  | Type | Default | Usage
   304  | -- | -- | --
   305  | :octicons-globe-16: global | `` | &zwnj;
   306  
   307  Set with `ddev config global --letsencrypt-email=me@example.com`. Used with the [casual hosting](../topics/hosting.md) feature.
   308  
   309  ## `mailpit_http_port`
   310  
   311  Port for project’s Mailpit HTTP URL.
   312  
   313  | Type | Default | Usage
   314  | -- | -- | --
   315  | :octicons-file-directory-16: project<br>:octicons-globe-16: global | `8025` | Can be changed to avoid a port conflict.
   316  
   317  ## `mailpit_https_port`
   318  
   319  Port for project’s Mailpit HTTPS URL.
   320  
   321  | Type | Default | Usage
   322  | -- | -- | --
   323  | :octicons-file-directory-16: project<br>:octicons-globe-16: global | `8026` | Can be changed to avoid a port conflict.
   324  
   325  ## `messages`
   326  
   327  Configure messages like the Tip of the Day.
   328  
   329  | Type | Default | Usage
   330  | -- | -- | --
   331  | :octicons-globe-16: global | `ticker_interval:` | hours between ticker messages.
   332  
   333  Example: Disable the "Tip of the Day" ticker in `~/.ddev/global_config.yaml`
   334  
   335  ```yaml
   336  messages:
   337    ticker_interval: -1
   338  ```
   339  
   340  Example: Show the "Tip of the Day" ticket every two hours:
   341  
   342  ```yaml
   343  messages:
   344    ticker_interval: 2
   345  ```
   346  
   347  ## `name`
   348  
   349  The URL-friendly name DDEV should use to reference the project.
   350  
   351  | Type | Default | Usage
   352  | -- | -- | --
   353  | :octicons-file-directory-16: project | enclosing directory name | Must be unique; no two projects can have the same name. It’s best if this matches the directory name. If this option is omitted, the project will take the name of the enclosing directory. This value may also be set via `ddev config --project-name=<name>`. (The `ddev config` flag is `project-name`, not `name`, see [`ddev config` docs](../usage/commands.md#config).)"
   354  
   355  ## `ngrok_args`
   356  
   357  Extra flags for [configuring ngrok](https://ngrok.com/docs/ngrok-agent/config) when [sharing projects](../topics/sharing.md) with the [`ddev share`](../usage/commands.md#share) command.
   358  
   359  | Type | Default | Usage
   360  | -- | -- | --
   361  | :octicons-file-directory-16: project | `` | &zwnj;
   362  
   363  Example: `--basic-auth username:pass1234 --domain foo.ngrok-free.app`.
   364  
   365  ## `no_bind_mounts`
   366  
   367  Whether to not use Docker bind mounts.
   368  
   369  | Type | Default | Usage
   370  | -- | -- | --
   371  | :octicons-globe-16: global | `false` | Can `true` or `false`.
   372  
   373  Some Docker environments (like remote Docker) do not allow bind mounts, so when `true` this turns those off, turns on Mutagen, and uses volume copies to do what bind mounts would otherwise do.
   374  
   375  ## `no_project_mount`
   376  
   377  Whether to skip mounting project into web container.
   378  
   379  | Type | Default | Usage
   380  | -- | -- | --
   381  | :octicons-file-directory-16: project | `false` | Can be `true` or `false`.
   382  
   383  !!!warning "Advanced users only!"
   384      When `true`, project will not be mounted by DDEV into the web container. Enables experimentation with alternate file mounting strategies.
   385  
   386  ## `nodejs_version`
   387  
   388  Node.js version for the web container’s “system” version.
   389  
   390  | Type | Default | Usage
   391  | -- | -- | --
   392  | :octicons-file-directory-16: project | current LTS version | any [node version](https://www.npmjs.com/package/n#specifying-nodejs-versions), like `16`, `18.2`, `18.19.2`, etc.
   393  
   394  There is no need to configure `nodejs_version` unless you want a version other than the default version.
   395  
   396  ## `omit_containers`
   397  
   398  Containers that should not be loaded automatically for one or more projects.
   399  
   400  | Type | Default | Usage
   401  | -- | -- | --
   402  | :octicons-file-directory-16: project<br>:octicons-globe-16: global | `[]` | **For projects**, can include `db`, and `ddev-ssh-agent`.<br>**Globally**, can include `ddev-router`, and `ddev-ssh-agent`.
   403  
   404  Example: `omit_containers: [db, ddev-ssh-agent]` starts the project without a `db` container and SSH agent. Some containers can be omitted globally in `~/.ddev/global_config.yaml` and the result is additive; all containers named in both places will be omitted.
   405  
   406  !!!warning
   407      Omitting the `db` container will cause database-dependent DDEV features to be unstable.
   408  
   409  ## `override_config`
   410  
   411  Whether to override config values instead of merging.
   412  
   413  | Type | Default | Usage
   414  | -- | -- | --
   415  | :octicons-file-directory-16: project | `false` | Can be `true` or `false`.
   416  
   417  When `true`, the `config.*.yaml` file with the option will have its settings *override* rather than *merge with* others. Allows statements like `use_dns_when_possible: false` or `additional_hostnames: []` to work.
   418  
   419  See [Extending `config.yaml` with Custom `config.*.yaml` Files](../extend/customization-extendibility.md#extending-configyaml-with-custom-configyaml-files).
   420  
   421  ## `performance_mode`
   422  
   423  Defines the performance optimization mode to be used. Currently [Mutagen asynchronous caching](../install/performance.md#mutagen) and [NFS](../install/performance.md#nfs) are supported. Mutagen is enabled by default on Mac and Windows.
   424  
   425  | Type | Default | Usage
   426  | -- | -- | --
   427  | :octicons-file-directory-16: project<br>:octicons-globe-16: global | `` | Can be `global`, `none`, `mutagen`, or `nfs`.
   428  
   429  This is typically a global setting. The project-specific value will override global config.
   430  
   431  !!!tip "Workstation configuration is required to use NFS!"
   432      See the [NFS section](../install/performance.md#nfs) on the Performance page.
   433  
   434  ## `php_version`
   435  
   436  The PHP version the project should use.
   437  
   438  | Type | Default | Usage
   439  | -- |---------| --
   440  | :octicons-file-directory-16: project | `8.2`   | Can be `5.6`, `7.0`, `7.1`, `7.2`, `7.3`, `7.4`, `8.0`, `8.1`, `8.2`, or `8.3`.
   441  
   442  You can only specify the major version (`7.3`), not a minor version (`7.3.2`), from those explicitly available.
   443  
   444  ## `project_tld`
   445  
   446  Default Top-Level-Domain (`TLD`) to be used for a project’s domains, or globally for all project domains. This defaults to `ddev.site` and it's easiest to work with DDEV using the default setting.
   447  
   448  | Type | Default | Usage
   449  | -- | -- | --
   450  | :octicons-file-directory-16: project<br>:octicons-globe-16: global | `ddev.site` | Can be changed to any TLD you’d prefer.
   451  
   452  See [Hostnames and Wildcards and DDEV, Oh My!](https://ddev.com/blog/ddev-name-resolution-wildcards/) for more information on DDEV hostname resolution.
   453  
   454  ## `required_docker_compose_version`
   455  
   456  Specific docker-compose version for download.
   457  
   458  | Type | Default | Usage
   459  | -- | -- | --
   460  | :octicons-globe-16: global | &zwnj; | &zwnj;
   461  
   462  If set to `v2.8.0`, for example, it will download and use that version instead of the expected version for docker-compose.
   463  
   464  !!!warning "Troubleshooting Only!"
   465      This should only be used in specific cases like troubleshooting. Best avoided otherwise.
   466  
   467  ## `router`
   468  
   469  Whether to enable the default [Traefik router](../extend/traefik-router.md) or the legacy "nginx-proxy" router.
   470  
   471  | Type | Default | Usage
   472  | -- | -- | --
   473  | :octicons-globe-16: global | `traefik` | Can `traefik` or `nginx-proxy` (legacy).
   474  
   475  May also be set via `ddev config global --router=traefik` or `ddev config global --router=nginx-proxy`.
   476  
   477  ## `router_bind_all_interfaces`
   478  
   479  Whether to bind `ddev-router`'s ports on all network interfaces.
   480  
   481  | Type | Default | Usage
   482  | -- | -- | --
   483  | :octicons-globe-16: global | `false` | Can be `true` or `false`.
   484  
   485  When `true`, the router will bind on all network interfaces instead of only `localhost`, exposing DDEV projects to your local network. This is sometimes used to share projects on a local network, see [Sharing Your Project](../topics/sharing.md).
   486  
   487  ## `router_http_port`
   488  
   489  Port for DDEV router’s HTTP traffic.
   490  
   491  | Type | Default | Usage
   492  | -- | -- | --
   493  | :octicons-file-directory-16: project<br>:octicons-globe-16: global | `80` | Usually changed only if there’s a conflicting process using that port.
   494  
   495  See the [Troubleshooting](../usage/troubleshooting.md#web-server-ports-already-occupied) page for more on addressing port conflicts.
   496  
   497  ## `router_https_port`
   498  
   499  Port for DDEV router’s HTTPS traffic.
   500  
   501  | Type | Default | Usage
   502  | -- | -- | --
   503  | :octicons-file-directory-16: project<br>:octicons-globe-16: global | `443` | Usually changed only if there’s a conflicting process using that port.
   504  
   505  See the [Troubleshooting](../usage/troubleshooting.md#web-server-ports-already-occupied) page for more on addressing port conflicts.
   506  
   507  ## `simple_formatting`
   508  
   509  Whether to disable most [`ddev list`](../usage/commands.md#list) and [`ddev describe`](../usage/commands.md#describe) table formatting.
   510  
   511  | Type | Default | Usage
   512  | -- | -- | --
   513  | :octicons-globe-16: global | `false` | Can be `true` or `false`. If you don't like the table lines in `ddev list` or `ddev describe`, you can completely turn them off with `ddev config --simple-formatting=true`.
   514  
   515  When `true`, turns off most table formatting in [`ddev list`](../usage/commands.md#list) and [`ddev describe`](../usage/commands.md#describe) and suppresses colorized text everywhere.
   516  
   517  ## `table_style`
   518  
   519  Style for [`ddev list`](../usage/commands.md#list) and [`ddev describe`](../usage/commands.md#describe).
   520  
   521  | Type | Default | Usage
   522  | -- | -- | --
   523  | :octicons-globe-16: global | `default` | Can be `default`, `bold`, and `bright`.
   524  
   525  `bright` is a pleasant, colorful output some people may prefer. If you don't like the table lines at all, you can remove them with `ddev config --simple-formatting=true`.
   526  
   527  ## `timezone`
   528  
   529  Timezone for container and PHP configuration.
   530  
   531  | Type | Default | Usage
   532  | -- | -- | --
   533  | :octicons-file-directory-16: project | `UTC` | Can be any [valid timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones), like `Europe/Dublin` or `MST7MDT`.
   534  
   535  ## `traefik_monitor_port`
   536  
   537  Specify an alternate port for the Traefik (ddev-router) monitor port. This defaults to 10999 and rarely needs to be changed, but can be changed in cases of port conflicts.
   538  
   539  | Type | Default | Usage
   540  | -- | -- | --
   541  | :octicons-globe-16: global | `10999` | Can be any unused port below 65535.
   542  
   543  ## `type`
   544  
   545  The DDEV-specific project type.
   546  
   547  | Type | Default | Usage
   548  | -- | -- | --
   549  | :octicons-file-directory-16: project | `php` | Can be `backdrop`, `craftcms`, `django4`, `drupal6`, `drupal7`, `drupal`,  `laravel`, `magento`, `magento2`, `php`, `python`, `shopware6`, `silverstripe`, `typo3`, or `wordpress`.
   550  
   551  The `php` and `python` types don’t attempt [CMS configuration](../../users/quickstart.md) or settings file management and can work with any project.
   552  
   553  The former DDEV project types `drupal8`, `drupal9`, and `drupal10` can still be manually specified; by using `drupal` instead, DDEV will autodetect the correct type and its corresponding settings.
   554  
   555  ## `upload_dirs`
   556  
   557  Paths from the project’s docroot to the user-generated files directory targeted by `ddev import-files`. Can be outside the docroot but must be within the project directory e.g. `../private`. Some CMSes and frameworks have default `upload_dirs`, like Drupal's `sites/default/files`; `upload_dirs` will override the defaults, so if you want Drupal to use both `sites/default/files` and `../private` you would list both, `upload_dirs: ["sites/default/files", "../private"]`. `upload_dirs` is used for targeting `ddev import-files` and also, when Mutagen is enabled, to bind-mount those directories so their contents does not need to be synced into Mutagen.
   558  
   559  If you do not have directories of static assets of this type, or they are small and you don't care about them, you can disable the warning `You have Mutagen enabled and your 'php' project type doesn't have upload_dirs set.` by setting [`disable_upload_dirs_warning`](#disable_upload_dirs_warning) with `ddev config --disable-upload-dirs-warning`.
   560  
   561  | Type | Default | Usage
   562  | -- | -- | --
   563  | :octicons-file-directory-16: project | | A list of directories.
   564  
   565  ## `use_dns_when_possible`
   566  
   567  Whether to use DNS instead of editing `/etc/hosts`.
   568  
   569  | Type | Default | Usage
   570  | -- | -- | --
   571  | :octicons-file-directory-16: project | `true` | Can be `true` or `false`.
   572  
   573  When `false`, DDEV will always update the `/etc/hosts` file with the project hostname instead of using DNS for name resolution.
   574  
   575  See [Using DDEV Offline](../usage/offline.md).
   576  
   577  ## `use_docker_compose_from_path`
   578  
   579  Whether to use the system-installed docker-compose. You can otherwise use [`required_docker_compose_version`](#required_docker_compose_version) to specify a version for download.
   580  
   581  | Type | Default | Usage
   582  | -- | -- | --
   583  | :octicons-globe-16: global | `false` | Can `true` or `false`.
   584  
   585  When `true`, DDEV will use the docker-compose found in on your system’s path instead of using its private, known-good, docker-compose version.
   586  
   587  !!!warning "Troubleshooting Only!"
   588      This should only be used in specific cases like troubleshooting. Best avoided otherwise.
   589  
   590  ## `use_hardened_images`
   591  
   592  Whether to use hardened images for internet deployment.
   593  
   594  | Type | Default | Usage
   595  | -- | -- | --
   596  | :octicons-globe-16: global | `false` | Can `true` or `false`.
   597  
   598  When `true`, more secure hardened images are used for an internet deployment. These do not include sudo in the web container, and the container is run without elevated privileges. Generally used with the [casual hosting](../topics/hosting.md) feature.
   599  
   600  ## `use_letsencrypt`
   601  
   602  Whether to enable Let’s Encrypt integration. (Works in conjunction with [`letsencrypt_email`](#letsencrypt_email).) (Not currently compatible with Traefik router.)
   603  
   604  | Type | Default | Usage
   605  | -- | -- | --
   606  | :octicons-globe-16: global | `false` | Can `true` or `false`.
   607  
   608  May also be set via `ddev config global --use-letsencrypt` or `ddev config global --use-letsencrypt=false`. When `true`, `letsencrypt_email` must also be set and the system must be available on the internet. Used with the [casual hosting](../topics/hosting.md) feature.
   609  
   610  ## `web_environment`
   611  
   612  Additional [custom environment variables](../extend/customization-extendibility.md#providing-custom-environment-variables-to-a-container) for a project’s web container. (Or for all projects if used globally.)
   613  
   614  | Type | Default | Usage
   615  | -- | -- | --
   616  | :octicons-file-directory-16: project<br>:octicons-globe-16: global | `[]` | &zwnj;
   617  
   618  ## `web_extra_daemons`
   619  
   620  Additional daemons that should [automatically be started in the web container](../extend/customization-extendibility.md#running-extra-daemons-in-the-web-container).
   621  
   622  | Type | Default | Usage
   623  | -- | -- | --
   624  | :octicons-file-directory-16: project | `[]` | &zwnj;
   625  
   626  ## `web_extra_exposed_ports`
   627  
   628  Additional named sets of ports to [expose via `ddev-router`](../extend/customization-extendibility.md#exposing-extra-ports-via-ddev-router).
   629  
   630  | Type | Default | Usage
   631  | -- | -- | --
   632  | :octicons-file-directory-16: project | `[]` | &zwnj;
   633  
   634  ## `webimage`
   635  
   636  The Docker image to use for the web server.
   637  
   638  | Type | Default | Usage
   639  | -- | -- | --
   640  | :octicons-file-directory-16: project | [`ddev/ddev-webserver`](https://hub.docker.com/r/ddev/ddev-webserver) | Specify your own image based on [ddev/ddev-webserver](https://github.com/ddev/ddev/tree/master/containers/ddev-webserver).
   641  
   642  !!!warning "Proceed with caution"
   643      It’s unusual to change this, and we don’t recommend it without Docker experience and a good reason. Typically, this means additions to the existing web image using a `.ddev/web-build/Dockerfile.*`.
   644  
   645  ## `webimage_extra_packages`
   646  
   647  Extra Debian packages for the project’s web container.
   648  
   649  | Type | Default | Usage
   650  | -- | -- | --
   651  | :octicons-file-directory-16: project | `[]` | &zwnj;
   652  
   653  Example: `webimage_extra_packages: [php-yaml, php-bcmath]` will add the `php-yaml` and `php-bcmath` packages when the web container is built.
   654  
   655  ## `webserver_type`
   656  
   657  Which available [web server type](../extend/customization-extendibility.md#changing-web-server-type) should be used.
   658  
   659  | Type | Default | Usage
   660  | -- | -- | --
   661  | :octicons-file-directory-16: project | `nginx-fpm` | Can be `nginx-fpm`, `apache-fpm`, or `nginx-gunicorn`.
   662  
   663  To change from the default `nginx-fpm` to `apache-fpm`, for example, you would need to edit your project’s `.ddev/config.yaml` to include the following:
   664  
   665  ```yaml
   666  webserver_type: apache-fpm
   667  ```
   668  
   669  Then run the [`ddev restart`](../usage/commands.md#restart) command to have the change take effect.
   670  
   671  ## `working_dir`
   672  
   673  Working directories used by [`ddev exec`](../usage/commands.md#exec) and [`ddev ssh`](../usage/commands.md#ssh).
   674  
   675  | Type | Default | Usage
   676  | -- | -- | --
   677  | :octicons-file-directory-16: project | &zwnj; | &zwnj;
   678  
   679  Example: `working_dir: { web: "/var/www", db: "/etc" }` sets the working directories for the `web` and `db` containers.
   680  
   681  ## `wsl2_no_windows_hosts_mgt`
   682  
   683  (WSL2 only) Whether to disable the management and checking of the Windows hosts file. By default, when using WSL2, DDEV manages the system-wide hosts file on the Windows side (normally `C:\Windows\system32\drivers\etc\hosts`) by using `ddev.exe` installed on the *Windows* side. This normally works better for all applications, including browsers and IDEs. However, this behavior can be disabled by setting `wsl_no_windows_hosts_mgt: true`.
   684  
   685  | Type | Default | Usage
   686  | -- | -- | --
   687  | :octicons-globe-16: global | `false` | Can `true` or `false`.
   688  
   689  May also be set via `ddev config global --wsl2-no-windows-hosts-mgt` or `ddev config global --wsl2-no-windows-hosts-mgt=false`.
   690  
   691  ## `xdebug_enabled`
   692  
   693  Whether Xdebug should be enabled for [step debugging](../debugging-profiling/step-debugging.md) or [profiling](../debugging-profiling/xdebug-profiling.md).
   694  
   695  | Type | Default | Usage
   696  | -- | -- | --
   697  | :octicons-file-directory-16: project | `false` | Please leave this `false` in most cases. Most people use [`ddev xdebug`](../usage/commands.md#xdebug) and `ddev xdebug off` (or `ddev xdebug toggle`) commands.
   698  
   699  ## `xdebug_ide_location`
   700  
   701  Adjust Xdebug listen location for WSL2 or in-container. This is used very rarely. Ask for help in one of our [support channels](../support.md) before changing it unless you understand its use completely.
   702  
   703  | Type | Default | Usage
   704  | -- | -- | --
   705  | :octicons-globe-16: global | `""` | Can be empty (`""`), `"wsl2"`, `"container"`, or an explicit IP address.
   706  
   707  For PhpStorm running inside WSL2 (or JetBrains Gateway), use `"wsl2"`. For in-container like VS Code Language Server, set to `"container"`. It can also be set to an explicit IP address.
   708  
   709  Examples:
   710  
   711  * `xdebug_ide_location: 172.16.0.2` when you need to provide an explicit IP address where the IDE is listening. This is very unusual.
   712  * `xdebug_ide_location: container` when the IDE is actually listening inside the `ddev-webserver` container. This is only done very occasionally with obscure vscode setups like VS Code Language Server.
   713  * `xdebug_ide_location: wsl2` when an IDE is running (or listening) in WSL2. This is the situation when running an IDE directly inside WSL2 instead of running it on Windows.