# Full Example Configuration

This is a "maxed‑out" example showing how to configure all services.
Adjust values to your environment.

```yaml
# Swap space in MB (0 = disabled, default)
swap_size_mb: 2048

# Users (non-sudo)
users:
  - deploy
  - app

# SSH keys (added to root and all configured users)
ssh_keys:
  - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... user@example.com"

# Webserver selection
webserver:
  enable: true
  type: nginx        # nginx | apache | caddy

# PHP settings
php:
  enable: true
  extra_packages:
    - gd
    - intl
    - mbstring

# MySQL settings
mysql:
  enable: true
  bind_address: 127.0.0.1
  innodb_buffer_pool_size: 3G
  group_concat_max_len: 320000
  slow_query_log: true
  long_query_time: 2

# Redis settings
redis:
  enable: true
  type: redis

# Elasticsearch / OpenSearch settings (choose one)
elasticsearch:
  enable: true
  type: elasticsearch    # elasticsearch | opensearch
  repo_major: 8          # 8 for elasticsearch, 2 for opensearch
  # version: "8.12.2"

# New Relic settings
newrelic:
  enable: true
  license_key: "YOUR_LICENSE_KEY"
  app_name: "my-host"

# Blackfire settings
blackfire:
  enable: true
  server_id: "YOUR_SERVER_ID"
  server_token: "YOUR_SERVER_TOKEN"
  client_id: "YOUR_CLIENT_ID"
  client_token: "YOUR_CLIENT_TOKEN"

# Apps
apps:
  - name: shop
    type: php
    domain: "shop.example.com www.shop.example.com"
    user: deploy
    php_version: "8.3"
    subtype: shopware6
    web_root: /var/www/deploy/shop
    acme_root: /var/www/letsencrypt
    cert: letsencrypt
    letsencrypt_email: admin@example.com
    php_fpm:
      max_children: 40
      start_servers: 20
      min_spare_servers: 10
      max_spare_servers: 20
      max_requests: 500
      status_path: /php-fpm-status
      ping_path: /php-fpm-ping
    backup_dirs:
      - /var/www/deploy/shop/shared
    database:
      name: shop_db
      user: shop_user
    cronjobs:
      - name: "Run scheduler"
        job: "php /var/www/shop/artisan schedule:run >> /var/log/shop-cron.log 2>&1"
        schedule: "* * * * *"

  - name: api
    type: proxy
    domain: "api.example.com www.api.example.com"
    user: app
    proxy_upstream: "http://127.0.0.1:3000"
    acme_root: /var/www/letsencrypt
    cert: letsencrypt
    letsencrypt_email: admin@example.com
    cronjobs:
      - name: "Cleanup temp"
        job: "/usr/local/bin/cleanup-temp"
        schedule: "0 3 * * *"

  - name: pmm
    type: pmm
    domain: "pmm.example.com"
    user: deploy
    pmm_image: "percona/pmm-server:3"
    pmm_data_dir: "/var/lib/pmm-pmm"
    pmm_container_name: "pmm-pmm"
    pmm_https_port: 9443
    acme_root: /var/www/letsencrypt
    cert: letsencrypt
    letsencrypt_email: admin@example.com
```
