# YAML configuration reference

A host's configuration is one YAML document. This reference lists every key you can set,
what it changes on the server, and why you would use it.

The GUI and the [Source (YAML) view](../../concepts/yaml-view.md) describe the same
configuration, so anything here can also be set through the forms where a field exists.
Keys marked **YAML only** have no field in the GUI.

> [!NOTE]
> Version numbers, application types and similar option lists are not repeated here,
> because they change over time. The GUI dropdown always shows the values available today.

> [!TIP]
> In a hurry? The [configuration recipes](recipes.md) are complete, copy-ready
> configurations for common scenarios - a simple site, an online store, Odoo and more.

## The sections

| Section | What it covers | Keys |
|---|---|---|
| [Applications](applications.md) | The YAML keys you set per application (vhost) - domain, certificate, runtime, code deployment, proxying and per-application tuning. | 43 |
| [Host services](host-services.md) | The YAML keys you set once per host - web server, databases, caching, queues, search, mail and database monitoring. | 61 |
| [Users and access](users-and-access.md) | The YAML keys for system users, their applications, file transfer accounts, extra database users and SSH access. | 14 |
| [Security](security.md) | The YAML keys for TurboShield and the firewall - protection level, bot lists, trusted clients, country rules and ports. | 12 |

## How a host configuration is structured

Host-level keys sit at the top. Below them, `system_users` lists the accounts, and each
account has `vhosts`: its applications. A key belongs to exactly one of those three levels,
which the **Scope** of every key tells you.

```yaml
# Host level: services shared by every application on this server
webserver: nginx
mysql_version: "8.4"
redis_enabled: true

turboshield:
  enabled: true
  level: medium

firewall_whitelist:
  - 203.0.113.10        # office

# The accounts on this server
system_users:
  - username: prod

    # The applications owned by this account
    vhosts:
      - server_name: example.com www.example.com
        app_type: wordpress
        php_version: "8.4"
        cert_type: letsencrypt
        varnish_enabled: true
```

## Keys you will not find here

Some variables appear in server output or in examples elsewhere but cannot be set by you:

- **Computed values.** The platform derives them from what you did set. For example, the
  Node.js runtime is enabled by setting `nodejs_version` on an application, and there is no
  separate key to switch it on.
- **Platform-managed settings.** The system type, monitoring level and backup schedule are
  set by Hosted Power for your server.

## Related

- [The Source (YAML) view](../../concepts/yaml-view.md) - how to open and edit the YAML
- [Publishing changes](../../platform/hosts/publishing.md) - how to apply it
- [API reference](../../api/reference.md) - the same model over HTTP
