본문으로 건너뛰기

배포 위자드 (cafe setup)

cafe setup은 Caffeine 플랫폼을 한 줄로 배포할 수 있는 대화형 위자드입니다. Docker Compose 프로파일 선택, .env 자동 생성, Production 보안 검증, 원격 SSH 배포까지 단계적으로 안내합니다.

빠른 시작 (One-liner)

# 1. CLI 설치
dotnet tool install -g NEXCODE.Caffeine.Cli

# 2. 대화형 위자드 실행
cafe setup

30초 안에 Caffeine 개발 환경이 준비됩니다.


전제 조건

항목요구사항
.NET SDK10.0 이상
Docker20.10 이상
Docker Composev2 (Docker Desktop에 포함)
SSH 키원격 배포 시만 필요

워크플로우 (7단계)

단계별 설명

단계설명
1. 사전 검증Docker 설치 여부, 데몬 실행 여부, Compose v2 확인
2. 프로파일 선택대화형 메뉴에서 5개 프로파일 중 선택
3. 포트 충돌 확인선택한 프로파일의 포트 사용 현황 확인 (로컬만)
4. .env 생성랜덤 시크릿으로 .env 파일 자동 생성
5. 보안 검증--mode production 시 6개 항목 자동 검사
6. Compose 실행docker compose up -d --profile {name} 실행
7. 완료서비스 시작 확인 및 다음 명령어 안내

배포 프로파일

Caffeine은 용도에 따라 5가지 프로파일을 제공합니다.

프로파일 비교표

프로파일용도포함 서비스
minimal드라이버 개발 최소 환경Redis, MQTT Broker
standard표준 개발환경 (권장)+ InfluxDB, Kafka, Zookeeper
full전체 기능 개발+ TypeDB, Grafana
full+monitoring운영 모니터링 포함+ Prometheus
app소스 없이 앱 실행+ Caffeine Engine, Caffeine Admin

서비스별 포트 매핑

서비스포트프로파일
Redis6379모든 프로파일
MQTT Broker1883, 9001모든 프로파일
InfluxDB8086standard 이상
Kafka9092standard 이상
TypeDB1729full 이상
Grafana3000full 이상
Prometheus9090full+monitoring
Caffeine Engine API5000, 5001app
Caffeine Admin8080app

프로파일 선택 가이드

드라이버 개발만  → minimal
일반 개발 → standard (권장)
AI/그래프 기능 → full
운영 모니터링 → full+monitoring
앱 전체 실행 → app

서브커맨드

cafe setup status — 서비스 상태 확인

# 실행 중인 서비스 목록
cafe setup status

# HTTP /health 엔드포인트 폴링 포함
cafe setup status --health

# 원격 서비스 상태 확인
cafe setup status --remote ssh://user@192.168.1.100

출력 예시:

NAME                    STATUS          PORTS
caffeine-redis running 6379->6379/tcp
caffeine-influxdb running 8086->8086/tcp
caffeine-kafka running 9092->9092/tcp

cafe setup down — 서비스 중지

# 로컬 서비스 중지
cafe setup down

# 원격 서비스 중지
cafe setup down --remote ssh://user@192.168.1.100

cafe setup extract — 배포 리소스 추출

CLI에 내장된 docker-compose.yml, .env.example 등의 배포 파일을 현재 디렉토리에 추출합니다.

# 현재 디렉토리에 추출
cafe setup extract

# 특정 경로에 추출
cafe setup extract --output ./deploy

# 특정 프로파일 파일만 추출
cafe setup extract --profile minimal

# 기존 파일 덮어쓰기
cafe setup extract --force

# 내장 리소스 목록만 확인
cafe setup extract --list

원격 배포 (--remote)

SSH를 통해 원격 서버에 Caffeine을 배포합니다. Docker Context를 자동으로 생성하여 원격 Docker 데몬을 직접 제어합니다.

사전 조건

  1. 원격 서버에 Docker가 설치되어 있어야 합니다
  2. SSH 키 기반 인증이 설정되어 있어야 합니다
# SSH 키 생성 (없는 경우)
ssh-keygen -t ed25519 -C "caffeine-deploy"

# 원격 서버에 공개 키 복사
ssh-copy-id user@192.168.1.100

원격 배포 실행

# 원격 서버에 배포 (위자드 + SSH context 자동 생성)
cafe setup --remote ssh://user@192.168.1.100

