Budibase Low-Code Platform
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:latest4 container_name: budibase5 environment: 6 - SELF_HOSTED=17 - COUCH_DB_URL=http://${COUCH_DB_USER}:${COUCH_DB_PASSWORD}@couchdb:59848 - MINIO_URL=http://minio:90009 - MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY}10 - MINIO_SECRET_KEY=${MINIO_SECRET_KEY}11 - REDIS_URL=redis:637912 - JWT_SECRET=${JWT_SECRET}13 - INTERNAL_API_KEY=${INTERNAL_API_KEY}14 ports: 15 - "10000:80"16 depends_on: 17 - couchdb18 - minio19 - redis20 networks: 21 - budibase-network2223 couchdb: 24 image: apache/couchdb:3.325 container_name: budibase-couchdb26 environment: 27 - COUCHDB_USER=${COUCH_DB_USER}28 - COUCHDB_PASSWORD=${COUCH_DB_PASSWORD}29 volumes: 30 - couchdb_data:/opt/couchdb/data31 networks: 32 - budibase-network3334 minio: 35 image: minio/minio:latest36 container_name: budibase-minio37 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:/data43 networks: 44 - budibase-network4546 redis: 47 image: redis:7-alpine48 container_name: budibase-redis49 volumes: 50 - redis_data:/data51 networks: 52 - budibase-network5354volumes: 55 couchdb_data: 56 minio_data: 57 redis_data: 5859networks: 60 budibase-network: 61 driver: bridge.env Template
.env
1# Budibase2COUCH_DB_USER=budibase3COUCH_DB_PASSWORD=budibase_password4MINIO_ACCESS_KEY=budibase5MINIO_SECRET_KEY=budibase_secret6JWT_SECRET=your-jwt-secret7INTERNAL_API_KEY=your-internal-api-keyUsage Notes
- 1Builder at http://localhost:10000
- 2Create account on first visit
- 3Drag-and-drop app builder
- 4Connect to external databases
- 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 file2cat > docker-compose.yml << 'EOF'3services:4 budibase:5 image: budibase/budibase:latest6 container_name: budibase7 environment:8 - SELF_HOSTED=19 - COUCH_DB_URL=http://${COUCH_DB_USER}:${COUCH_DB_PASSWORD}@couchdb:598410 - MINIO_URL=http://minio:900011 - MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY}12 - MINIO_SECRET_KEY=${MINIO_SECRET_KEY}13 - REDIS_URL=redis:637914 - JWT_SECRET=${JWT_SECRET}15 - INTERNAL_API_KEY=${INTERNAL_API_KEY}16 ports:17 - "10000:80"18 depends_on:19 - couchdb20 - minio21 - redis22 networks:23 - budibase-network2425 couchdb:26 image: apache/couchdb:3.327 container_name: budibase-couchdb28 environment:29 - COUCHDB_USER=${COUCH_DB_USER}30 - COUCHDB_PASSWORD=${COUCH_DB_PASSWORD}31 volumes:32 - couchdb_data:/opt/couchdb/data33 networks:34 - budibase-network3536 minio:37 image: minio/minio:latest38 container_name: budibase-minio39 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:/data45 networks:46 - budibase-network4748 redis:49 image: redis:7-alpine50 container_name: budibase-redis51 volumes:52 - redis_data:/data53 networks:54 - budibase-network5556volumes:57 couchdb_data:58 minio_data:59 redis_data:6061networks:62 budibase-network:63 driver: bridge64EOF6566# 2. Create the .env file67cat > .env << 'EOF'68# Budibase69COUCH_DB_USER=budibase70COUCH_DB_PASSWORD=budibase_password71MINIO_ACCESS_KEY=budibase72MINIO_SECRET_KEY=budibase_secret73JWT_SECRET=your-jwt-secret74INTERNAL_API_KEY=your-internal-api-key75EOF7677# 3. Start the services78docker compose up -d7980# 4. View logs81docker compose logs -fOne-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 | bashTroubleshooting
- 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
Components
budibasecouchdbminioredis
Tags
#budibase#low-code#internal-tools#retool-alternative#automation
Category
Productivity & CollaborationAd Space
Shortcuts: C CopyF FavoriteD Download