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 | ‌ | ‌ 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 | `[]` | ‌ 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 | `` | ‌ 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 | ‌ 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 | ‌ 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 | ‌ 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 | ‌ 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 | `` | ‌ 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 | `` | ‌ 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 | `` | ‌ 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 | ‌ | ‌ 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 | `[]` | ‌ 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 | `[]` | ‌ 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 | `[]` | ‌ 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 | `[]` | ‌ 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 | ‌ | ‌ 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.