AI agents, automations and apps that run your operations. Model agnostic.
docker pull budibase/proxy
docker run -d --name budibase -p 4000:4000 --restart always budibase/proxy
podman run -d --name budibase -p 4000:4000 --restart always budibase/proxy
skopeo inspect docker://docker.io/budibase/proxy:latest
oras pull budibase/proxy
docker compose up -d
# optional ports are specified throughout for more advanced use cases.
services:
app-service:
build:
context: ..
dockerfile: packages/server/Dockerfile
args:
- BUDIBASE_VERSION=0.0.0+dev-docker
container_name: build-bbapps
environment:
SELF_HOSTED: 1
COUCH_DB_URL: http://${COUCH_DB_USER}:${COUCH_DB_PASSWORD}@couchdb-service:5984
WORKER_URL: http://worker-service:4003
MINIO_URL: http://minio-service:9000
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY}
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY}
INTERNAL_API_KEY: ${INTERNAL_API_KEY}
BUDIBASE_ENVIRONMENT: ${BUDIBASE_ENVIRONMENT}
PORT: 4002
API_ENCRYPTION_KEY: ${API_ENCRYPTION_KEY}
JWT_SECRET: ${JWT_SECRET}
LOG_LEVEL: info
ENABLE_ANALYTICS: "true"
REDIS_URL: redis-service:6379
REDIS_PASSWORD: ${REDIS_PASSWORD}
LITELLM_URL: http://litellm-service:4000
LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
BB_ADMIN_USER_EMAIL: ${BB_ADMIN_USER_EMAIL}
BB_ADMIN_USER_PASSWORD: ${BB_ADMIN_USER_PASSWORD}
PASSWORD_MIN_LENGTH: ${PASSWORD_MIN_LENGTH:-12}
PASSWORD_MAX_LENGTH: ${PASSWORD_MAX_LENGTH:-512}
PASSWORD_REGEX: ${PASSWORD_REGEX:-}
PASSWORD_REGEX_ERROR_MESSAGE: ${PASSWORD_REGEX_ERROR_MESSAGE:-}
PLUGINS_DIR: ${PLUGINS_DIR}
TENANT_FEATURE_FLAGS: "*:SQS"
depends_on:
- worker-service
- redis-service
- litellm-service
worker-service:
build:
context: ..
dockerfile: packages/worker/Dockerfile
args:
- BUDIBASE_VERSION=0.0.0+dev-docker
container_name: build-bbworker
environment:
SELF_HOSTED: 1
PORT: 4003
CLUSTER_PORT: ${MAIN_PORT}
API_ENCRYPTION_KEY: ${API_ENCRYPTION_KEY}
JWT_SECRET: ${JWT_SECRET}
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY}
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY}
MINIO_URL: http://minio-service:9000
APPS_URL: http://app-service:4002
COUCH_DB_USERNAME: ${COUCH_DB_USER}
COUCH_DB_PASSWORD: ${COUCH_DB_PASSWORD}
COUCH_DB_URL: http://${COUCH_DB_USER}:${COUCH_DB_PASSWORD}@couchdb-service:5984
INTERNAL_API_KEY: ${INTERNAL_API_KEY}
REDIS_URL: redis-service:6379
REDIS_PASSWORD: ${REDIS_PASSWORD}
LITELLM_URL: http://litellm-service:4000
LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
TENANT_FEATURE_FLAGS: "*:SQS"
PASSWORD_MIN_LENGTH: ${PASSWORD_MIN_LENGTH:-12}
PASSWORD_MAX_LENGTH: ${PASSWORD_MAX_LENGTH:-512}
PASSWORD_REGEX: ${PASSWORD_REGEX:-}
PASSWORD_REGEX_ERROR_MESSAGE: ${PASSWORD_REGEX_ERROR_MESSAGE:-}
depends_on:
- redis-service
- minio-service
- litellm-service
proxy-service-docker:
build:
context: ./proxy
ports:
- "${MAIN_PORT}:10000"
container_name: build-bbproxy
image: budibase/proxy
environment:
- PROXY_RATE_LIMIT_WEBHOOKS_PER_SECOND=10
- PROXY_RATE_LIMIT_API_PER_SECOND=50
- APPS_UPSTREAM_URL=http://app-service:4002
- WORKER_UPSTREAM_URL=http://worker-service:4003
- MINIO_UPSTREAM_URL=http://minio-service:9000
- COUCHDB_UPSTREAM_URL=http://couchdb-service:5984
- RESOLVER=127.0.0.11
depends_on:
- minio-service
- worker-service
- app-service
- couchdb-service
litellm-service:
image: docker.io/litellm/litellm:main-v1.83.10-stable.patch.3
ports:
- "${LITELLM_PORT:-4000}:4000"
volumes:
- ./litellm_config.yaml:/app/config.yaml
environment:
DATABASE_URL: "postgresql://${LITELLM_DB_USER}:${LITELLM_DB_PASSWORD}@litellm-db:5432/${LITELLM_DB_NAME}"
STORE_MODEL_IN_DB: "True"
LITELLM_REASONING_AUTO_SUMMARY: "true"
LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
LITELLM_SALT_KEY: ${LITELLM_SALT_KEY}
command: ["--config", "/app/config.yaml"]
depends_on:
- litellm-db
healthcheck:
test:
[
"CMD-SHELL",
"python -c \"import urllib.request; urllib.request.urlopen('http://localhost:4000/health/liveliness')\"",
]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
litellm-db:
image: postgres:16
environment:
POSTGRES_DB: ${LITELLM_DB_NAME}
POSTGRES_USER: ${LITELLM_DB_USER}
POSTGRES_PASSWORD: ${LITELLM_DB_PASSWORD}
volumes:
- litellm_data:/var/lib/postgresql/data
healthcheck:
test:
["CMD-SHELL", "pg_isready -d ${LITELLM_DB_NAME} -U ${LITELLM_DB_USER}"]
interval: 1s
timeout: 5s
retries: 10
volumes:
litellm_data:
driver: local