github.com/drud/ddev@v1.21.5-alpha1.0.20230226034409-94fcc4b94453/docs/content/users/configuration/config.md (about)

     1  # Config Options
     2  
     3  DDEV configuration is stored in YAML files that come in two flavors:
     4  
     5  1. :octicons-file-directory-16: **Project** `.ddev/config.yaml` settings, with optional [environmental override](#environmental-overrides) variants.
     6  2. :octicons-globe-16: **Global** `$HOME/.ddev/global_config.yaml` settings that can apply to all projects.
     7  
     8  Most of these settings take effect when you run [`ddev start`](../usage/commands.md#start).
     9  
    10  ## Managing Configuration
    11  
    12  ### Setting Options
    13  
    14  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:
    15  
    16  === "config.yaml"
    17  
    18      ```yaml
    19      php_version: "8.1"
    20      ```
    21  === "`ddev config`"
    22  
    23      ```shell
    24      ddev config --php-version 8.1
    25      ```
    26  
    27      Run `ddev help config` to see all the available config arguments.
    28  
    29  ### Environmental Overrides
    30  
    31  You can override the per-project `config.yaml` with files named `config.*.yaml`, which are gitignored by default and not checked in.
    32  
    33  Many teams use `config.local.yaml` for configuration that’s 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, just on your machine. Or maybe use a different database type.
    34  
    35  For examples, see the [Extending and Customizing Environments](../extend/customization-extendibility.md#extending-configyaml-with-custom-configyaml-files) page.
    36  
    37  ---
    38  
    39  ## `additional_fqdns`
    40  
    41  An array of [extra fully-qualified domain names](../extend/additional-hostnames.md) to be used for a project.
    42  
    43  | Type | Default | Usage
    44  | -- | -- | --
    45  | :octicons-file-directory-16: project | `[]` |
    46  
    47  Example: `additional_fqdns: ["example.com", "sub1.example.com"]` would provide HTTP and HTTPS URLs for `example.com` and `sub1.example.com`.
    48  
    49  !!!warning
    50      Take care with `additional_fqdns`; it adds items to your `/etc/hosts` file which can cause confusion.
    51  
    52  ## `additional_hostnames`
    53  
    54  An array of [extra hostnames](../extend/additional-hostnames.md) to be used for a project.
    55  
    56  | Type | Default | Usage
    57  | -- | -- | --
    58  | :octicons-file-directory-16: project | `[]` |
    59  
    60  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`.
    61  
    62  The wildcard (`*`) setting only works if you’re using DNS to resolve hostnames (default) and connected to the internet.
    63  
    64  ## `composer_root`
    65  
    66  The relative path, from the project root, to the directory containing `composer.json`. (This is where all Composer-related commands are executed.)
    67  
    68  | Type | Default | Usage
    69  | -- | -- | --
    70  | :octicons-file-directory-16: project | |
    71  
    72  ## `composer_version`
    73  
    74  Composer version for the web container and the [`ddev composer`](../usage/commands.md#composer) command.
    75  
    76  | Type | Default | Usage
    77  | -- | -- | --
    78  | :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.
    79  
    80  ## `database`
    81  
    82  The type and version of the database engine the project should use.
    83  
    84  | Type | Default | Usage
    85  | -- | -- | --
    86  | :octicons-file-directory-16: project | MariaDB 10.4 | Can be MariaDB 5.5–10.7, MySQL 5.5–8.0, or PostgreSQL 9–15.<br>See [Database Server Types](../extend/database-types.md) for examples and caveats.
    87  
    88  !!!note
    89      DDEV v1.18 and earlier used `mariadb_version` and `mysql_version`, which are now automatically converted to the `database` format.
    90  
    91  ## `dbimage_extra_packages`
    92  
    93  Extra Debian packages for the project’s database container.
    94  
    95  | Type | Default | Usage
    96  | -- | -- | --
    97  | :octicons-file-directory-16: project | `[]` |
    98  
    99  Example: `dbimage_extra_packages: ["less"]` will add the `less` package when the database container is built.
   100  
   101  ## `default_container_timeout`
   102  
   103  Seconds DDEV will wait for all containers to become ready.
   104  
   105  | Type | Default | Usage
   106  | -- | -- | --
   107  | :octicons-file-directory-16: project | `120` | Can be adjusted to avoid timeouts on slower systems or for huge snapshot restores.
   108  
   109  ## `developer_mode`
   110  
   111  Not currently used.
   112  
   113  | Type | Default | Usage
   114  | -- | -- | --
   115  | :octicons-globe-16: global | `false` | Can `true` or `false`.
   116  
   117  ## `disable_http2`
   118  
   119  Whether to disable http/2 listen in `ddev-router`.
   120  
   121  | Type | Default | Usage
   122  | -- | -- | --
   123  | :octicons-globe-16: global | `false` | Can be `true` or `false`.
   124  
   125  When `true`, nginx will not listen for http/2, but just use http/1.1 SSL. (Some browsers don’t work well with http/2.)
   126  
   127  ## `disable_settings_management`
   128  
   129  Whether to disable CMS-specific settings file management.
   130  
   131  | Type | Default | Usage
   132  | -- | -- | --
   133  | :octicons-file-directory-16: project | `false` | Can be `true` or `false`.
   134  
   135  When `true`, DDEV will not create or update CMS-specific settings files.
   136  
   137  ## `docroot`
   138  
   139  Relative path to the document root containing `index.php` or `index.html`.
   140  
   141  | Type | Default | Usage
   142  | -- | -- | --
   143  | :octicons-file-directory-16: project | automatic | DDEV will attempt to detect this and set it for you, otherwise falling back to the current directory.
   144  
   145  ## `fail_on_hook_fail`
   146  
   147  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.
   148  
   149  | Type | Default | Usage
   150  | -- | -- | --
   151  | :octicons-file-directory-16: project<br>:octicons-globe-16: global | `false` | Can be `true` or `false`.
   152  
   153  ## `hooks`
   154  
   155  DDEV-specific lifecycle [hooks](hooks.md) to be executed.
   156  
   157  | Type | Default | Usage
   158  | -- | -- | --
   159  | :octicons-file-directory-16: project | `` |
   160  
   161  ## `host_db_port`
   162  
   163  Port for binding database server to localhost interface.
   164  
   165  | Type | Default | Usage
   166  | -- | -- | --
   167  | :octicons-file-directory-16: project | automatic |
   168  
   169  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.
   170  
   171  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 sequelpro`, etc., which handle changing ports automatically, as does the sample command `ddev mysqlworkbench`.)
   172  
   173  ## `host_https_port`
   174  
   175  Specific, persistent HTTPS port for direct binding to localhost interface.
   176  
   177  | Type | Default | Usage
   178  | -- | -- | --
   179  | :octicons-file-directory-16: project | automatic |
   180  
   181  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.
   182  
   183  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.
   184  
   185  ## `host_webserver_port`
   186  
   187  Specific, persistent HTTP port for direct binding to localhost interface.
   188  
   189  | Type | Default | Usage
   190  | -- | -- | --
   191  | :octicons-file-directory-16: project | automatic |
   192  
   193  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.
   194  
   195  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.
   196  
   197  ## `instrumentation_opt_in`
   198  
   199  Whether to allow [instrumentation reporting](../usage/diagnostics.md).
   200  
   201  | Type | Default | Usage
   202  | -- | -- | --
   203  | :octicons-globe-16: global | `true` | Can be `true` or `false`.
   204  
   205  When `true`, anonymous usage information is collected via [Segment](https://segment.com).
   206  
   207  ## `internet_detection_timeout_ms`
   208  
   209  Internet detection timeout in milliseconds.
   210  
   211  | Type | Default | Usage
   212  | -- | -- | --
   213  | :octicons-globe-16: global | `1000` (1 second) | Can be any integer.
   214  
   215  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/drud/ddev/issues/2409#issuecomment-662448025).
   216  
   217  ## `letsencrypt_email`
   218  
   219  Email associated with Let’s Encrypt feature. (Works in conjunction with [`use_letsencrypt`](#use_letsencrypt).) (Not currently compatible with Traefik router.)
   220  
   221  | Type | Default | Usage
   222  | -- | -- | --
   223  | :octicons-globe-16: global | `` |
   224  
   225  Set with `ddev config global --letsencrypt-email=me@example.com`. Used with the [casual hosting](../topics/hosting.md) feature.
   226  
   227  ## `mailhog_https_port`
   228  
   229  Port for project’s MailHog HTTPS URL.
   230  
   231  | Type | Default | Usage
   232  | -- | -- | --
   233  | :octicons-file-directory-16: project | `8026` | Can be changed to avoid a port conflict.
   234  
   235  ## `mailhog_port`
   236  
   237  Port for project’s MailHog HTTP URL.
   238  
   239  | Type | Default | Usage
   240  | -- | -- | --
   241  | :octicons-file-directory-16: project | `8025` | Can be changed to avoid a port conflict.
   242  
   243  ## `mutagen_enabled`
   244  
   245  Whether to enable [Mutagen asynchronous caching](../install/performance.md#mutagen) for all projects.
   246  
   247  | Type | Default | Usage
   248  | -- | -- | --
   249  | :octicons-file-directory-16: project<br>:octicons-globe-16: global | `false` | Can be `true` or `false`; only `true` has any effect.
   250  
   251  This overrides NFS mounting as it’s incompatible with NFS.
   252  
   253  ## `name`
   254  
   255  The URL-friendly name DDEV should use to reference the project.
   256  
   257  | Type | Default | Usage
   258  | -- | -- | --
   259  | :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.
   260  
   261  ## `nfs_mount_enabled`
   262  
   263  Whether to use [NFS](../install/performance.md#nfs) to mount the project into the container for performance. (Mostly superseded by [`mutagen_enabled`](#mutagen_enabled).)
   264  
   265  | Type | Default | Usage
   266  | -- | -- | --
   267  | :octicons-file-directory-16: project<br>:octicons-globe-16: global | `false` | Can be `true` or `false`; only `true` has any effect.
   268  
   269  !!!tip "Workstation configuration required!"
   270      See the [NFS section](../install/performance.md#nfs) on the Performance page.
   271  
   272  This is typically a global setting. If it’s ever set in both places, the global config will override the project-specific value.
   273  
   274  ## `ngrok_args`
   275  
   276  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.
   277  
   278  | Type | Default | Usage
   279  | -- | -- | --
   280  | :octicons-file-directory-16: project | `` |
   281  
   282  Example: `--basic-auth username:pass1234`.
   283  
   284  ## `no_bind_mounts`
   285  
   286  Whether to not use Docker bind mounts.
   287  
   288  | Type | Default | Usage
   289  | -- | -- | --
   290  | :octicons-globe-16: global | `false` | Can `true` or `false`.
   291  
   292  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.
   293  
   294  ## `no_project_mount`
   295  
   296  Whether to skip mounting project into web container.
   297  
   298  | Type | Default | Usage
   299  | -- | -- | --
   300  | :octicons-file-directory-16: project | `false` | Can be `true` or `false`.
   301  
   302  !!!warning "Advanced users only!"
   303      When `true`, project will not be mounted by DDEV into the web container. Enables experimentation with alternate file mounting strategies.
   304  
   305  ## `nodejs_version`
   306  
   307  Node.js version for the web container’s “system” version.
   308  
   309  | Type | Default | Usage
   310  | -- | -- | --
   311  | :octicons-file-directory-16: project | current LTS version | Can be `14`, `16`, or `18`.
   312  
   313  `nvm` is also available inside the container and via [`ddev nvm`](../usage/commands.md#nvm), and can be set to any valid version including much older ones.
   314  
   315  ## `omit_containers`
   316  
   317  Containers that should not be loaded automatically for one or more projects.
   318  
   319  | Type | Default | Usage
   320  | -- | -- | --
   321  | :octicons-file-directory-16: project<br>:octicons-globe-16: global | `[]` | **For projects**, can include `db`, `dba`, and `ddev-ssh-agent`.<br>**Globally**, can include `dba` and `ddev-ssh-agent` only.
   322  
   323  Example: `omit_containers: [db, dba, ddev-ssh-agent]` starts the project without a `db` container, phpMyAdmin, 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.
   324  
   325  !!!warning
   326      Omitting the `db` container will cause database-dependent DDEV features to be unstable.
   327  
   328  ## `override_config`
   329  
   330  Whether to override config values instead of merging.
   331  
   332  | Type | Default | Usage
   333  | -- | -- | --
   334  | :octicons-file-directory-16: project | `false` | Can be `true` or `false`.
   335  
   336  When `true`, the `config.*.yaml` file with the option will have its settings *override* rather than *merge with* others. Allows statements like `nfs_mount_enabled: false` or `additional_hostnames: []` to work.
   337  
   338  See [Extending `config.yaml` with Custom `config.*.yaml` Files](../extend/customization-extendibility.md#extending-configyaml-with-custom-configyaml-files).
   339  
   340  ## `php_version`
   341  
   342  The PHP version the project should use.
   343  
   344  | Type | Default | Usage
   345  | -- | -- | --
   346  | :octicons-file-directory-16: project | `8.0` | Can be `5.6`, `7.0`, `7.1`, `7.2`, `7.3`, `7.4`, `8.0`, `8.1`, or `8.2`.
   347  
   348  You can only specify the major version (`7.3`), not a minor version (`7.3.2`), from those explicitly available.
   349  
   350  ## `phpmyadmin_https_port`
   351  
   352  Port for project’s phpMyAdmin HTTPS URL.
   353  
   354  | Type | Default | Usage
   355  | -- | -- | --
   356  | :octicons-file-directory-16: project | `8037` | Can be changed to avoid a port conflict.
   357  
   358  ## `phpmyadmin_port`
   359  
   360  Port for project’s phpMyAdmin HTTP URL.
   361  
   362  | Type | Default | Usage
   363  | -- | -- | --
   364  | :octicons-file-directory-16: project | `8036` | Can be changed to avoid a port conflict.
   365  
   366  ## `project_tld`
   367  
   368  Default TLD to be used for a project’s domains, or globally for all project domains.
   369  
   370  | Type | Default | Usage
   371  | -- | -- | --
   372  | :octicons-file-directory-16: project<br>:octicons-globe-16: global | `ddev.site` | Can be changed to any TLD you’d prefer.
   373  
   374  ## `required_docker_compose_version`
   375  
   376  Specific docker-compose version for download.
   377  
   378  | Type | Default | Usage
   379  | -- | -- | --
   380  | :octicons-globe-16: global | |
   381  
   382  If set to `v2.8.0`, for example, it will download and use that version instead of the expected version for docker-compose.
   383  
   384  !!!warning "Troubleshooting Only!"
   385      This should only be used in specific cases like troubleshooting. Best avoided otherwise.
   386  
   387  ## `router_bind_all_interfaces`
   388  
   389  Whether to bind `ddev-router`'s ports on all network interfaces.
   390  
   391  | Type | Default | Usage
   392  | -- | -- | --
   393  | :octicons-globe-16: global | `false` | Can be `true` or `false`.
   394  
   395  When `true`, `ddev-router` will bind on all network interfaces instead of only `localhost`, exposing DDEV projects to your local network. If you set this to `true`, consider setting `omit_containers: ["dba"]` so phpMyAdmin is not available.
   396  
   397  ## `router_http_port`
   398  
   399  Port for DDEV router’s HTTP traffic.
   400  
   401  | Type | Default | Usage
   402  | -- | -- | --
   403  | :octicons-file-directory-16: project | `80` | Usually changed only if there’s a conflicting process using that port.
   404  
   405  See the [Troubleshooting](../usage/troubleshooting.md#web-server-ports-already-occupied) page for more on addressing port conflicts.
   406  
   407  ## `router_https_port`
   408  
   409  Port for DDEV router’s HTTPS traffic.
   410  
   411  | Type | Default | Usage
   412  | -- | -- | --
   413  | :octicons-file-directory-16: project | `443` | Usually changed only if there’s a conflicting process using that port.
   414  
   415  See the [Troubleshooting](../usage/troubleshooting.md#web-server-ports-already-occupied) page for more on addressing port conflicts.
   416  
   417  ## `simple-formatting`
   418  
   419  Whether to disable most [`ddev list`](../usage/commands.md#list) and [`ddev describe`](../usage/commands.md#describe) table formatting.
   420  
   421  | Type | Default | Usage
   422  | -- | -- | --
   423  | :octicons-globe-16: global | `false` | Can be `true` or `false`.
   424  
   425  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.
   426  
   427  ## `table-style`
   428  
   429  Style for [`ddev list`](../usage/commands.md#list) and [`ddev describe`](../usage/commands.md#describe).
   430  
   431  | Type | Default | Usage
   432  | -- | -- | --
   433  | :octicons-globe-16: global | `default` | Can be `default`, `bold`, and `bright`.
   434  
   435  `bright` is a pleasant, colorful output some people may prefer.
   436  
   437  ## `timezone`
   438  
   439  Timezone for container and PHP configuration.
   440  
   441  | Type | Default | Usage
   442  | -- | -- | --
   443  | :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`.
   444  
   445  ## `type`
   446  
   447  The DDEV-specific project type.
   448  
   449  | Type | Default | Usage
   450  | -- | -- | --
   451  | :octicons-file-directory-16: project | `php` | Can be `backdrop`, `craftcms`, `drupal6`, `drupal7`, `drupal8`, `drupal9`, `drupal10`,  `laravel`, `magento`, `magento2`, `php`, `shopware6`, `typo3`, or `wordpress`.
   452  
   453  The `php` type doesn’t attempt [CMS configuration](../../users/quickstart.md) or settings file management and can work with any project.
   454  
   455  ## `upload_dir`
   456  
   457  Path from the project’s docroot to the user-generated files directory targeted by `ddev import-files`.
   458  
   459  | Type | Default | Usage
   460  | -- | -- | --
   461  | :octicons-file-directory-16: project | |
   462  
   463  ## `use_dns_when_possible`
   464  
   465  Whether to use DNS instead of editing `/etc/hosts`.
   466  
   467  | Type | Default | Usage
   468  | -- | -- | --
   469  | :octicons-file-directory-16: project | `true` | Can be `true` or `false`.
   470  
   471  When `false`, DDEV will always update the `/etc/hosts` file with the project hostname instead of using DNS for name resolution.
   472  
   473  See [Using DDEV Offline](../usage/offline.md).
   474  
   475  ## `use_docker_compose_from_path`
   476  
   477  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.
   478  
   479  | Type | Default | Usage
   480  | -- | -- | --
   481  | :octicons-globe-16: global | `false` | Can `true` or `false`.
   482  
   483  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.
   484  
   485  !!!warning "Troubleshooting Only!"
   486      This should only be used in specific cases like troubleshooting. Best avoided otherwise.
   487  
   488  ## `use_hardened_images`
   489  
   490  Whether to use hardened images for internet deployment.
   491  
   492  | Type | Default | Usage
   493  | -- | -- | --
   494  | :octicons-globe-16: global | `false` | Can `true` or `false`.
   495  
   496  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.
   497  
   498  ## `use_letsencrypt`
   499  
   500  Whether to enable Let’s Encrypt integration. (Works in conjunction with [`letsencrypt_email`](#letsencrypt_email).) (Not currently compatible with Traefik router.)
   501  
   502  | Type | Default | Usage
   503  | -- | -- | --
   504  | :octicons-globe-16: global | `false` | Can `true` or `false`.
   505  
   506  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.
   507  
   508  ## `use_traefik`
   509  
   510  Whether to enable the [traefik router](experimental.md#traefik-router).
   511  
   512  | Type | Default | Usage
   513  | -- | -- | --
   514  | :octicons-globe-16: global | `false` | Can `true` or `false`.
   515  
   516  May also be set via `ddev config global --use-traefik` or `ddev config global --use-traefik=false`.
   517  
   518  ## `web_environment`
   519  
   520  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.)
   521  
   522  | Type | Default | Usage
   523  | -- | -- | --
   524  | :octicons-file-directory-16: project<br>:octicons-globe-16: global | `[]` |
   525  
   526  ## `web_extra_daemons`
   527  
   528  Additional daemons that should [automatically be started in the web container](../extend/customization-extendibility.md#running-extra-daemons-in-the-web-container).
   529  
   530  | Type | Default | Usage
   531  | -- | -- | --
   532  | :octicons-file-directory-16: project | `[]` |
   533  
   534  ## `web_extra_exposed_ports`
   535  
   536  Additional named sets of ports to [expose via `ddev-router`](../extend/customization-extendibility.md#exposing-extra-ports-via-ddev-router).
   537  
   538  | Type | Default | Usage
   539  | -- | -- | --
   540  | :octicons-file-directory-16: project | `[]` |
   541  
   542  ## `webimage`
   543  
   544  The Docker image to use for the web server.
   545  
   546  | Type | Default | Usage
   547  | -- | -- | --
   548  | :octicons-file-directory-16: project | [`drud/ddev-webserver`](https://hub.docker.com/r/drud/ddev-webserver) | Specify your own image based on [drud/ddev-webserver](https://github.com/drud/ddev/tree/master/containers/ddev-webserver).
   549  
   550  !!!warning "Proceed with caution"
   551      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.*`.
   552  
   553  ## `webimage_extra_packages`
   554  
   555  Extra Debian packages for the project’s web container.
   556  
   557  | Type | Default | Usage
   558  | -- | -- | --
   559  | :octicons-file-directory-16: project | `[]` |
   560  
   561  Example: `webimage_extra_packages: [php-yaml, php-bcmath]` will add the `php-yaml` and `php-bcmath` packages when the web container is built.
   562  
   563  ## `webserver_type`
   564  
   565  Which available [web server type](../extend/customization-extendibility.md#changing-web-server-type) should be used.
   566  
   567  | Type | Default | Usage
   568  | -- | -- | --
   569  | :octicons-file-directory-16: project | `nginx-fpm` | Can be `nginx-fpm` or `apache-fpm`.
   570  
   571  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:
   572  
   573  ```yaml
   574  webserver_type: apache-fpm
   575  ```
   576  
   577  Then run the [`ddev restart`](../usage/commands.md#restart) command to have the change take effect.
   578  
   579  ## `working_dir`
   580  
   581  Working directories used by [`ddev exec`](../usage/commands.md#exec) and [`ddev ssh`](../usage/commands.md#ssh).
   582  
   583  | Type | Default | Usage
   584  | -- | -- | --
   585  | :octicons-file-directory-16: project | |
   586  
   587  Example: `working_dir: { web: "/var/www", db: "/etc" }` sets the working directories for the `web` and `db` containers.
   588  
   589  ## `wsl2_no_windows_hosts_mgt`
   590  
   591  (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`.
   592  
   593  | Type | Default | Usage
   594  | -- | -- | --
   595  | :octicons-globe-16: global | `false` | Can `true` or `false`.
   596  
   597  May also be set via `ddev config global --wsl2-no-windows-hosts-mgt` or `ddev config global --wsl2-no-windows-hosts-mgt=false`.
   598  
   599  ## `xdebug_enabled`
   600  
   601  Whether Xdebug should be enabled for [step debugging](../debugging-profiling/step-debugging.md) or [profiling](../debugging-profiling/xdebug-profiling.md).
   602  
   603  | Type | Default | Usage
   604  | -- | -- | --
   605  | :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` commands.
   606  
   607  ## `xdebug_ide_location`
   608  
   609  Adjust Xdebug listen location for WSL2 or in-container.
   610  
   611  | Type | Default | Usage
   612  | -- | -- | --
   613  | :octicons-globe-16: global | `""` | Can be empty (`""`), `"wsl2"`, `"container"`, or an explicit IP address.
   614  
   615  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.