Budibase: Retool 대안 오픈소스 로우코드 플랫폼 Docker 설치 가이드




개요

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/OIDCGoogle Auth, OpenID Connect 지원
셀프호스팅Docker, Kubernetes, DigitalOcean 지원
플러그인커스텀 컴포넌트 확장

Budibase 3.0 주요 업데이트 (2024년 11월)

기능설명
Budibase AI클라우드 사용자를 위한 AI 기능
향상된 자동화동기식 자동화 지원
PDF 생성문서 자동 생성 기능
재사용 코드 스니펫코드 재사용성 향상

로우코드 플랫폼 비교

기능BudibaseAppsmithToolJetRetool
오픈소스
내장 데이터베이스
자동 CRUD 생성
비주얼 자동화제한적
Git 통합
셀프호스팅 무료20명까지무제한무제한
코딩 필요도낮음높음중간중간
대상 사용자IT 전문가개발자개발자개발자

시스템 요구 사항

항목최소 사양권장 사양
RAM2GB4GB 이상
CPU2 코어4 코어 이상
저장소10GB50GB 이상
Docker20.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) 관리자 계정 생성

  1. 이메일 주소 입력
  2. 비밀번호 설정
  3. 이름 입력
  4. Create admin user 클릭

3) 조직 설정

  1. 조직 이름 입력
  2. 설정 완료

주요 기능 활용

앱 생성 워크플로우

1. Apps > Create new app
2. 데이터 소스 선택:
   - Budibase DB (내장)
   - External database
   - REST API
3. 테이블/스키마 정의
4. 자동 생성된 화면 커스터마이징
5. 자동화 추가 (선택사항)
6. 앱 배포

데이터 소스 연결

지원되는 데이터 소스:

카테고리데이터 소스
관계형 DBPostgreSQL, MySQL, MariaDB, MSSQL
NoSQLMongoDB, CouchDB, DynamoDB, Elasticsearch, ArangoDB
클라우드Airtable, Google Sheets, Amazon S3
APIREST 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 설정

  1. Google Cloud Console에서 OAuth 2.0 클라이언트 생성
  2. 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, 감사 로그, 전용 지원



댓글 남기기