Flowise Docker 설치 가이드: 노코드 LLM 앱 빌더




개요

Flowise는 드래그 앤 드롭으로 LLM 애플리케이션을 구축하는 노코드/로우코드 플랫폼입니다. LangChain.js 기반으로, 시각적 인터페이스에서 RAG 파이프라인, 챗봇, AI 에이전트를 몇 분 만에 만들 수 있습니다. 코딩 없이도 GPT, Claude, Ollama 등 다양한 LLM을 연결하고 프로덕션에 배포할 수 있습니다.

항목내용
GitHubhttps://github.com/FlowiseAI/Flowise
공식 사이트https://flowiseai.com
문서https://docs.flowiseai.com
라이선스Apache-2.0
GitHub Stars35K+

Flowise란?

왜 Flowise인가?

❌ 기존 LLM 개발의 어려움:
   - LangChain 학습 곡선이 높음
   - 코딩 지식 필요
   - RAG 파이프라인 구축이 복잡

✅ Flowise의 해결책:
   - 드래그 앤 드롭 시각적 빌더
   - 코딩 없이 LLM 앱 구축
   - 템플릿으로 빠른 시작
   - API/임베드 위젯으로 배포

핵심 개념

"AI 앱의 Figma"
- 시각적으로 LLM 워크플로우 설계
- 실시간 테스트 및 디버깅
- 코드 없이 프로덕션 배포
- LangChain의 강력함 + 노코드의 편의함

노드 기반 워크플로우

┌──────────┐    ┌──────────┐    ┌──────────┐
│  Input   │───▶│   LLM    │───▶│  Output  │
└──────────┘    └──────────┘    └──────────┘
      │              │
      ▼              ▼
┌──────────┐    ┌──────────┐
│  Memory  │    │  Tools   │
└──────────┘    └──────────┘

주요 기능

🎨 시각적 빌더

기능설명
드래그 앤 드롭노드를 끌어다 놓기
실시간 연결노드 간 연결선
즉시 테스트빌드하면서 테스트
템플릿사전 구성된 워크플로우

🤖 LLM 통합

LLM지원
OpenAIGPT-4o, GPT-4, GPT-3.5
AnthropicClaude 3.5, Claude 3
GoogleGemini
Ollama로컬 LLM
Azure OpenAI엔터프라이즈
HuggingFace오픈소스 모델
Groq초고속 추론
Mistral

📚 RAG (검색 증강 생성)

기능설명
Document LoadersPDF, Word, CSV, 웹페이지 등
Text Splitters청킹 전략
EmbeddingsOpenAI, HuggingFace, Ollama
Vector StoresPinecone, Chroma, Qdrant, Weaviate 등
Retrievers유사도 검색, MMR

🛠️ 에이전트 & 도구

기능설명
AgentsReAct, OpenAI Functions
Tools계산기, 검색, API 호출
Function CallingOpenAI/Anthropic 함수 호출
Custom Tools커스텀 도구 생성

💾 메모리

유형설명
Buffer Memory최근 대화
Window Memory슬라이딩 윈도우
Summary Memory대화 요약
Vector Store Memory장기 기억

🔌 배포 & 통합

기능설명
REST API플로우를 API로 노출
Embed Widget웹사이트에 채팅 위젯 임베드
Webhook외부 서비스 연결
Export/Import플로우 JSON 내보내기

대안 비교

기능FlowiseLangFlowDifyn8n
목적LLM 앱LLM 앱LLM 플랫폼워크플로우 자동화
시각적 빌더
기반LangChain.jsLangChain자체자체
RAG✅ (제한적)
에이전트
API 배포
임베드 위젯
셀프호스팅
러닝 커브낮음낮음중간중간

시스템 요구 사항

항목최소권장
CPU2 코어4+ 코어
RAM2GB4GB+
저장소10GB20GB+
포트3000

Docker 설치

방법 1: 기본 설치

# docker-compose.yml
services:
  flowise:
    image: flowiseai/flowise:latest
    container_name: flowise
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - ./flowise:/root/.flowise
    environment:
      - PORT=3000
    entrypoint: /bin/sh -c "sleep 3; flowise start"

방법 2: 인증 활성화

# docker-compose.yml
services:
  flowise:
    image: flowiseai/flowise:latest
    container_name: flowise
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - ./flowise:/root/.flowise
    environment:
      - PORT=3000
      - FLOWISE_USERNAME=admin
      - FLOWISE_PASSWORD=your-secure-password
    entrypoint: /bin/sh -c "sleep 3; flowise start"

방법 3: PostgreSQL 데이터베이스

