Standalone Server
Install Kestra on a standalone server with a simple executable file.
Overview
To deploy Kestra without Docker, there's a standalone JAR available that allows deployment in any environment that has JVM version 21+.
Make sure that you have Java installed on your machine.
The latest JAR can be downloaded via Kestra API.
This is an executable JAR:
- For Linux & MacOS, run it with
./kestra-VERSION <command>. - For Windows, rename the file
./kestra-VERSIONto./kestra-VERSION.bat, and run it fromCMD.
For example, to launch Kestra:
- In local mode (with an H2 local file database), you run
./kestra-VERSION server local. - In standalone mode (you need to provide a configuration with a connection to a database) , you run
./kestra-VERSION server standalone.
For more information on database configuration, check out the configuration reference
Running the jar version comes without any plugins. You need to install them manually with the kestra plugins install directory_with_plugins/ command. Alternatively, point to a directory with the plugins in the configuration file or an environment variable KESTRA_PLUGINS_PATH (e.g., KESTRA_PLUGINS_PATH=/Users/anna/dev/plugins).
Configuration
You can configure Kestra in multiple ways:
- Configuration file – point to a YAML file with
--config(or-c). - Environment variable – set the entire YAML payload in
KESTRA_CONFIGURATION.
Example using a dedicated file:
./kestra server local --config confs/application.yaml
By default, Kestra looks for ${HOME}/.kestra/config.yaml. Use absolute paths for clarity if the config lives elsewhere.
When using KESTRA_CONFIGURATION, ensure a confs/ directory exists in the working directory: Kestra persists the generated configuration file there on startup. Quote multi-line values (as shown in the Docker deployment guide) so the YAML structure remains intact.
Configuration options are available in the Configuration Reference. You can also review the default settings on GitHub.
Deploy as a systemd service
On systemd-based systems, Kestra can be deployed as a systemd service. Below is a basic unit file template:
[Unit]
Description=Kestra Event-Driven Declarative Orchestrator
Documentation=https://kestra.io/docs/
After=network-online.target
[Service]
Type=simple
ExecStart=/bin/sh <PATH_TO_YOUR_KESTRA_JAR>/kestra-<VERSION> server standalone
User=<KESTRA_UNIX_USER>
Group=<KESTRA_UNIX_GROUP>
RestartSec=5
Restart=always
# Send SIGTERM to the main Kestra process and wait up to 'TimeoutStopSec' for child processes in the cgroup to finish;
# if there are any remaining running processes in the cgroup, send SIGKILL to all of them.
KillMode=mixed
TimeoutStopSec=150
# Treat received SIGTERM as 'inactive'
SuccessExitStatus=143
# The syslog tag
SyslogIdentifier=kestra
[Install]
WantedBy=multi-user.target
Install plugins from a Docker image
To copy the plugins from a Docker container to your local machine, you can use the following commands:
id=$(docker create kestra/kestra:develop)
docker cp $id:/app/kestra kestra
docker cp $id:/app/plugins plugins
docker rm $id
./kestra server local
Installation on Windows
Below are the steps to launch a Standalone Kestra server on Windows:
- Install Java JRE 21 -- use the
x64version in the MSI format. - Go to the Releases page on the main Kestra repository.
- Select the desired version and download the binary from the
Assetssection. - Rename the downloaded file to
kestra.bat. - Install the plugins you need from the following list using the command
kestra.bat plugins install io.kestra.plugin:plugin-script-powershell:LATEST io.kestra.plugin:plugin-script-python:LATESTor copy the plugins from a Docker container to your local machine, as described in the section above. - Start the server using the command
kestra.bat server local.
Was this page helpful?