Install Only Selected Plugins in Kestra OSS
Install a selection of Kestra plugins in the open-source (OSS) version.
Pick and choose Kestra plugins to create lightweight builds and achieve a faster startup. This guide explains how to:
- Install specific plugins when using the
-no-plugins
Docker image - Understand plugin versioning across Open-source and Enterprise
- Automate plugin installation using Docker Compose
- Link to plugin documentation and versioning support
See also: Versioned Plugins in Kestra Enterprise.
Plugin Basics in Kestra OSS
Kestra plugins are distributed as individual JAR files and loaded at runtime. Plugins are not embedded by default in -no-plugins
Docker images. You can:
- Download specific plugin JARs manually or via
kestra plugins install
. - Mount them into
/app/plugins/
in your Docker Compose setup.
Install Plugins via kestra plugins install
You can install any plugin using:
kestra plugins install io.kestra.plugin:plugin-dbt:LATEST
This will download the plugin JAR from Maven Central into /app/plugins
. Just replace plugin-dbt
with whichever plugin you'd like to download (e.g., plugin-script-python
, plugin-aws
, plugin-notifications
, etc.)
You can run this inside a container (interactively or as part of Dockerfile) to build custom plugin bundles.
Automate Plugin Selection with Docker Compose
If you're using the kestra/kestra:*-no-plugins
image and want to add only selected plugins:
Option 1: Use kestra plugins install
inside the container
services:
kestra:
image: kestra/kestra:latest-no-plugins
entrypoint: /bin/sh -c "
kestra plugins install io.kestra.plugin:plugin-dbt:LATEST && \
kestra plugins install io.kestra.plugin:plugin-scripts:LATEST && \
kestra server standalone"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./storage:/app/storage
Option 2: Preload plugin JARs locally
You can copy only the JARs you need from a full Kestra image:
docker run --rm -d --name kestra-temp kestra/kestra:latest
docker cp kestra-temp:/app/plugins ./local-plugins
docker rm -f kestra-temp
Then remove unwanted plugins:
rm ./local-plugins/*unwanted-plugin*.jar
And mount your plugin folder:
volumes:
- ./local-plugins:/app/plugins
You may also use a scripted alias to automate this process. Below is an example for referral:
alias dl="rm -rf ./jar-plugins/* && docker run -d kestra/kestra:develop server local \
| xargs -I {} sh -c 'docker cp {}:/app/plugins ./jar-plugins && docker rm -f {}'"
4. Plugin Versioning in Enterprise
In Kestra OSS, plugins must be installed at the latest compatible version. In Kestra Enterprise, you can:
- Pin specific plugin versions
- Upload custom plugin binaries per tenant
- Enable version-aware workflows
Learn more about versioned plugins in Enterprise: Versioned Plugins
Best Practices
Use Case | Recommendation |
---|---|
Minimal runtime image | Use kestra/kestra:*-no-plugins with mounted JARs |
Dynamic plugin setup | Use kestra plugins install in entrypoint |
Controlled plugin versions | Use Enterprise with versioned plugins |
Custom plugin development | Build and copy plugins into /app/plugins/ manually |
Was this page helpful?