# 요구 사항

> 셀프 호스팅 Nodaro에 필요한 것: Docker 24 이상과 Compose v2, Supabase 데이터베이스, S3 호환 스토리지, 포트, 공급자 키 또는 Nodaro Cloud 연결을 확인하세요.

Source: https://nodaro.ai/ko/docs/self-hosting/requirements

셀프 호스팅 Nodaro의 **요구 사항**은 다섯 가지입니다. Docker, 로그인이 포함된 데이터베이스, S3 호환 오브젝트 스토리지, Redis, 그리고 모델 공급자 하나 이상입니다. Community Edition의 Compose 스택에는 데이터베이스, 스토리지, Redis가 번들되어 있으므로, 서버 한 대에서는 Docker와 모델 공급자만 있으면 됩니다. 이 페이지의 나머지 내용은 선택 사항이거나 프로덕션용입니다.

## 필요한 것
| 요구 사항 | Compose 스택에 번들된 것 | 또는 직접 준비 |
| --- | --- | --- |
| **Docker 24 이상**과 **Docker Compose v2** | — | 필수입니다. `docker-compose`가 아니라 `docker compose`로 실행합니다. |
| **데이터베이스와 로그인** | Supabase Postgres, GoTrue, PostgREST. 부팅할 때 마이그레이션이 적용됩니다. 이메일과 비밀번호로 가입합니다. | 관리형 Supabase 프로젝트. 무료 등급으로 충분합니다. 프로젝트 URL, service-role 키, anon 키가 필요하며, 마이그레이션은 직접 적용합니다. |
| **오브젝트 스토리지** | MinIO. 미디어는 내 디스크에 저장됩니다. | S3 호환 스토리지라면 무엇이든 됩니다. 테스트된 스토리지: Cloudflare R2(권장, 이그레스 요금 없음), AWS S3, MinIO, Backblaze B2. |
| **큐** | Redis 7 | 내 Redis. 클러스터나 Sentinel 엔드포인트도 됩니다. |
| **모델 공급자** | — | 공급자 키 하나 이상, 또는 Nodaro Cloud 연결 |