# 포트 지정
cafe setup --remote ssh://user@192.168.1.100:22

# Production 모드로 원격 배포
cafe setup --remote ssh://user@192.168.1.100 --mode production

# 원격 서비스 상태 확인
cafe setup status --remote ssh://user@192.168.1.100

# 원격 서비스 중지
cafe setup down --remote ssh://user@192.168.1.100

동작 방식

원격 context 이름은 --remote URL에서 자동 유도됩니다 (예: ssh://user@192.168.1.100caffeine-192-168-1-100). 배포 성공 후 .caffeine-context 파일에 저장되어 이후 status/down 명령에서 자동으로 재사용됩니다.


Production 배포 (--mode production)

cafe setup --mode production

Production 모드에서는 Docker Compose 실행 전에 6개 보안 항목을 자동 검증합니다.

보안 체크리스트

항목검증 내용통과 기준
.env 파일 존재.env 파일 있는지 확인파일 존재
JWT Secret 강도JWT_SECRET 길이 확인44자 이상 (Base64 32바이트+)
기본 비밀번호 미사용admin123, changeme 등 취약 패턴 탐지취약 패턴 없음
CAFFEINE_ENV=production환경 변수 값 확인production 설정됨
TLS 인증서 존재.pfx 인증서 파일 확인caffeine.pfx 존재
Docker 데몬 실행Docker 데몬 상태 확인실행 중

보안 항목 실패 시 경고와 함께 계속 진행 여부를 묻습니다.

Production 오버레이

docker-compose.prod.yml이 존재하면 자동으로 적용됩니다:

  • 컨테이너 리소스 제한 (CPU, 메모리)
  • 로그 로테이션 (10MB, 최대 5개)
  • 재시작 정책 (on-failure:5)
  • Production 환경 변수 오버라이드

.env 파일 자동 생성

위자드 실행 중 .env 파일이 없으면 자동 생성 여부를 묻습니다. 자동 생성 시 모든 시크릿이 RandomNumberGenerator를 사용하여 암호학적으로 안전하게 생성됩니다.

생성되는 주요 변수:

# 자동 생성 예시 (.env)
CAFFEINE_ENV=development
JWT_SECRET=<44자 Base64 랜덤>
INFLUXDB_ADMIN_TOKEN=<44자 Base64 랜덤>
INFLUXDB_ADMIN_PASSWORD=<22자 랜덤>
REDIS_PASSWORD=<22자 랜덤>
KAFKA_CLUSTER_ID=<22자 랜덤>
주의

.env 파일에는 민감한 시크릿이 포함됩니다. .gitignore에 추가하여 소스 컨트롤에 포함되지 않도록 하세요.

echo ".env" >> .gitignore

전체 옵션 참조

cafe setup (위자드)

옵션단축키기본값설명
--mode-mdevelopment배포 모드 (development | production)
--remote원격 Docker SSH URL (예: ssh://user@host)

cafe setup status

옵션단축키기본값설명
--health-HfalseHTTP /health 엔드포인트 폴링
--remote원격 Docker SSH URL

cafe setup down

옵션단축키기본값설명
--remote원격 Docker SSH URL

cafe setup extract

옵션단축키기본값설명
--output-o현재 디렉토리추출 대상 경로
--force-ffalse기존 파일 덮어쓰기
--list-lfalse리소스 목록만 표시
--profile-p특정 프로파일 파일만 추출

문제 해결

Docker를 찾을 수 없음

❌ Docker: 설치되지 않았습니다

해결: Docker 공식 사이트에서 Docker Desktop을 설치합니다.

Docker 데몬이 실행되지 않음

❌ Docker 데몬: 실행되지 않습니다

해결: Docker Desktop을 시작하거나 Linux에서 sudo systemctl start docker를 실행합니다.

docker-compose.yml을 찾을 수 없음

❌ docker-compose.yml을 찾을 수 없습니다.

해결: 먼저 배포 파일을 추출한 후 실행합니다:

cafe setup extract
cafe setup

SSH 연결 실패

❌ 원격 Docker 연결 실패: ssh://user@host

해결 순서:

  1. SSH 연결 직접 테스트: ssh user@host
  2. 원격 Docker 데몬 확인: ssh user@host docker ps
  3. SSH 키 확인: ssh-add -l

다음 단계