# docker-compose.yml
services:
  flowise:
    image: flowiseai/flowise:latest
    container_name: flowise
    restart: unless-stopped
    depends_on:
      - postgres
    ports:
      - "3000:3000"
    volumes:
      - ./flowise:/root/.flowise
    environment:
      - PORT=3000
      - FLOWISE_USERNAME=admin
      - FLOWISE_PASSWORD=your-secure-password
      - DATABASE_TYPE=postgres
      - DATABASE_HOST=postgres
      - DATABASE_PORT=5432
      - DATABASE_USER=flowise
      - DATABASE_PASSWORD=flowise-db-password
      - DATABASE_NAME=flowise
    entrypoint: /bin/sh -c "sleep 3; flowise start"

  postgres:
    image: postgres:16
    container_name: flowise-postgres
    restart: unless-stopped
    volumes:
      - ./postgres_data:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=flowise
      - POSTGRES_PASSWORD=flowise-db-password
      - POSTGRES_DB=flowise

방법 4: MySQL 데이터베이스

# docker-compose.yml
services:
  flowise:
    image: flowiseai/flowise:latest
    container_name: flowise
    restart: unless-stopped
    depends_on:
      - mysql
    ports:
      - "3000:3000"
    volumes:
      - ./flowise:/root/.flowise
    environment:
      - PORT=3000
      - FLOWISE_USERNAME=admin
      - FLOWISE_PASSWORD=your-secure-password
      - DATABASE_TYPE=mysql
      - DATABASE_HOST=mysql
      - DATABASE_PORT=3306
      - DATABASE_USER=flowise
      - DATABASE_PASSWORD=flowise-db-password
      - DATABASE_NAME=flowise
    entrypoint: /bin/sh -c "sleep 3; flowise start"

  mysql:
    image: mysql:8
    container_name: flowise-mysql
    restart: unless-stopped
    volumes:
      - ./mysql_data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root-password
      - MYSQL_USER=flowise
      - MYSQL_PASSWORD=flowise-db-password
      - MYSQL_DATABASE=flowise

방법 5: Queue 모드 (Redis + Worker)

대규모 워크로드용 수평 확장:

# docker-compose.yml
services:
  flowise:
    image: flowiseai/flowise:latest
    container_name: flowise
    restart: unless-stopped
    depends_on:
      - redis
    ports:
      - "3000:3000"
    volumes:
      - ./flowise:/root/.flowise
    environment:
      - PORT=3000
      - MODE=queue
      - QUEUE_NAME=flowise-queue
      - REDIS_URL=redis://redis:6379
      - FLOWISE_USERNAME=admin
      - FLOWISE_PASSWORD=your-secure-password
    entrypoint: /bin/sh -c "sleep 3; flowise start"

  flowise-worker:
    image: flowiseai/flowise-worker:latest
    container_name: flowise-worker
    restart: unless-stopped
    depends_on:
      - redis
      - flowise
    volumes:
      - ./flowise:/root/.flowise
    environment:
      - MODE=queue
      - QUEUE_NAME=flowise-queue
      - REDIS_URL=redis://redis:6379
      - WORKER_CONCURRENCY=5

  redis:
    image: redis:7
    container_name: flowise-redis
    restart: unless-stopped
    volumes:
      - ./redis_data:/data

방법 6: S3 스토리지

# docker-compose.yml
services:
  flowise:
    image: flowiseai/flowise:latest
    container_name: flowise
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - ./flowise:/root/.flowise
    environment:
      - PORT=3000
      - FLOWISE_USERNAME=admin
      - FLOWISE_PASSWORD=your-secure-password
      # S3 스토리지
      - STORAGE_TYPE=s3
      - S3_STORAGE_BUCKET_NAME=your-bucket
      - S3_STORAGE_ACCESS_KEY_ID=your-access-key
      - S3_STORAGE_SECRET_ACCESS_KEY=your-secret-key
      - S3_STORAGE_REGION=us-east-1
    entrypoint: /bin/sh -c "sleep 3; flowise start"

방법 7: Traefik + HTTPS

# docker-compose.yml
services:
  flowise:
    image: flowiseai/flowise:latest
    container_name: flowise
    restart: unless-stopped
    volumes:
      - ./flowise:/root/.flowise
    environment:
      - PORT=3000
      - FLOWISE_USERNAME=admin
      - FLOWISE_PASSWORD=your-secure-password
    networks:
      - traefik_network
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.flowise.rule=Host(`flowise.example.com`)"
      - "traefik.http.routers.flowise.entrypoints=websecure"
      - "traefik.http.routers.flowise.tls.certresolver=letsencrypt"
      - "traefik.http.services.flowise.loadbalancer.server.port=3000"
    entrypoint: /bin/sh -c "sleep 3; flowise start"

