docker.recipes

Budibase Low-Code Platform

intermediate

Budibase low-code platform for building internal tools and business applications.

Overview

Budibase is an open-source low-code platform that enables teams to build internal tools, dashboards, and business applications without extensive coding. Founded as an alternative to expensive solutions like Retool and Microsoft PowerApps, Budibase provides a visual drag-and-drop interface for creating CRUD applications, admin panels, and workflow automation tools. The platform emphasizes speed of development while maintaining flexibility for custom integrations and complex business logic. This Docker stack combines Budibase with CouchDB for document storage, MinIO for S3-compatible file storage, and Redis for caching and session management. CouchDB handles application metadata, user data, and configuration with its multi-master replication capabilities, while MinIO stores uploaded files, images, and static assets with high performance. Redis provides real-time caching for database queries, user sessions, and the automation engine that powers Budibase's workflow capabilities. This configuration is ideal for organizations looking to reduce dependency on SaaS tools, maintain data sovereignty, or deploy internal applications in air-gapped environments. Startups can rapidly prototype business tools, while enterprises benefit from the self-hosted approach that keeps sensitive data within their infrastructure. The combination provides enterprise-grade storage, caching, and document management while maintaining the simplicity that makes low-code platforms valuable for non-technical users.

Key Features

  • Visual drag-and-drop application builder with pre-built components for forms, tables, and charts
  • Built-in automation engine using Redis for triggering workflows based on database changes or external webhooks
  • CouchDB multi-master replication enabling distributed deployments and offline-first mobile applications
  • S3-compatible file storage through MinIO for handling user uploads, PDFs, and media assets
  • Real-time collaboration features powered by Redis pub/sub for multiple users editing applications simultaneously
  • External database connectivity supporting MySQL, PostgreSQL, MongoDB, and REST API integrations
  • Role-based access control with Redis session management for secure multi-tenant application deployment
  • Custom JavaScript scripting support for advanced business logic and CouchDB view queries

Common Use Cases

  • 1Employee onboarding portals with file uploads stored in MinIO and progress tracking in CouchDB
  • 2Inventory management systems connecting to existing ERP databases with Redis caching for performance
  • 3Customer support dashboards aggregating data from multiple sources with real-time updates via Redis
  • 4Approval workflow applications using Budibase automation engine and CouchDB for audit trails
  • 5Internal reporting tools for finance teams with scheduled data refresh and MinIO for storing generated PDFs
  • 6Field service applications leveraging CouchDB offline sync for technicians working without internet
  • 7HR management systems with employee self-service portals and document storage in MinIO buckets

Prerequisites

  • Minimum 4GB RAM (1GB for Budibase, 1GB for CouchDB, 2GB for MinIO, 512MB for Redis)
  • Port 10000 available for Budibase web interface access
  • Basic understanding of environment variables for JWT secrets and database credentials
  • Familiarity with CouchDB concepts like documents and views if building complex data models
  • Knowledge of S3 bucket policies if configuring advanced MinIO file access controls
  • Understanding of Redis memory management for production deployments with large datasets

For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

docker-compose.yml

docker-compose.yml
1services:
2 budibase:
3 image: budibase/budibase:latest
4 container_name: budibase
5 environment:
6 - SELF_HOSTED=1
7 - COUCH_DB_URL=http://${COUCH_DB_USER}:${COUCH_DB_PASSWORD}@couchdb:5984
8 - MINIO_URL=http://minio:9000
9 - MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY}
10 - MINIO_SECRET_KEY=${MINIO_SECRET_KEY}
11 - REDIS_URL=redis:6379
12 - JWT_SECRET=${JWT_SECRET}
13 - INTERNAL_API_KEY=${INTERNAL_API_KEY}
14 ports:
15 - "10000:80"
16 depends_on:
17 - couchdb
18 - minio
19 - redis
20 networks:
21 - budibase-network
22
23 couchdb:
24 image: apache/couchdb:3.3
25 container_name: budibase-couchdb
26 environment:
27 - COUCHDB_USER=${COUCH_DB_USER}
28 - COUCHDB_PASSWORD=${COUCH_DB_PASSWORD}
29 volumes:
30 - couchdb_data:/opt/couchdb/data
31 networks:
32 - budibase-network
33
34 minio:
35 image: minio/minio:latest
36 container_name: budibase-minio
37 command: server /data --console-address ":9001"
38 environment:
39 - MINIO_ROOT_USER=${MINIO_ACCESS_KEY}
40 - MINIO_ROOT_PASSWORD=${MINIO_SECRET_KEY}
41 volumes:
42 - minio_data:/data
43 networks:
44 - budibase-network
45
46 redis:
47 image: redis:7-alpine
48 container_name: budibase-redis
49 volumes:
50 - redis_data:/data
51 networks:
52 - budibase-network
53
54volumes:
55 couchdb_data:
56 minio_data:
57 redis_data:
58
59networks:
60 budibase-network:
61 driver: bridge

.env Template

.env
1# Budibase
2COUCH_DB_USER=budibase
3COUCH_DB_PASSWORD=budibase_password
4MINIO_ACCESS_KEY=budibase
5MINIO_SECRET_KEY=budibase_secret
6JWT_SECRET=your-jwt-secret
7INTERNAL_API_KEY=your-internal-api-key

