Application parameters
Every key on this page is set per application, under system_users[].vhosts[].
A
GUI
key has a field in the interface; a
YAML only
key is set in the
Source (YAML) view, which accepts the same configuration.
Domain and application type
Every application needs at least a domain and a certificate. The application type tells TurboStack which software to provision and configure.
Example - every key in this section, with realistic values:
system_users:
- username: prod
vhosts:
- server_name: example.com www.example.com
app_type: wordpress # leave empty for a plain PHP site
app_install: true # run the installer, not just prepare the config
app_name: shop # only for a second app under the same user
monitoring_url: /health # what uptime monitoring requests
server_name
string GUI required
The domain names this application answers on, separated by spaces. This is the application's address. Without it the application is not reachable.
Note: required. Must be unique across the host.
app_type
string GUI
For example wordpress, magento2, shopware, laravel, odoo, generic - the GUI dropdown lists the values available now.
Tells TurboStack which application to provision, so it applies the right web server rules, caching and file layout. Saves you from configuring the stack by hand for a known application.
Note: leave it empty for a plain PHP site. The GUI dropdown lists the currently supported types.
app_install
boolean YAML only
Default false.
Actually runs the installer for the chosen application type, instead of only preparing the configuration. Get a working installation without downloading and installing the software yourself.
app_name
string GUI
Names a secondary application under the same system user, in its own subfolder. Run several applications under one account, for example a shop and a separate blog.
Note: lowercase letters and digits, starting with a letter, at most 33 characters. Only one application per user may leave this empty.
monitoring_url
string GUI
The URL that uptime monitoring requests for this application. Point monitoring at a health-check endpoint instead of the homepage.
Certificates
Every application gets HTTPS through a Transport Layer Security (TLS) certificate. The certificate source is set per application. See TLS certificates for the full explanation.
Example - every key in this section, with realistic values:
system_users:
- username: prod
vhosts:
- server_name: example.com www.example.com
cert_type: letsencrypt # letsencrypt | selfsigned | custom
cert_challenge: dns # http | dns (dns is needed for wildcards)
cert_provider: cloudflare # hostedpower | cloudflare
cert_cloudflare_api_token: "cf_xxxxxxxxxxxx"
# For a certificate you bought instead of Let's Encrypt:
# cert_type: custom
# cert_fullchain: |
# -----BEGIN CERTIFICATE-----
# cert_pvk: |
# -----BEGIN PRIVATE KEY-----
cert_type
enum GUI required
One of letsencrypt, selfsigned, custom.
Selects where the certificate comes from - issued automatically, self-signed, or supplied by you. Choose letsencrypt for free automatic HTTPS that renews itself, or custom for a certificate you bought.
Note: required once server_name is set.
cert_fullchain
string GUI
The certificate chain, in PEM format, for a certificate you supply yourself. Use a certificate from your own supplier, for example an extended-validation certificate.
Note: only with cert_type: custom. Must match cert_pvk, which is verified before deployment.
cert_pvk
string GUI
The private key, in PEM format, belonging to cert_fullchain. Required alongside your own certificate.
Note: only with cert_type: custom.
Warning
A mismatch between key and certificate stops the deployment.
cert_challenge
enum GUI
One of http, dns. Default http.
How ownership of the domain is proven when a certificate is issued. Domain Name System (DNS) validation is the only way to get a wildcard certificate, and it works before the domain points at the server.
cert_provider
enum GUI
One of hostedpower, cloudflare.
Which DNS provider is used for DNS validation. Lets the platform create the validation record for you automatically.
Note: only with cert_challenge: dns.
cert_cloudflare_api_token
string GUI advanced
The API token used to create the DNS validation record. Needed when your domain is managed at Cloudflare and you use DNS validation.
Note: only with cert_provider: cloudflare.
Runtimes
Each application picks its own runtime and version, so applications on one host can run different versions side by side. Setting the version key is what enables that runtime - there is no separate "enable" key.
Prefer a version that is still supported. Older versions keep working if your application needs them, but they may no longer receive security updates, so plan to upgrade one application at a time. The GUI dropdown always lists the versions available now.
Example - every key in this section, with realistic values:
system_users:
- username: prod
vhosts:
- server_name: example.com
php_version: "8.4" # one runtime per application
# nodejs_version: "24" # Node.js app (usually with proxy_enabled)
# python_version: "3.13" # Python app
# ruby_version: "3.4" # Ruby app
# ruby_start_cmd: bundle exec puma -C config/puma.rb
# ruby_sidekiq: true
# ruby_sidekiq_cmd: bundle exec sidekiq -q default
# dotnet_version: "10.0" # .NET app
docker_enabled: false # run a containerized app
k8s_enabled: false # run Kubernetes workloads
rabbitmq_enabled: false # give this app a message broker
php_version
string GUI
For example 8.2, 8.3, 8.4 - the GUI dropdown lists the values available now.
The PHP version this application runs on, with its own process pool. Match the version your application supports, and upgrade one application at a time.
Note: quote the value, for example "8.4". The GUI dropdown lists the installed versions.
nodejs_version
string GUI
For example 22, 24 - the GUI dropdown lists the values available now.
Installs the given Node.js major version for this application. Run a Node.js application. Setting this key is what enables the runtime.
Note: quote the value, for example "24". Usually combined with proxy_enabled.
python_version
string GUI
For example 3.12, 3.13 - the GUI dropdown lists the values available now.
Installs the given Python version for this application. Run a Python application.
ruby_version
string GUI advanced
For example 3.3, 3.4 - the GUI dropdown lists the values available now.
Installs the given Ruby version for this application. Run a Ruby application such as Rails.
ruby_start_cmd
string GUI advanced
Default: A standard Puma start command.
The command used to start the Ruby application server. Use a different application server than the default.
ruby_sidekiq
boolean GUI advanced
Default false.
Runs a Sidekiq background-worker service for this application. Process background jobs for a Ruby application.
ruby_sidekiq_cmd
string GUI advanced
Overrides the command used to start Sidekiq. Pass your own queue or concurrency options.
dotnet_version
string GUI advanced
For example 8.0, 10.0 - the GUI dropdown lists the values available now.
Installs the given .NET version and runs your application as a service behind the web server. Run a .NET application.
docker_enabled
boolean GUI
Default false.
Allows this application's system user to run containers. Run a containerized application, with the web server proxying to the container.
Note: usually combined with proxy_enabled and proxy_upstream_port.
k8s_enabled
boolean GUI advanced
Default false.
Installs a lightweight Kubernetes orchestrator on the host. Run container workloads that need orchestration.
rabbitmq_enabled
boolean GUI
Default false.
Provisions a message-broker account for this application, and installs the broker on the host if needed. Applications that process work in the background, such as OroCommerce, need a message broker.
Application code from a Git repository
TurboStack can clone a Git repository for an application and update it on every publish, so the code on the server always matches the branch or tag you chose. Add repositories in the interface under Configure application, on the GIT tab.
Example - every key in this section, with realistic values:
system_users:
- username: prod
vhosts:
- server_name: example.com
git:
- repo: git@github.com:example/shop.git
version: main # branch, tag or commit
path: public_html # relative to the account's own folder
git
list GUI
Default empty.
The repositories that are cloned and kept up to date for this application. Deploy from your own repository instead of copying files to the server by hand.
Note: the clone runs as the account that owns the application, so the files get the right owner straight away.
git.repo
string GUI required
The address of the repository to clone, either an HTTPS or an SSH address. Tells the platform where your code lives.
Note: required for every entry. An entry without it is skipped.
git.version
string GUI
Default main.
Which branch, tag or commit is checked out. Follow a branch on a staging host, and pin a production host to a released tag.
git.path
string GUI
Default: The account's own folder.
Where the repository is placed, relative to the account's folder. Put the code straight into the folder the application is served from, for example public_html.
Note: the path is read as relative to the account's folder, so a leading slash is ignored. Leave it empty to clone into the account's folder itself.
Caching and proxying
Use these to put a cache in front of an application, or to publish an application that runs as its own process such as Node.js, Python or a container.
Example - every key in this section, with realistic values:
system_users:
- username: prod
vhosts:
- server_name: example.com
varnish_enabled: true # full-page cache (PHP storefronts)
# For a Node.js/Python/.NET/container app instead:
# proxy_enabled: true
# proxy_upstream_port: 3000 # local port your app listens on
# proxy_upstream_host: 127.0.0.1
varnish_enabled
boolean GUI
Default false.
Puts this application behind the full-page cache. The single biggest speed win for PHP storefronts such as Magento and Shopware.
Note: nothing at host level - turning this on is what installs Varnish on the host, and the platform picks the version. The host keys under Caching and queues only tune it. Do not use this for Node.js applications.
proxy_enabled
boolean GUI
Default false.
Makes the web server forward requests to an application running on a local port. The standard way to publish a Node.js, Python, .NET or containerized application.
proxy_upstream_port
integer port GUI required
Default 3000.
The local port your application listens on. Tells the web server where to send the requests.
Note: required when proxy_enabled is true.
proxy_upstream_host
string GUI advanced
Default 127.0.0.1.
The address the web server forwards to. Only change it when the application runs somewhere other than this server.
PHP tuning
These override the automatically tuned PHP process pool for one application. The defaults suit almost every site - change them only with measured evidence.
Example - every key in this section, with realistic values:
system_users:
- username: prod
vhosts:
- server_name: example.com
php_version: "8.4"
# Override the auto-tuned PHP-FPM pool only with evidence:
php_fpm_pm_max_children: 40
php_fpm_pm_start_servers: 8
php_fpm_pm_min_spare_servers: 5
php_fpm_pm_max_spare_servers: 12
php_fpm_pm_max_requests: 500
php_enhance: true # skip file-change checks (reload after deploy)
php_opcache_preload_script: /var/www/prod/example.com/config/preload.php
php_user_tmp_dir: true # dedicated temp folder for this app
php_fpm_pm_max_children
integer count YAML only advanced
Default: Inherited from the host.
The maximum number of PHP processes this application may run at once. Raise it for a busy application, lower it to stop one application using all the memory.
Warning
Too high a value can exhaust server memory and take down every application on the host.
php_fpm_pm_start_servers
integer count GUI advanced
Default: Inherited from the host.
How many PHP processes are started immediately. Reduces warm-up delay after a restart on a busy application.
php_fpm_pm_min_spare_servers
integer count GUI advanced
Default: Inherited from the host.
The minimum number of idle PHP processes kept ready. Absorbs traffic spikes without waiting for new processes.
php_fpm_pm_max_spare_servers
integer count GUI advanced
Default: Inherited from the host.
The maximum number of idle PHP processes kept ready. Frees memory again after a spike.
php_fpm_pm_max_requests
integer count YAML only advanced
Default: Inherited from the host.
How many requests a PHP process handles before it is recycled. Recycling limits the impact of memory leaks in application code.
php_enhance
boolean YAML only advanced
Default false.
Stops PHP from checking whether source files changed on disk. A real speed gain on production applications that are deployed, not edited live.
Warning
Code changes are ignored until PHP is reloaded. Never use it on a site you edit directly.
php_opcache_preload_script
string GUI advanced
Loads your framework into memory once at startup, instead of on every request. A large speed gain for frameworks that support preloading, such as Symfony and Laravel.
Note: only one application per PHP version may set this, and the file must exist. Otherwise the deployment fails.
php_user_tmp_dir
boolean YAML only advanced
Default false.
Gives this application its own temporary folder instead of the shared one. Keeps sessions and uploads separated between applications on the same host.
Performance monitoring
Connect an external application-performance monitoring product to a single application.
Example - every key in this section, with realistic values:
system_users:
- username: prod
vhosts:
- server_name: example.com
newrelic_appname: "Example production"
newrelic_license: "nr_xxxxxxxxxxxx"
# Tideways instead of, or next to, New Relic:
tideways_apikey: "tw_xxxxxxxxxxxx"
tideways_service: web
tideways_sample_rate: 25
newrelic_appname
string GUI advanced
The name this application reports under in New Relic. Recognise the application in your monitoring dashboard.
newrelic_license
string GUI advanced
The licence key used to send performance data. Enables application performance monitoring for this application only.
tideways_apikey
string GUI advanced
The key used to send profiling data to Tideways. Find slow code paths in a PHP application.
tideways_service
string GUI advanced
The service name this application reports under. Separate several applications in the same Tideways account.
tideways_sample_rate
integer GUI advanced
What percentage of requests is profiled. Lower it to reduce the overhead of profiling on a busy site.