Run Kestra Enterprise Without Docker Using a JAR File

For the complete documentation index, see llms.txt. For a full content snapshot, see llms-full.txt. Append .md to any kestra.io/docs/* URL for plain Markdown.

Available on:Enterprise Edition

To deploy Kestra without Docker, use the standalone JAR — a single executable that runs in any environment with JVM 21+.

Standalone JAR

Download the Kestra EE JAR from https://registry.kestra.io/exe/ using your license ID and fingerprint as Basic auth credentials. Use /exe/latest for the latest release or pin a specific version:

# Latest
curl -u "$LICENSE_ID:$LICENSE_FINGERPRINT" https://registry.kestra.io/exe/latest | funzip > kestra-ee
# Specific version
VERSION=2.0.3
curl -u "$LICENSE_ID:$LICENSE_FINGERPRINT" https://registry.kestra.io/exe/$VERSION | funzip > kestra-ee

This provides a single executable file. Store it in your execution environment as kestra.

Make the file executable (Linux or macOS):

chmod +x kestra-ee-VERSION # Replace VERSION with your version

Or with a file path:

mv kestra-ee-VERSION /usr/local/bin/kestra # Replace with your version and execution environment file path
chmod +x /usr/local/bin/kestra

Then run:

./kestra-ee-VERSION server standalone # Replace VERSION with your version

For Windows users:

java -jar kestra-ee-VERSION # Replace VERSION with your version

Or with a file path assuming execution from the current directory:

java -jar kestra-ee-VERSION server standalone -c ./application.yaml -p ./plugins --port=8080 # Replace VERSION with your version

Plugins

In standalone JAR deployments, all plugins must be downloaded separately.

Install kestractl, then download plugins with kestractl plugins download. Enterprise plugins are served from the Kestra registry, so pass your license credentials:

kestractl plugins download <version> \
--plugins-dir ./plugins \
--maven-repository https://registry.kestra.io/maven \
--maven-username "$KESTRA_LICENSE_ID" \
--maven-password "$KESTRA_LICENSE_FINGERPRINT"

Replace <version> with your Kestra version. This downloads every plugin compatible with that version. To download only selected plugins, pass --compatible-for <version> with one --plugins flag per plugin instead of the version argument. Start Kestra with -p ./plugins or set KESTRA_PLUGINS_PATH to that directory.

The server CLI can also install plugins directly, for example kestra plugins install --all.

Secret and storage plugins

Secret managers and storage backends other than local storage also ship as separate plugins. To list the ones your configuration requires, pass your configuration file to kestractl:

kestractl plugins list <version> --from-config /etc/kestra/application.yaml

Download them into the same plugins directory with the same registry credentials:

kestractl plugins download <version> \
--from-config /etc/kestra/application.yaml \
--plugins-dir ./plugins \
--maven-repository https://registry.kestra.io/maven \
--maven-username "$KESTRA_LICENSE_ID" \
--maven-password "$KESTRA_LICENSE_FINGERPRINT"

See Bootstrap core plugins with --from-config for the supported backends.

Enterprise deployment configuration

For the full list of configuration options, refer to the Configuration Reference.

To enable Kestra Enterprise features, configure the following parameters:

Configuration ParameterRequiredDocumentation LinkDescription
Enterprise LicenseYesEnterprise and Advanced FeaturesLicense information for the Kestra instance
Multi-tenancyYesEnterprise and Advanced FeaturesEnables/disables multi-tenancy (required for SCIM)
Secret ManagerYesSecurity and SecretsConfigure a secret manager in RW or RO mode
Encryption KeyYesSecurity and SecretsKey to encrypt inputs/outputs in flows
SecurityNoSecurity and SecretsConfigure Instance Owner (also settable in UI on startup)
User InvitationsNoRuntime and Storage, Observability and NetworkingRequired for email invitations (not needed with LDAP/SCIM)
SSONoSSOConfigure OIDC provider
LDAPNoLDAPConnect to an existing LDAP provider
SCIMNoSCIMSync user/group membership with SCIM 2.0

Starting Kestra

Kestra can be started in standalone mode or in a distributed setup for production.

Ensure a database is configured and your Enterprise credentials are stored in application.yaml.

Standalone server

kestra server standalone -c ./application.yaml -p ./plugins --port=8080

This starts Kestra as a standalone service on port 8080.

Distributed mode

For production, run Kestra in distributed mode for scalability and high availability.

Each component can run independently across servers, with shared access to the same database (no TCP communication is required between components).

Example with all components on one server:

kestra server webserver -c ./application.yaml -p ./plugins --port=8080
kestra server scheduler -c ./application.yaml -p ./plugins --port=8081
kestra server worker -c ./application.yaml -p ./plugins --port=8082
kestra server executor -c ./application.yaml -p ./plugins --port=8083

Was this page helpful?