Dokploy

Budibase

Budibase is an open-source low-code platform that saves engineers 100s of hours building forms, portals, and approval apps, securely.

Budibase logo

Configuration

services:

  apps:
    image: budibase/apps:3.23.47
    restart: unless-stopped
    environment:
      SELF_HOSTED: 1
      LOG_LEVEL: info
      PORT: 4002
      INTERNAL_API_KEY: ${BB_INTERNAL_API_KEY}
      API_ENCRYPTION_KEY: ${BB_API_ENCRYPTION_KEY}
      JWT_SECRET: ${BB_JWT_SECRET}
      MINIO_ACCESS_KEY: ${BB_MINIO_ACCESS_KEY}
      MINIO_SECRET_KEY: ${BB_MINIO_SECRET_KEY}
      MINIO_URL: http://minio:9000
      REDIS_URL: redis:6379
      REDIS_PASSWORD: ${BB_REDIS_PASSWORD}
      WORKER_URL: http://worker:4003
      COUCH_DB_USERNAME: budibase
      COUCH_DB_PASSWORD: ${BB_COUCHDB_PASSWORD}
      COUCH_DB_URL: http://budibase:${BB_COUCHDB_PASSWORD}@couchdb:5984
      BUDIBASE_ENVIRONMENT: ${BUDIBASE_ENVIRONMENT:-PRODUCTION}
      ENABLE_ANALYTICS: ${ENABLE_ANALYTICS:-true}
      BB_ADMIN_USER_EMAIL: ''
      BB_ADMIN_USER_PASSWORD: ''
    depends_on:
      worker:
        condition: service_healthy
      redis:
        condition: service_healthy
    healthcheck:
      test:
        - CMD
        - wget
        - '--spider'
        - '-qO-'
        - 'http://localhost:4002/health'
      interval: 15s
      timeout: 15s
      retries: 5
      start_period: 10s

  worker:
    image: budibase/worker:3.23.47
    restart: unless-stopped
    environment:
      SELF_HOSTED: 1
      LOG_LEVEL: info
      PORT: 4003
      CLUSTER_PORT: 10000
      INTERNAL_API_KEY: ${BB_INTERNAL_API_KEY}
      API_ENCRYPTION_KEY: ${BB_API_ENCRYPTION_KEY}
      JWT_SECRET: ${BB_JWT_SECRET}
      MINIO_ACCESS_KEY: ${BB_MINIO_ACCESS_KEY}
      MINIO_SECRET_KEY: ${BB_MINIO_SECRET_KEY}
      APPS_URL: http://apps:4002
      MINIO_URL: http://minio:9000
      REDIS_URL: redis:6379
      REDIS_PASSWORD: ${BB_REDIS_PASSWORD}
      COUCH_DB_USERNAME: budibase
      COUCH_DB_PASSWORD: ${BB_COUCHDB_PASSWORD}
      COUCH_DB_URL: http://budibase:${BB_COUCHDB_PASSWORD}@couchdb:5984
      BUDIBASE_ENVIRONMENT: ${BUDIBASE_ENVIRONMENT:-PRODUCTION}
      ENABLE_ANALYTICS: ${ENABLE_ANALYTICS:-true}
    depends_on:
      redis:
        condition: service_healthy
      minio:
        condition: service_healthy
    healthcheck:
      test:
        - CMD
        - wget
        - '--spider'
        - '-qO-'
        - 'http://localhost:4003/health'
      interval: 15s
      timeout: 15s
      retries: 5
      start_period: 10s

  minio:
    image: minio/minio:RELEASE.2025-09-07T16-13-09Z
    restart: unless-stopped
    volumes:
      - 'minio_data:/data'
    environment:
      MINIO_ROOT_USER: ${BB_MINIO_ACCESS_KEY}
      MINIO_ROOT_PASSWORD: ${BB_MINIO_SECRET_KEY}
      MINIO_BROWSER: off
    command: 'server /data --console-address ":9001"'
    healthcheck:
      test:
        - CMD
        - curl
        - '-f'
        - 'http://localhost:9000/minio/health/live'
      interval: 30s
      timeout: 20s
      retries: 3

  proxy:
    image: budibase/proxy:3.23.47
    restart: unless-stopped
    environment:
      PROXY_RATE_LIMIT_WEBHOOKS_PER_SECOND: 10
      PROXY_RATE_LIMIT_API_PER_SECOND: 20
      APPS_UPSTREAM_URL: http://apps:4002
      WORKER_UPSTREAM_URL: http://worker:4003
      MINIO_UPSTREAM_URL: http://minio:9000
      COUCHDB_UPSTREAM_URL: http://couchdb:5984
      WATCHTOWER_UPSTREAM_URL: http://watchtower:8080
      RESOLVER: 127.0.0.11
    depends_on:
      minio:
        condition: service_healthy
      worker:
        condition: service_healthy
      apps:
        condition: service_healthy
      couchdb:
        condition: service_healthy
    healthcheck:
      test:
        - CMD
        - curl
        - '-f'
        - 'http://localhost:10000/'
      interval: 15s
      timeout: 15s
      retries: 5
      start_period: 10s

  couchdb:
    image: budibase/couchdb:v3.3.3
    restart: unless-stopped
    environment:
      COUCHDB_USER: budibase
      COUCHDB_PASSWORD: ${BB_COUCHDB_PASSWORD}
      TARGETBUILD: docker-compose
    healthcheck:
      test:
        - CMD
        - curl
        - '-f'
        - 'http://localhost:5984/'
      interval: 15s
      timeout: 15s
      retries: 5
      start_period: 10s
    volumes:
      - 'couchdb3_data:/opt/couchdb/data'

  redis:
    image: redis:8.4-alpine
    restart: unless-stopped
    command: 'redis-server --requirepass "${BB_REDIS_PASSWORD}"'
    volumes:
      - 'redis_data:/data'
    healthcheck:
      test:
        - CMD
        - redis-cli
        - '-a'
        - ${BB_REDIS_PASSWORD}
        - ping
      interval: 15s
      timeout: 15s
      retries: 5
      start_period: 10s