networks:
  traefik_network:
    external: true

방법 8: Ollama 통합

# docker-compose.yml
services:
  flowise:
    image: flowiseai/flowise:latest
    container_name: flowise
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - ./flowise:/root/.flowise
    environment:
      - PORT=3000
      - FLOWISE_USERNAME=admin
      - FLOWISE_PASSWORD=your-secure-password
    entrypoint: /bin/sh -c "sleep 3; flowise start"

  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    ports:
      - "11434:11434"
    volumes:
      - ./ollama:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

Flowise에서 Ollama 연결:

  • Chat Models → ChatOllama 노드 추가
  • Base URL: http://ollama:11434

환경 변수

기본 설정

변수설명기본값
PORT서버 포트3000
FLOWISE_USERNAME로그인 사용자명
FLOWISE_PASSWORD로그인 비밀번호
DEBUG디버그 모드false

데이터베이스

변수설명
DATABASE_TYPEsqlite, postgres, mysql
DATABASE_HOSTDB 호스트
DATABASE_PORTDB 포트
DATABASE_USERDB 사용자
DATABASE_PASSWORDDB 비밀번호
DATABASE_NAMEDB 이름
DATABASE_PATHSQLite 경로

경로 설정

변수설명기본값
DATABASE_PATHSQLite 경로/root/.flowise
APIKEY_PATHAPI 키 저장 경로/root/.flowise
SECRETKEY_PATH시크릿 키 경로/root/.flowise
LOG_PATH로그 경로/root/.flowise/logs
BLOB_STORAGE_PATH파일 저장 경로/root/.flowise/storage

스토리지

변수설명
STORAGE_TYPElocal, s3, gcs
S3_STORAGE_BUCKET_NAMES3 버킷
S3_STORAGE_ACCESS_KEY_IDS3 액세스 키
S3_STORAGE_SECRET_ACCESS_KEYS3 시크릿 키
S3_STORAGE_REGIONS3 리전

Queue 모드

변수설명
MODEmain 또는 queue
QUEUE_NAME큐 이름
REDIS_URLRedis 연결 URL
WORKER_CONCURRENCY워커 동시성

보안

변수설명
FLOWISE_SECRETKEY_OVERWRITE암호화 키 덮어쓰기
DISABLE_FLOWISE_TELEMETRY텔레메트리 비활성화

초기 설정

1) 첫 접속

URL: http://localhost:3000
→ 로그인 (설정한 경우)

2) 첫 번째 챗플로우 만들기

  1. ChatflowsAdd New
  2. 노드 추가:
    • Chat Models → ChatOpenAI (또는 ChatOllama)
    • Chains → Conversation Chain
    • Memory → Buffer Memory
  3. 노드 연결
  4. Save 클릭
  5. 우측 상단 채팅 아이콘으로 테스트

3) API 키 설정

  1. Settings (우측 상단 톱니바퀴)
  2. API Keys 발급
  3. 플로우에서 Credential 추가

4) 간단한 RAG 챗봇

  1. Document Loaders → PDF File
  2. Text Splitters → Recursive Character Text Splitter
  3. Embeddings → OpenAI Embeddings
  4. Vector Stores → In-Memory Vector Store
  5. Chains → Conversational Retrieval QA Chain
  6. Chat Models → ChatOpenAI
  7. 노드들 연결

사용 가이드

템플릿 사용

Flowise는 다양한 사전 구성 템플릿을 제공합니다:

템플릿용도
Simple Conversation기본 챗봇
Conversational Agent도구 사용 에이전트
QA with Sources문서 기반 Q&A
SQL Agent데이터베이스 질의
API AgentAPI 호출 에이전트

API로 플로우 호출

# 채팅 API
curl -X POST "http://localhost:3000/api/v1/prediction/{chatflow-id}" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer {api-key}" \
  -d '{
    "question": "안녕하세요!"
  }'

# 스트리밍
curl -X POST "http://localhost:3000/api/v1/prediction/{chatflow-id}" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer {api-key}" \
  -d '{
    "question": "안녕하세요!",
    "streaming": true
  }'

웹사이트에 임베드

<!-- 채팅 위젯 -->
<script type="module">
  import Chatbot from 'https://cdn.jsdelivr.net/npm/flowise-embed/dist/web.js'
  Chatbot.init({
    chatflowid: 'your-chatflow-id',
    apiHost: 'http://localhost:3000',
  })
</script>

변수 전달