Nodaro는 공개 미디어 URL을 브라우저에 넘겨주므로, 사용자의 브라우저가 로그인 없이 미디어를 읽을 수 있어야 합니다. 번들된 MinIO는 앱 자체 주소의 `/storage/` 아래에서 이를 처리합니다. 내 버킷을 쓴다면 [오브젝트 스토리지 구성](https://nodaro.ai/docs/self-hosting/install#4-configure-object-storage)을 참조하세요.

## 모델 공급자
AI 모델을 호출하는 노드에는 공급자가 필요합니다. 공급자가 없어도 설치는 시작되고 데모도 열리지만, 모델 노드는 실행할 수 없습니다. `/setup` 페이지나 `.env`에 다음 키 중 하나 이상을 추가하세요.

| 변수 | 제공되는 것 |
| --- | --- |
| `KIE_API_KEY` | 가장 넓은 모델 범위: 이미지, 동영상, 오디오, 텍스트 모델 |
| `REPLICATE_API_TOKEN` | 자체 카탈로그가 있는 대체 공급자 |
| `ANTHROPIC_API_KEY` | 텍스트 노드용 Claude 모델 |
| `ELEVENLABS_API_KEY` | 음성 기능: 텍스트 음성 변환, 더빙, 보이스 체인저, 강제 정렬 |
| `FAL_KEY` | 선택 사항입니다. [Sync Lipsync v3](https://nodaro.ai/docs/models/video/sync-lipsync-v3) 같은 모델에 쓰입니다. 이 키가 없으면 해당 모델을 쓸 수 없고, 앱의 나머지 부분은 영향을 받지 않습니다. |

키 대신 설치를 Nodaro Cloud 계정에 연결할 수도 있습니다. [Nodaro Cloud에 연결](https://nodaro.ai/docs/self-hosting/cloud-connect)을 참조하세요. 특정 노드에서 쓰는 키를 포함한 전체 키 목록은 [공급자 키](https://nodaro.ai/docs/self-hosting/provider-keys)에 있습니다.

## 선택 사항
- **Node.js 22 이상**: 개발할 때 API나 워커를 Docker 밖에서 실행하는 데 필요합니다. `tools/`의 명령줄 프로브와 키 생성기도 Node.js로 실행됩니다.
- **도메인 이름과 TLS 인증서**: 프로덕션에 필요합니다. [리버스 프록시와 HTTPS](https://nodaro.ai/docs/self-hosting/reverse-proxy)를 참조하세요.

## 포트
| 포트 | 사용하는 것 | Compose 파일의 공개 여부 |
| --- | --- | --- |
| `3000` | 앱: 편집기, API, 미디어, 로그인이 모두 하나의 출처에 있습니다. | 예 |
| `9001` | 문제 해결용 MinIO 콘솔 | 예, `127.0.0.1`에서만 |
| `80`과 `443` | HTTPS용 리버스 프록시 | Nodaro는 공개하지 않음 |
| `9000` | 컨테이너 안의 API. MCP 클라이언트가 여기에 직접 닿아야 합니다. | 아니요. [MCP](https://nodaro.ai/docs/self-hosting/mcp)를 참조하세요. |

Redis와 데이터베이스는 Compose 네트워크 내부에만 있으며, 내 컴퓨터의 포트를 쓰지 않습니다. `3000`이나 `9001`이 이미 사용 중이라면 `docker-compose.community.yml`에서 해당 매핑의 호스트 쪽 포트를 바꾸세요.

## 디스크
- **이미지.** 첫 부팅에서 약 2.4GB를 내려받습니다.
- **볼륨.** `db-data`에는 데이터베이스, `minio-data`에는 미디어, `redis-data`에는 큐, `app-data`에는 인스턴스 암호화 키가 저장됩니다. Nodaro는 저장된 미디어를 스스로 삭제하지 않으므로 미디어 볼륨은 결과가 생길 때마다 커집니다. 오래된 미디어가 만료되게 하려면 버킷에 수명 주기 규칙을 추가하세요. [확장](https://nodaro.ai/docs/self-hosting/scaling#storage-lifecycle)을 참조하세요.

## 머신 크기
기본 구성은 모든 것을 컨테이너 하나에서 실행하며, 활성 사용자 약 5명까지 충분합니다. 가장 무거운 작업은 렌더링입니다. 렌더링 워커는 헤드리스 Chrome을 실행하고 CPU에 따라 제한되므로, 머신 한 대에 렌더링 워커 1~2개를 계획하세요. 사용자가 더 많다면 워커를 여러 컨테이너로 나누세요. [확장](https://nodaro.ai/docs/self-hosting/scaling)을 참조하세요.

앱 이미지에는 `amd64`와 `arm64` 머신용 빌드가 있습니다.

## Windows
Windows에서는 백업과 복원 스크립트를 PowerShell이나 WSL이 아니라, Git for Windows가 설치하는 셸인 **Git Bash**에서 실행하세요. [백업과 복원](https://nodaro.ai/docs/self-hosting/backups)을 참조하세요.

## 자주 묻는 질문

### 셀프 호스팅 Nodaro에는 어떤 Docker 버전이 필요한가요?

Docker 24 이상과 Docker Compose v2가 필요합니다. docker-compose가 아니라 docker compose로 실행합니다.

### Nodaro를 셀프 호스팅하려면 Supabase 계정이 필요한가요?

아니요. Community Edition의 Compose 스택에는 Supabase Postgres, GoTrue, PostgREST가 번들되어 있고, 마이그레이션도 자동으로 적용됩니다. 관리형 Supabase 프로젝트는 선택 사항이며 필수가 아닙니다.

### Nodaro에서 쓸 수 있는 오브젝트 스토리지는 무엇인가요?

번들된 MinIO나 S3 호환 스토리지라면 무엇이든 쓸 수 있습니다. Cloudflare R2, AWS S3, MinIO, Backblaze B2에서 테스트되었으며, 이그레스 요금이 없는 Cloudflare R2를 권장합니다.

### Nodaro 이미지는 ARM 서버에서 실행되나요?

네. 앱 이미지에는 amd64 빌드와 함께 arm64 빌드도 있습니다.

### 컨테이너 하나로 사용자 몇 명까지 지원할 수 있나요?

컨테이너 하나로 구성하면 활성 사용자 약 5명까지 충분합니다. 그보다 많으면 워커를 별도 컨테이너로 분리하세요.
