Full Example Configuration
This is a "maxed‑out" example showing how to configure all services. Adjust values to your environment.
# 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