Dokploy

Kestra

Unified Orchestration Platform to Simplify Business-Critical Workflows and Govern them as Code and from the UI.

Kestra logo

Configuration

volumes:
  postgres-data:
    driver: local
  kestra-data:
    driver: local

services:
  postgres:
    image: postgres
    volumes:
      - postgres-data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: kestra
      POSTGRES_USER: kestra
      POSTGRES_PASSWORD: k3str4
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
      interval: 30s
      timeout: 10s
      retries: 10

  kestra:
    image: kestra/kestra:latest
    pull_policy: always
    # Note that this setup with a root user is intended for development purpose.
    # Our base image runs without root, but the Docker Compose implementation needs root to access the Docker socket
    # To run Kestra in a rootless mode in production, see: https://kestra.io/docs/installation/podman-compose
    user: "root"
    command: server standalone
    volumes:
      - kestra-data:/app/storage
      - /var/run/docker.sock:/var/run/docker.sock
      - /tmp/kestra-wd:/tmp/kestra-wd
    environment:
      KESTRA_CONFIGURATION: |
        datasources:
          postgres:
            url: jdbc:postgresql://postgres:5432/kestra
            driverClassName: org.postgresql.Driver
            username: kestra
            password: k3str4
        kestra:
          server:
            basicAuth:
              enabled: false
              username: "[email protected]" # it must be a valid email address
              password: k3str4p@ss
          repository:
            type: postgres
          storage:
            type: local
            local:
              basePath: "/app/storage"
          queue:
            type: postgres
          tasks:
            tmpDir:
              path: /tmp/kestra-wd/tmp
          url: http://localhost:8080/
    ports:
      - "8080"
      - "8081"
    depends_on:
      postgres:
        condition: service_started
[variables]
main_domain = "${domain}"

[config]
[[config.domains]]
serviceName = "kestra"
port = 8080
host = "${main_domain}"


[config.env]

[[config.mounts]]

Base64

To import this template in Dokploy: create a Compose service → AdvancedBase64 import and paste the content below:

ewogICJjb21wb3NlIjogInZvbHVtZXM6XG4gIHBvc3RncmVzLWRhdGE6XG4gICAgZHJpdmVyOiBsb2NhbFxuICBrZXN0cmEtZGF0YTpcbiAgICBkcml2ZXI6IGxvY2FsXG5cbnNlcnZpY2VzOlxuICBwb3N0Z3JlczpcbiAgICBpbWFnZTogcG9zdGdyZXNcbiAgICB2b2x1bWVzOlxuICAgICAgLSBwb3N0Z3Jlcy1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YVxuICAgIGVudmlyb25tZW50OlxuICAgICAgUE9TVEdSRVNfREI6IGtlc3RyYVxuICAgICAgUE9TVEdSRVNfVVNFUjoga2VzdHJhXG4gICAgICBQT1NUR1JFU19QQVNTV09SRDogazNzdHI0XG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OiBbXCJDTUQtU0hFTExcIiwgXCJwZ19pc3JlYWR5IC1kICQke1BPU1RHUkVTX0RCfSAtVSAkJHtQT1NUR1JFU19VU0VSfVwiXVxuICAgICAgaW50ZXJ2YWw6IDMwc1xuICAgICAgdGltZW91dDogMTBzXG4gICAgICByZXRyaWVzOiAxMFxuXG4gIGtlc3RyYTpcbiAgICBpbWFnZToga2VzdHJhL2tlc3RyYTpsYXRlc3RcbiAgICBwdWxsX3BvbGljeTogYWx3YXlzXG4gICAgIyBOb3RlIHRoYXQgdGhpcyBzZXR1cCB3aXRoIGEgcm9vdCB1c2VyIGlzIGludGVuZGVkIGZvciBkZXZlbG9wbWVudCBwdXJwb3NlLlxuICAgICMgT3VyIGJhc2UgaW1hZ2UgcnVucyB3aXRob3V0IHJvb3QsIGJ1dCB0aGUgRG9ja2VyIENvbXBvc2UgaW1wbGVtZW50YXRpb24gbmVlZHMgcm9vdCB0byBhY2Nlc3MgdGhlIERvY2tlciBzb2NrZXRcbiAgICAjIFRvIHJ1biBLZXN0cmEgaW4gYSByb290bGVzcyBtb2RlIGluIHByb2R1Y3Rpb24sIHNlZTogaHR0cHM6Ly9rZXN0cmEuaW8vZG9jcy9pbnN0YWxsYXRpb24vcG9kbWFuLWNvbXBvc2VcbiAgICB1c2VyOiBcInJvb3RcIlxuICAgIGNvbW1hbmQ6IHNlcnZlciBzdGFuZGFsb25lXG4gICAgdm9sdW1lczpcbiAgICAgIC0ga2VzdHJhLWRhdGE6L2FwcC9zdG9yYWdlXG4gICAgICAtIC92YXIvcnVuL2RvY2tlci5zb2NrOi92YXIvcnVuL2RvY2tlci5zb2NrXG4gICAgICAtIC90bXAva2VzdHJhLXdkOi90bXAva2VzdHJhLXdkXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBLRVNUUkFfQ09ORklHVVJBVElPTjogfFxuICAgICAgICBkYXRhc291cmNlczpcbiAgICAgICAgICBwb3N0Z3JlczpcbiAgICAgICAgICAgIHVybDogamRiYzpwb3N0Z3Jlc3FsOi8vcG9zdGdyZXM6NTQzMi9rZXN0cmFcbiAgICAgICAgICAgIGRyaXZlckNsYXNzTmFtZTogb3JnLnBvc3RncmVzcWwuRHJpdmVyXG4gICAgICAgICAgICB1c2VybmFtZToga2VzdHJhXG4gICAgICAgICAgICBwYXNzd29yZDogazNzdHI0XG4gICAgICAgIGtlc3RyYTpcbiAgICAgICAgICBzZXJ2ZXI6XG4gICAgICAgICAgICBiYXNpY0F1dGg6XG4gICAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgICAgIHVzZXJuYW1lOiBcImFkbWluQGxvY2FsaG9zdC5kZXZcIiAjIGl0IG11c3QgYmUgYSB2YWxpZCBlbWFpbCBhZGRyZXNzXG4gICAgICAgICAgICAgIHBhc3N3b3JkOiBrM3N0cjRwQHNzXG4gICAgICAgICAgcmVwb3NpdG9yeTpcbiAgICAgICAgICAgIHR5cGU6IHBvc3RncmVzXG4gICAgICAgICAgc3RvcmFnZTpcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsXG4gICAgICAgICAgICBsb2NhbDpcbiAgICAgICAgICAgICAgYmFzZVBhdGg6IFwiL2FwcC9zdG9yYWdlXCJcbiAgICAgICAgICBxdWV1ZTpcbiAgICAgICAgICAgIHR5cGU6IHBvc3RncmVzXG4gICAgICAgICAgdGFza3M6XG4gICAgICAgICAgICB0bXBEaXI6XG4gICAgICAgICAgICAgIHBhdGg6IC90bXAva2VzdHJhLXdkL3RtcFxuICAgICAgICAgIHVybDogaHR0cDovL2xvY2FsaG9zdDo4MDgwL1xuICAgIHBvcnRzOlxuICAgICAgLSBcIjgwODBcIlxuICAgICAgLSBcIjgwODFcIlxuICAgIGRlcGVuZHNfb246XG4gICAgICBwb3N0Z3JlczpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX3N0YXJ0ZWRcbiIsCiAgImNvbmZpZyI6ICJbdmFyaWFibGVzXVxubWFpbl9kb21haW4gPSBcIiR7ZG9tYWlufVwiXG5cbltjb25maWddXG5bW2NvbmZpZy5kb21haW5zXV1cbnNlcnZpY2VOYW1lID0gXCJrZXN0cmFcIlxucG9ydCA9IDgwODBcbmhvc3QgPSBcIiR7bWFpbl9kb21haW59XCJcblxuXG5bY29uZmlnLmVudl1cblxuW1tjb25maWcubW91bnRzXV1cbiIKfQ==

Tags

automation


Version: latest

On this page