volumes:
  minio_data:
  couchdb3_data:
  redis_data:
[variables]
main_domain = "${domain}"
api_key = "${password:32}"
encryption_key = "${password:32}"
jwt_secret = "${password:32}"
couchdb_password = "${password:32}"
redis_password = "${password:32}"
minio_access_key = "${password:32}"
minio_secret_key = "${password:32}"
watchtower_password = "${password:32}"

[config]
env = [
  "BB_HOST=${main_domain}",
  "BB_INTERNAL_API_KEY=${api_key}",
  "BB_API_ENCRYPTION_KEY=${encryption_key}",
  "BB_JWT_SECRET=${jwt_secret}",
  "BB_COUCHDB_PASSWORD=${couchdb_password}",
  "BB_REDIS_PASSWORD=${redis_password}",
  "BB_WATCHTOWER_PASSWORD=${watchtower_password}",
  "BB_MINIO_ACCESS_KEY=${minio_access_key}",
  "BB_MINIO_SECRET_KEY=${minio_secret_key}",
]
mounts = []

[[config.domains]]
serviceName = "proxy"
port = 10_000
host = "${main_domain}"

Base64

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

ewogICJjb21wb3NlIjogInNlcnZpY2VzOlxuXG4gIGFwcHM6XG4gICAgaW1hZ2U6IGJ1ZGliYXNlL2FwcHM6My4yMy40N1xuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBTRUxGX0hPU1RFRDogMVxuICAgICAgTE9HX0xFVkVMOiBpbmZvXG4gICAgICBQT1JUOiA0MDAyXG4gICAgICBJTlRFUk5BTF9BUElfS0VZOiAke0JCX0lOVEVSTkFMX0FQSV9LRVl9XG4gICAgICBBUElfRU5DUllQVElPTl9LRVk6ICR7QkJfQVBJX0VOQ1JZUFRJT05fS0VZfVxuICAgICAgSldUX1NFQ1JFVDogJHtCQl9KV1RfU0VDUkVUfVxuICAgICAgTUlOSU9fQUNDRVNTX0tFWTogJHtCQl9NSU5JT19BQ0NFU1NfS0VZfVxuICAgICAgTUlOSU9fU0VDUkVUX0tFWTogJHtCQl9NSU5JT19TRUNSRVRfS0VZfVxuICAgICAgTUlOSU9fVVJMOiBodHRwOi8vbWluaW86OTAwMFxuICAgICAgUkVESVNfVVJMOiByZWRpczo2Mzc5XG4gICAgICBSRURJU19QQVNTV09SRDogJHtCQl9SRURJU19QQVNTV09SRH1cbiAgICAgIFdPUktFUl9VUkw6IGh0dHA6Ly93b3JrZXI6NDAwM1xuICAgICAgQ09VQ0hfREJfVVNFUk5BTUU6IGJ1ZGliYXNlXG4gICAgICBDT1VDSF9EQl9QQVNTV09SRDogJHtCQl9DT1VDSERCX1BBU1NXT1JEfVxuICAgICAgQ09VQ0hfREJfVVJMOiBodHRwOi8vYnVkaWJhc2U6JHtCQl9DT1VDSERCX1BBU1NXT1JEfUBjb3VjaGRiOjU5ODRcbiAgICAgIEJVRElCQVNFX0VOVklST05NRU5UOiAke0JVRElCQVNFX0VOVklST05NRU5UOi1QUk9EVUNUSU9OfVxuICAgICAgRU5BQkxFX0FOQUxZVElDUzogJHtFTkFCTEVfQU5BTFlUSUNTOi10cnVlfVxuICAgICAgQkJfQURNSU5fVVNFUl9FTUFJTDogJydcbiAgICAgIEJCX0FETUlOX1VTRVJfUEFTU1dPUkQ6ICcnXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIHdvcmtlcjpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHlcbiAgICAgIHJlZGlzOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgIGhlYWx0aGNoZWNrOlxuICAgICAgdGVzdDpcbiAgICAgICAgLSBDTURcbiAgICAgICAgLSB3Z2V0XG4gICAgICAgIC0gJy0tc3BpZGVyJ1xuICAgICAgICAtICctcU8tJ1xuICAgICAgICAtICdodHRwOi8vbG9jYWxob3N0OjQwMDIvaGVhbHRoJ1xuICAgICAgaW50ZXJ2YWw6IDE1c1xuICAgICAgdGltZW91dDogMTVzXG4gICAgICByZXRyaWVzOiA1XG4gICAgICBzdGFydF9wZXJpb2Q6IDEwc1xuXG4gIHdvcmtlcjpcbiAgICBpbWFnZTogYnVkaWJhc2Uvd29ya2VyOjMuMjMuNDdcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGVudmlyb25tZW50OlxuICAgICAgU0VMRl9IT1NURUQ6IDFcbiAgICAgIExPR19MRVZFTDogaW5mb1xuICAgICAgUE9SVDogNDAwM1xuICAgICAgQ0xVU1RFUl9QT1JUOiAxMDAwMFxuICAgICAgSU5URVJOQUxfQVBJX0tFWTogJHtCQl9JTlRFUk5BTF9BUElfS0VZfVxuICAgICAgQVBJX0VOQ1JZUFRJT05fS0VZOiAke0JCX0FQSV9FTkNSWVBUSU9OX0tFWX1cbiAgICAgIEpXVF9TRUNSRVQ6ICR7QkJfSldUX1NFQ1JFVH1cbiAgICAgIE1JTklPX0FDQ0VTU19LRVk6ICR7QkJfTUlOSU9fQUNDRVNTX0tFWX1cbiAgICAgIE1JTklPX1NFQ1JFVF9LRVk6ICR7QkJfTUlOSU9fU0VDUkVUX0tFWX1cbiAgICAgIEFQUFNfVVJMOiBodHRwOi8vYXBwczo0MDAyXG4gICAgICBNSU5JT19VUkw6IGh0dHA6Ly9taW5pbzo5MDAwXG4gICAgICBSRURJU19VUkw6IHJlZGlzOjYzNzlcbiAgICAgIFJFRElTX1BBU1NXT1JEOiAke0JCX1JFRElTX1BBU1NXT1JEfVxuICAgICAgQ09VQ0hfREJfVVNFUk5BTUU6IGJ1ZGliYXNlXG4gICAgICBDT1VDSF9EQl9QQVNTV09SRDogJHtCQl9DT1VDSERCX1BBU1NXT1JEfVxuICAgICAgQ09VQ0hfREJfVVJMOiBodHRwOi8vYnVkaWJhc2U6JHtCQl9DT1VDSERCX1BBU1NXT1JEfUBjb3VjaGRiOjU5ODRcbiAgICAgIEJVRElCQVNFX0VOVklST05NRU5UOiAke0JVRElCQVNFX0VOVklST05NRU5UOi1QUk9EVUNUSU9OfVxuICAgICAgRU5BQkxFX0FOQUxZVElDUzogJHtFTkFCTEVfQU5BTFlUSUNTOi10cnVlfVxuICAgIGRlcGVuZHNfb246XG4gICAgICByZWRpczpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHlcbiAgICAgIG1pbmlvOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgIGhlYWx0aGNoZWNrOlxuICAgICAgdGVzdDpcbiAgICAgICAgLSBDTURcbiAgICAgICAgLSB3Z2V0XG4gICAgICAgIC0gJy0tc3BpZGVyJ1xuICAgICAgICAtICctcU8tJ1xuICAgICAgICAtICdodHRwOi8vbG9jYWxob3N0OjQwMDMvaGVhbHRoJ1xuICAgICAgaW50ZXJ2YWw6IDE1c1xuICAgICAgdGltZW91dDogMTVzXG4gICAgICByZXRyaWVzOiA1XG4gICAgICBzdGFydF9wZXJpb2Q6IDEwc1xuXG4gIG1pbmlvOlxuICAgIGltYWdlOiBtaW5pby9taW5pbzpSRUxFQVNFLjIwMjUtMDktMDdUMTYtMTMtMDlaXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICB2b2x1bWVzOlxuICAgICAgLSAnbWluaW9fZGF0YTovZGF0YSdcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIE1JTklPX1JPT1RfVVNFUjogJHtCQl9NSU5JT19BQ0NFU1NfS0VZfVxuICAgICAgTUlOSU9fUk9PVF9QQVNTV09SRDogJHtCQl9NSU5JT19TRUNSRVRfS0VZfVxuICAgICAgTUlOSU9fQlJPV1NFUjogb2ZmXG4gICAgY29tbWFuZDogJ3NlcnZlciAvZGF0YSAtLWNvbnNvbGUtYWRkcmVzcyBcIjo5MDAxXCInXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OlxuICAgICAgICAtIENNRFxuICAgICAgICAtIGN1cmxcbiAgICAgICAgLSAnLWYnXG4gICAgICAgIC0gJ2h0dHA6Ly9sb2NhbGhvc3Q6OTAwMC9taW5pby9oZWFsdGgvbGl2ZSdcbiAgICAgIGludGVydmFsOiAzMHNcbiAgICAgIHRpbWVvdXQ6IDIwc1xuICAgICAgcmV0cmllczogM1xuXG4gIHByb3h5OlxuICAgIGltYWdlOiBidWRpYmFzZS9wcm94eTozLjIzLjQ3XG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIFBST1hZX1JBVEVfTElNSVRfV0VCSE9PS1NfUEVSX1NFQ09ORDogMTBcbiAgICAgIFBST1hZX1JBVEVfTElNSVRfQVBJX1BFUl9TRUNPTkQ6IDIwXG4gICAgICBBUFBTX1VQU1RSRUFNX1VSTDogaHR0cDovL2FwcHM6NDAwMlxuICAgICAgV09SS0VSX1VQU1RSRUFNX1VSTDogaHR0cDovL3dvcmtlcjo0MDAzXG4gICAgICBNSU5JT19VUFNUUkVBTV9VUkw6IGh0dHA6Ly9taW5pbzo5MDAwXG4gICAgICBDT1VDSERCX1VQU1RSRUFNX1VSTDogaHR0cDovL2NvdWNoZGI6NTk4NFxuICAgICAgV0FUQ0hUT1dFUl9VUFNUUkVBTV9VUkw6IGh0dHA6Ly93YXRjaHRvd2VyOjgwODBcbiAgICAgIFJFU09MVkVSOiAxMjcuMC4wLjExXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIG1pbmlvOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgICAgd29ya2VyOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgICAgYXBwczpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHlcbiAgICAgIGNvdWNoZGI6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OlxuICAgICAgICAtIENNRFxuICAgICAgICAtIGN1cmxcbiAgICAgICAgLSAnLWYnXG4gICAgICAgIC0gJ2h0dHA6Ly9sb2NhbGhvc3Q6MTAwMDAvJ1xuICAgICAgaW50ZXJ2YWw6IDE1c1xuICAgICAgdGltZW91dDogMTVzXG4gICAgICByZXRyaWVzOiA1XG4gICAgICBzdGFydF9wZXJpb2Q6IDEwc1xuXG4gIGNvdWNoZGI6XG4gICAgaW1hZ2U6IGJ1ZGliYXNlL2NvdWNoZGI6djMuMy4zXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIENPVUNIREJfVVNFUjogYnVkaWJhc2VcbiAgICAgIENPVUNIREJfUEFTU1dPUkQ6ICR7QkJfQ09VQ0hEQl9QQVNTV09SRH1cbiAgICAgIFRBUkdFVEJVSUxEOiBkb2NrZXItY29tcG9zZVxuICAgIGhlYWx0aGNoZWNrOlxuICAgICAgdGVzdDpcbiAgICAgICAgLSBDTURcbiAgICAgICAgLSBjdXJsXG4gICAgICAgIC0gJy1mJ1xuICAgICAgICAtICdodHRwOi8vbG9jYWxob3N0OjU5ODQvJ1xuICAgICAgaW50ZXJ2YWw6IDE1c1xuICAgICAgdGltZW91dDogMTVzXG4gICAgICByZXRyaWVzOiA1XG4gICAgICBzdGFydF9wZXJpb2Q6IDEwc1xuICAgIHZvbHVtZXM6XG4gICAgICAtICdjb3VjaGRiM19kYXRhOi9vcHQvY291Y2hkYi9kYXRhJ1xuXG4gIHJlZGlzOlxuICAgIGltYWdlOiByZWRpczo4LjQtYWxwaW5lXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBjb21tYW5kOiAncmVkaXMtc2VydmVyIC0tcmVxdWlyZXBhc3MgXCIke0JCX1JFRElTX1BBU1NXT1JEfVwiJ1xuICAgIHZvbHVtZXM6XG4gICAgICAtICdyZWRpc19kYXRhOi9kYXRhJ1xuICAgIGhlYWx0aGNoZWNrOlxuICAgICAgdGVzdDpcbiAgICAgICAgLSBDTURcbiAgICAgICAgLSByZWRpcy1jbGlcbiAgICAgICAgLSAnLWEnXG4gICAgICAgIC0gJHtCQl9SRURJU19QQVNTV09SRH1cbiAgICAgICAgLSBwaW5nXG4gICAgICBpbnRlcnZhbDogMTVzXG4gICAgICB0aW1lb3V0OiAxNXNcbiAgICAgIHJldHJpZXM6IDVcbiAgICAgIHN0YXJ0X3BlcmlvZDogMTBzXG5cblxudm9sdW1lczpcbiAgbWluaW9fZGF0YTpcbiAgY291Y2hkYjNfZGF0YTpcbiAgcmVkaXNfZGF0YTogXG4iLAogICJjb25maWciOiAiW3ZhcmlhYmxlc11cbm1haW5fZG9tYWluID0gXCIke2RvbWFpbn1cIlxuYXBpX2tleSA9IFwiJHtwYXNzd29yZDozMn1cIlxuZW5jcnlwdGlvbl9rZXkgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcbmp3dF9zZWNyZXQgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcbmNvdWNoZGJfcGFzc3dvcmQgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcbnJlZGlzX3Bhc3N3b3JkID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5taW5pb19hY2Nlc3Nfa2V5ID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5taW5pb19zZWNyZXRfa2V5ID0gXCIke3Bhc3N3b3JkOjMyfVwiXG53YXRjaHRvd2VyX3Bhc3N3b3JkID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5cbltjb25maWddXG5lbnYgPSBbXG4gIFwiQkJfSE9TVD0ke21haW5fZG9tYWlufVwiLFxuICBcIkJCX0lOVEVSTkFMX0FQSV9LRVk9JHthcGlfa2V5fVwiLFxuICBcIkJCX0FQSV9FTkNSWVBUSU9OX0tFWT0ke2VuY3J5cHRpb25fa2V5fVwiLFxuICBcIkJCX0pXVF9TRUNSRVQ9JHtqd3Rfc2VjcmV0fVwiLFxuICBcIkJCX0NPVUNIREJfUEFTU1dPUkQ9JHtjb3VjaGRiX3Bhc3N3b3JkfVwiLFxuICBcIkJCX1JFRElTX1BBU1NXT1JEPSR7cmVkaXNfcGFzc3dvcmR9XCIsXG4gIFwiQkJfV0FUQ0hUT1dFUl9QQVNTV09SRD0ke3dhdGNodG93ZXJfcGFzc3dvcmR9XCIsXG4gIFwiQkJfTUlOSU9fQUNDRVNTX0tFWT0ke21pbmlvX2FjY2Vzc19rZXl9XCIsXG4gIFwiQkJfTUlOSU9fU0VDUkVUX0tFWT0ke21pbmlvX3NlY3JldF9rZXl9XCIsXG5dXG5tb3VudHMgPSBbXVxuXG5bW2NvbmZpZy5kb21haW5zXV1cbnNlcnZpY2VOYW1lID0gXCJwcm94eVwiXG5wb3J0ID0gMTBfMDAwXG5ob3N0ID0gXCIke21haW5fZG9tYWlufVwiXG4iCn0=

Tags

database, low-code, nocode, applications


Version: 3.23.47

On this page