curl -X POST "http://localhost:3000/api/v1/prediction/{chatflow-id}" \
  -H "Content-Type: application/json" \
  -d '{
    "question": "내 주문 상태는?",
    "overrideConfig": {
      "vars": {
        "customer_id": "12345"
      }
    }
  }'

주요 노드 카테고리

Chat Models

  • ChatOpenAI, ChatAnthropic, ChatOllama, ChatGoogleGenerativeAI, AzureChatOpenAI

Embeddings

  • OpenAI Embeddings, HuggingFace Embeddings, Ollama Embeddings, Cohere Embeddings

Vector Stores

  • Pinecone, Chroma, Qdrant, Weaviate, Milvus, Faiss, In-Memory

Document Loaders

  • PDF File, Text File, CSV, JSON, Web Page, YouTube Transcript, Notion, Confluence

Text Splitters

  • Character Text Splitter, Recursive Character Text Splitter, Markdown Text Splitter

Memory

  • Buffer Memory, Buffer Window Memory, Conversation Summary Memory, Zep Memory

Chains

  • LLM Chain, Conversation Chain, Retrieval QA Chain, SQL Database Chain

Agents

  • OpenAI Functions Agent, ReAct Agent, Conversational Agent, SQL Agent

Tools

  • Calculator, Search, Web Browser, Custom Tool, API Chain

백업 및 복원

데이터 구조

./flowise/
├── database.sqlite     # SQLite 데이터베이스
├── storage/            # 업로드된 파일
├── logs/               # 로그 파일
└── api-keys/           # API 키

백업

# 컨테이너 정지
docker compose down

# 전체 백업
tar -czvf flowise-backup-$(date +%Y%m%d).tar.gz flowise/

# 컨테이너 재시작
docker compose up -d

플로우 내보내기

  1. Chatflows에서 플로우 선택
  2. SettingsExport
  3. JSON 파일 다운로드

복원

tar -xzvf flowise-backup.tar.gz
docker compose up -d

업데이트

docker compose pull
docker compose down
docker compose up -d

트러블슈팅

메모리 부족 (빌드 시)

# Node.js 힙 메모리 증가
export NODE_OPTIONS="--max-old-space-size=4096"

Ollama 연결 안 됨

  • Base URL 확인: http://ollama:11434 (Docker 네트워크)
  • 또는 http://host.docker.internal:11434 (호스트)

API 키 오류

  • Settings에서 API Key 생성
  • Credentials에서 각 서비스 API 키 등록

데이터베이스 마이그레이션

PostgreSQL/MySQL로 변경 시:

# 기존 SQLite 백업 후 새 DB 설정
docker compose down
# docker-compose.yml 수정
docker compose up -d

활용 사례

1. 고객 지원 챗봇

구성:

  • Document Loader (FAQ 문서)
  • Vector Store (검색)
  • Conversational Retrieval QA Chain
  • Chat Model

결과: 문서 기반 자동 답변 챗봇

2. SQL 데이터 분석

구성:

  • SQL Database 연결
  • SQL Agent
  • Chat Model

결과: 자연어로 데이터베이스 질의

3. 코드 리뷰 에이전트

구성:

  • GitHub API Tool
  • Code Interpreter
  • OpenAI Functions Agent

결과: 코드 분석 및 제안

4. 멀티모달 챗봇

구성:

  • Image Input
  • GPT-4V / Claude Vision
  • Conversation Chain

결과: 이미지 분석 챗봇

5. 자동화 워크플로우

구성:

  • Webhook Trigger
  • LLM Chain
  • API Call Tool

결과: 외부 이벤트 기반 AI 처리


마무리

Flowise는 코딩 없이 LLM 애플리케이션을 구축할 수 있는 강력한 노코드 플랫폼입니다. LangChain의 복잡함을 시각적 인터페이스로 추상화하여, 누구나 AI 앱을 만들 수 있게 해줍니다.

핵심 장점

장점설명
노코드드래그 앤 드롭으로 구축
LangChain 기반검증된 프레임워크
다양한 LLMOpenAI, Anthropic, Ollama 등
RAG 지원문서 기반 챗봇 쉽게 구축
API 배포플로우를 REST API로 노출
임베드 위젯웹사이트에 쉽게 통합
셀프호스팅데이터 완전 통제

이런 분께 추천

코딩 없이 AI 챗봇을 만들고 싶은 분
LangChain을 쉽게 사용하고 싶은 분
RAG 파이프라인을 빠르게 프로토타이핑하려는 분
비개발자도 AI 앱을 만들어야 하는 팀
MVP를 빠르게 검증하려는 스타트업



댓글 남기기