개요
Budibase는 내부 도구와 비즈니스 애플리케이션을 빠르게 구축할 수 있는 오픈소스 로우코드 플랫폼입니다. GPL v3 라이선스로 배포되며, 22K+ GitHub Stars를 보유하고 있습니다. Retool, PowerApps의 셀프호스팅 대안으로, IT 전문가와 비개발자도 코드 없이 애플리케이션을 만들 수 있도록 설계되었습니다.
Budibase의 핵심 철학
Budibase는 “코드 선택적(Code Optional)” 철학을 추구합니다. 개발자뿐만 아니라 시스템 관리자, DBA, IT 매니저, PM도 최소한의 코딩으로 비즈니스 앱을 구축할 수 있습니다. 데이터 스키마에서 자동으로 CRUD 앱과 폼을 생성하는 기능이 특징입니다.
주요 특징
| 기능 | 설명 |
|---|---|
| 비주얼 앱 빌더 | 40+ 사전 구축 컴포넌트 드래그 앤 드롭 |
| 내장 데이터베이스 | CouchDB 기반 노코드 데이터베이스 |
| 자동 CRUD 생성 | SQL 스키마에서 앱/폼 자동 생성 |
| 외부 데이터 연동 | PostgreSQL, MySQL, MongoDB, REST API 등 |
| 자동화 빌더 | 비주얼 워크플로우 자동화 |
| 반응형 UI | 데스크톱, 태블릿, 모바일 자동 최적화 |
| RBAC | 역할 기반 접근 제어 |
| SSO/OIDC | Google Auth, OpenID Connect 지원 |
| 셀프호스팅 | Docker, Kubernetes, DigitalOcean 지원 |
| 플러그인 | 커스텀 컴포넌트 확장 |
Budibase 3.0 주요 업데이트 (2024년 11월)
| 기능 | 설명 |
|---|---|
| Budibase AI | 클라우드 사용자를 위한 AI 기능 |
| 향상된 자동화 | 동기식 자동화 지원 |
| PDF 생성 | 문서 자동 생성 기능 |
| 재사용 코드 스니펫 | 코드 재사용성 향상 |
로우코드 플랫폼 비교
| 기능 | Budibase | Appsmith | ToolJet | Retool |
|---|---|---|---|---|
| 오픈소스 | ✅ | ✅ | ✅ | ❌ |
| 내장 데이터베이스 | ✅ | ❌ | ✅ | ❌ |
| 자동 CRUD 생성 | ✅ | ❌ | ❌ | ✅ |
| 비주얼 자동화 | ✅ | 제한적 | ✅ | ✅ |
| Git 통합 | ❌ | ✅ | ✅ | ✅ |
| 셀프호스팅 무료 | 20명까지 | 무제한 | 무제한 | ❌ |
| 코딩 필요도 | 낮음 | 높음 | 중간 | 중간 |
| 대상 사용자 | IT 전문가 | 개발자 | 개발자 | 개발자 |
시스템 요구 사항
| 항목 | 최소 사양 | 권장 사양 |
|---|---|---|
| RAM | 2GB | 4GB 이상 |
| CPU | 2 코어 | 4 코어 이상 |
| 저장소 | 10GB | 50GB 이상 |
| Docker | 20.10+ | 최신 버전 |
참고: Redis 사용을 위해 Linux 메모리 오버커밋 설정이 필요합니다.
Docker Compose 설치
사전 준비: 메모리 오버커밋 설정
# /etc/sysctl.conf에 추가
echo "vm.overcommit_memory=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
기본 설치 (단일 컨테이너)
mkdir -p ~/budibase && cd ~/budibase
docker-compose.yml:
version: "3"
services:
budibase:
image: budibase/budibase:latest
container_name: budibase
restart: unless-stopped
ports:
- "8080:80"
environment:
JWT_SECRET: your-jwt-secret-min-32-chars-here
MINIO_ACCESS_KEY: your-minio-access-key
MINIO_SECRET_KEY: your-minio-secret-key
REDIS_PASSWORD: your-redis-password
COUCHDB_USER: admin
COUCHDB_PASSWORD: your-couchdb-password
INTERNAL_API_KEY: your-internal-api-key
volumes:
- budibase_data:/data
volumes:
budibase_data:
driver: local
시크릿 생성
# 랜덤 시크릿 생성
openssl rand -hex 32 # JWT_SECRET
openssl rand -hex 16 # MINIO_ACCESS_KEY
openssl rand -hex 32 # MINIO_SECRET_KEY
openssl rand -hex 16 # REDIS_PASSWORD
openssl rand -hex 32 # COUCHDB_PASSWORD
openssl rand -hex 32 # INTERNAL_API_KEY
프로덕션 설치 (분리된 서비스)
.env 파일:
# 기본 설정
MAIN_PORT=8080
# JWT 시크릿
JWT_SECRET=your-jwt-secret-min-32-chars-here
# MinIO (오브젝트 스토리지)
MINIO_ACCESS_KEY=your-minio-access-key
MINIO_SECRET_KEY=your-minio-secret-key
# Redis
REDIS_PASSWORD=your-redis-password
# CouchDB
COUCHDB_USER=admin
COUCHDB_PASSWORD=your-couchdb-password
# 내부 API
INTERNAL_API_KEY=your-internal-api-key
# SMTP 설정 (선택사항)
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=your-email@example.com
SMTP_PASSWORD=your-email-password
SMTP_FROM=noreply@example.com
docker-compose.yml (프로덕션):
version: "3.8"
services:
budibase-app:
image: budibase/budibase:latest
container_name: budibase-app
restart: unless-stopped
ports:
- "${MAIN_PORT:-8080}:80"
environment:
JWT_SECRET: ${JWT_SECRET}
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY}
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY}
REDIS_PASSWORD: ${REDIS_PASSWORD}
COUCHDB_USER: ${COUCHDB_USER}
COUCHDB_PASSWORD: ${COUCHDB_PASSWORD}
INTERNAL_API_KEY: ${INTERNAL_API_KEY}
SELF_HOSTED: 1
ENABLE_ANALYTICS: "false"
volumes:
- budibase_data:/data
depends_on:
- budibase-couchdb
- budibase-redis
- budibase-minio
networks:
- budibase-network
budibase-couchdb:
image: ibmcom/couchdb3:3.3.3
container_name: budibase-couchdb
restart: unless-stopped
environment:
COUCHDB_USER: ${COUCHDB_USER}
COUCHDB_PASSWORD: ${COUCHDB_PASSWORD}
volumes:
- couchdb_data:/opt/couchdb/data
networks:
- budibase-network
budibase-redis:
image: redis:7-alpine
container_name: budibase-redis
restart: unless-stopped
command: redis-server --requirepass ${REDIS_PASSWORD}
volumes:
- redis_data:/data
networks:
- budibase-network
budibase-minio:
image: minio/minio:latest
container_name: budibase-minio
restart: unless-stopped
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
volumes:
budibase_data:
couchdb_data:
redis_data:
minio_data:
networks:
budibase-network:
driver: bridge
Traefik 리버스 프록시 설정
version: "3.8"
services:
budibase:
image: budibase/budibase:latest
container_name: budibase
restart: unless-stopped
environment:
JWT_SECRET: ${JWT_SECRET}
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY}
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY}
REDIS_PASSWORD: ${REDIS_PASSWORD}
COUCHDB_USER: ${COUCHDB_USER}
COUCHDB_PASSWORD: ${COUCHDB_PASSWORD}
INTERNAL_API_KEY: ${INTERNAL_API_KEY}
volumes:
- budibase_data:/data
networks:
- budibase-network
- traefik-network
labels:
- "traefik.enable=true"
- "traefik.http.routers.budibase.rule=Host(`budibase.yourdomain.com`)"
- "traefik.http.routers.budibase.entrypoints=websecure"
- "traefik.http.routers.budibase.tls.certresolver=myresolver"
- "traefik.http.services.budibase.loadbalancer.server.port=80"
실행
docker-compose up -d
# 로그 확인
docker-compose logs -f budibase
# 상태 확인
docker-compose ps
초기 설정
1) 웹 접속
브라우저에서 http://localhost:8080으로 접속합니다.
2) 관리자 계정 생성
- 이메일 주소 입력
- 비밀번호 설정
- 이름 입력
- Create admin user 클릭
3) 조직 설정
- 조직 이름 입력
- 설정 완료
주요 기능 활용
앱 생성 워크플로우
1. Apps > Create new app
2. 데이터 소스 선택:
- Budibase DB (내장)
- External database
- REST API
3. 테이블/스키마 정의
4. 자동 생성된 화면 커스터마이징
5. 자동화 추가 (선택사항)
6. 앱 배포
데이터 소스 연결
지원되는 데이터 소스:
| 카테고리 | 데이터 소스 |
|---|---|
| 관계형 DB | PostgreSQL, MySQL, MariaDB, MSSQL |
| NoSQL | MongoDB, CouchDB, DynamoDB, Elasticsearch, ArangoDB |
| 클라우드 | Airtable, Google Sheets, Amazon S3 |
| API | REST API, GraphQL |
연결 예시 (PostgreSQL):
Host: db.example.com
Port: 5432
Database: myapp
User: postgres
Password: ********
SSL: Required
자동화 빌더
트리거 유형:
- Row Created/Updated/Deleted: 데이터 변경 시
- Webhook: 외부 HTTP 요청
- Cron: 예약 실행
- App Action: 앱 내 버튼 클릭
액션 유형:
- 이메일 발송
- 외부 API 호출
- 데이터 생성/수정/삭제
- JavaScript 실행
- Slack/Discord 알림
RBAC (역할 기반 접근 제어)
| 역할 | 설명 |
|---|---|
| Admin | 모든 권한 |
| Power | 앱 빌더 + 데이터 관리 |
| Basic | 앱 사용만 가능 |
| Public | 인증 없이 접근 가능 |
SSO 설정 (OIDC)
Google OAuth 설정
- Google Cloud Console에서 OAuth 2.0 클라이언트 생성
- Budibase 설정:
Settings > Auth > Google
Client ID: your-google-client-id
Client Secret: your-google-client-secret
OpenID Connect 설정
Settings > Auth > OIDC
Config URL: https://auth.example.com/.well-known/openid-configuration
Client ID: your-client-id
Client Secret: your-client-secret
트러블슈팅
CouchDB 연결 실패
# CouchDB 상태 확인
docker exec budibase curl -s http://localhost:5984
# 로그 확인
docker logs budibase 2>&1 | grep -i couch
Redis 메모리 오류
# 메모리 오버커밋 설정 확인
cat /proc/sys/vm/overcommit_memory
# 1이 아니면 설정 필요
# 즉시 적용
sudo sysctl vm.overcommit_memory=1
앱 로딩 느림
# 리소스 제한 추가
services:
budibase:
deploy:
resources:
limits:
memory: 4G
reservations:
memory: 2G
파일 업로드 실패
# MinIO 상태 확인
docker exec budibase-minio mc admin info local
# 볼륨 권한 확인
docker exec budibase ls -la /data
백업 및 복원
CouchDB 백업
# Fauxton UI를 통한 백업
# http://localhost:5984/_utils
# 또는 CLI로 백업
docker exec budibase-couchdb \
curl -X GET http://admin:password@localhost:5984/_all_dbs
전체 백업 스크립트
#!/bin/bash
BACKUP_DIR="/backups/budibase/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR
# 컨테이너 중지
docker-compose stop
# 볼륨 백업
for vol in budibase_data couchdb_data redis_data minio_data; do
docker run --rm \
-v ${vol}:/data \
-v $BACKUP_DIR:/backup \
alpine tar czf /backup/${vol}.tar.gz /data
done
# 컨테이너 재시작
docker-compose start
echo "Backup completed: $BACKUP_DIR"
복원
#!/bin/bash
BACKUP_DIR="/backups/budibase/20240101"
# 컨테이너 중지
docker-compose down
# 볼륨 복원
for vol in budibase_data couchdb_data redis_data minio_data; do
docker volume rm ${vol} 2>/dev/null
docker volume create ${vol}
docker run --rm \
-v ${vol}:/data \
-v $BACKUP_DIR:/backup \
alpine tar xzf /backup/${vol}.tar.gz -C /
done
# 컨테이너 시작
docker-compose up -d
업그레이드
UI를 통한 업그레이드
Budibase는 내장 Watchtower를 통해 UI에서 업데이트할 수 있습니다.
수동 업그레이드
# 백업 먼저 수행
./backup.sh
# 최신 이미지 가져오기
docker-compose pull
# 재시작
docker-compose down
docker-compose up -d
# 로그 확인
docker-compose logs -f budibase
가격 정책
| 플랜 | 가격 | 주요 기능 |
|---|---|---|
| Free (Self-hosted) | $0 | 최대 20 사용자, 기본 기능 |
| Free (Cloud) | $0 | 최대 5 사용자 |
| Premium | $50/creator/월 | 무제한 사용자, 커스텀 브랜딩, PDF 생성 |
| Enterprise | 문의 | SAML SSO, 감사 로그, 전용 지원 |