Install Only Selected Plugins in Kestra Open Source
Install a selection of Kestra plugins in the open-source version.
Install only selected Plugins in Kestra Open Source
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-pluginsDocker 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 Open Source
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:LATESTThis 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, 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/storageOption 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:latestdocker cp kestra-temp:/app/plugins/. ./local-pluginsdocker rm -f kestra-tempThen remove unwanted plugins:
rm ./local-plugins/*unwanted-plugin*.jarAnd mount your plugin folder:
volumes: - ./local-plugins:/app/pluginsYou 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 {}'"Plugin versioning in Enterprise
In Kestra Open Source, 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?