Usage Notes

  1. 1Builder at http://localhost:10000
  2. 2Create account on first visit
  3. 3Drag-and-drop app builder
  4. 4Connect to external databases
  5. 5Built-in automation engine

Individual Services(4 services)

Copy individual services to mix and match with your existing compose files.

budibase
budibase:
  image: budibase/budibase:latest
  container_name: budibase
  environment:
    - SELF_HOSTED=1
    - COUCH_DB_URL=http://${COUCH_DB_USER}:${COUCH_DB_PASSWORD}@couchdb:5984
    - MINIO_URL=http://minio:9000
    - MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY}
    - MINIO_SECRET_KEY=${MINIO_SECRET_KEY}
    - REDIS_URL=redis:6379
    - JWT_SECRET=${JWT_SECRET}
    - INTERNAL_API_KEY=${INTERNAL_API_KEY}
  ports:
    - "10000:80"
  depends_on:
    - couchdb
    - minio
    - redis
  networks:
    - budibase-network
couchdb
couchdb:
  image: apache/couchdb:3.3
  container_name: budibase-couchdb
  environment:
    - COUCHDB_USER=${COUCH_DB_USER}
    - COUCHDB_PASSWORD=${COUCH_DB_PASSWORD}
  volumes:
    - couchdb_data:/opt/couchdb/data
  networks:
    - budibase-network
minio
minio:
  image: minio/minio:latest
  container_name: budibase-minio
  command: server /data --console-address ":9001"
  environment:
    - MINIO_ROOT_USER=${MINIO_ACCESS_KEY}
    - MINIO_ROOT_PASSWORD=${MINIO_SECRET_KEY}
  volumes:
    - minio_data:/data
  networks:
    - budibase-network
redis
redis:
  image: redis:7-alpine
  container_name: budibase-redis
  volumes:
    - redis_data:/data
  networks:
    - budibase-network

Quick Start

terminal
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 budibase:
5 image: budibase/budibase:latest
6 container_name: budibase
7 environment:
8 - SELF_HOSTED=1
9 - COUCH_DB_URL=http://${COUCH_DB_USER}:${COUCH_DB_PASSWORD}@couchdb:5984
10 - MINIO_URL=http://minio:9000
11 - MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY}
12 - MINIO_SECRET_KEY=${MINIO_SECRET_KEY}
13 - REDIS_URL=redis:6379
14 - JWT_SECRET=${JWT_SECRET}
15 - INTERNAL_API_KEY=${INTERNAL_API_KEY}
16 ports:
17 - "10000:80"
18 depends_on:
19 - couchdb
20 - minio
21 - redis
22 networks:
23 - budibase-network
24
25 couchdb:
26 image: apache/couchdb:3.3
27 container_name: budibase-couchdb
28 environment:
29 - COUCHDB_USER=${COUCH_DB_USER}
30 - COUCHDB_PASSWORD=${COUCH_DB_PASSWORD}
31 volumes:
32 - couchdb_data:/opt/couchdb/data
33 networks:
34 - budibase-network
35
36 minio:
37 image: minio/minio:latest
38 container_name: budibase-minio
39 command: server /data --console-address ":9001"
40 environment:
41 - MINIO_ROOT_USER=${MINIO_ACCESS_KEY}
42 - MINIO_ROOT_PASSWORD=${MINIO_SECRET_KEY}
43 volumes:
44 - minio_data:/data
45 networks:
46 - budibase-network
47
48 redis:
49 image: redis:7-alpine
50 container_name: budibase-redis
51 volumes:
52 - redis_data:/data
53 networks:
54 - budibase-network
55
56volumes:
57 couchdb_data:
58 minio_data:
59 redis_data:
60
61networks:
62 budibase-network:
63 driver: bridge
64EOF
65
66# 2. Create the .env file
67cat > .env << 'EOF'
68# Budibase
69COUCH_DB_USER=budibase
70COUCH_DB_PASSWORD=budibase_password
71MINIO_ACCESS_KEY=budibase
72MINIO_SECRET_KEY=budibase_secret
73JWT_SECRET=your-jwt-secret
74INTERNAL_API_KEY=your-internal-api-key
75EOF
76
77# 3. Start the services
78docker compose up -d
79
80# 4. View logs
81docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/budibase-low-code/run | bash

Troubleshooting

  • Budibase shows 'Database connection failed': Verify COUCH_DB_USER and COUCH_DB_PASSWORD match CouchDB container environment variables
  • File uploads fail with 'MinIO connection error': Check MINIO_ACCESS_KEY and MINIO_SECRET_KEY are identical between budibase and minio containers
  • CouchDB container exits with permission errors: Ensure couchdb_data volume has proper ownership with 'chown -R 5984:5984' on the host directory
  • Redis memory usage grows uncontrolled: Configure Redis maxmemory and eviction policies in production, especially for session-heavy applications
  • MinIO console inaccessible: MinIO console runs on port 9001 internally but isn't exposed - add port mapping '9001:9001' if management access needed
  • Budibase automation workflows timeout: Increase Redis timeout settings and check CouchDB query performance using Fauxton admin interface

Community Notes

Loading...
Loading notes...

Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license

Ad Space