# 유비온 서버 설치 문서 v1

# 0.Backend와 Frontend는 Secure Cookie 사용 및 로그인을 위해  HTTPS 설정을 해주셔야 합니다.

# 1.몽고디비는 생성해서 사용하세요 (uss-dev, logdb)

→ 컬렉션 기본값 설정방식은 별도로 전달

# 2.인스턴스서버 3가지 설치 (frontend, backend (API), aibackend (AI))

→ 각각의 env 파일은 별도로 전달

- 파일명

    - 백엔드: .env

    - ai백엔드: .env.setup

    - 프론트엔드: .env.local

# [Setup Veluga Backend 컨테이너 설치 가이드]

## **1. 사전 준비 사항**

- **Docker 설치**: Docker가 설치되어 있어야 합니다. Docker 설치 방법은 Docker 공식 문서를 참고하세요.

## **2. Docker 이미지 Pull**

Azure Container Registry(ACR)에 저장된 Docker 이미지를 Pull하려면 다음 단계를 따르세요.

### **2.1. ACR 로그인**

외부업체는 ACR에 접근할 수 있는 인증 정보(사용자 이름 및 비밀번호)를 제공받아야 합니다. 다음 명령어를 사용하여 ACR에 로그인합니다.

```javascript

docker login ubioncontainerregistry.azurecr.io -u <ACR_USERNAME> -p <ACR_PASSWORD>

```

- `<ACR_USERNAME>`: 제공받은 ACR 사용자 이름

- `<ACR_PASSWORD>`: 제공받은 ACR 비밀번호

### **2.2. Docker 이미지 Pull**

로그인 후, 다음 명령어를 사용하여 Docker 이미지를 Pull합니다.

```javascript
docker pull ubioncontainerregistry.azurecr.io/setup-veluga-backend:latest

```

- `latest`: 최신 버전의 이미지를 Pull합니다. 특정 태그가 필요한 경우, 해당 태그로 변경하세요.

## **3. 환경 변수 파일 준비**

아래는 `.env` 파일의 예시 템플릿입니다.

### **3.1. **`**.env**`** 파일 예시**

```javascript
PORT=8080
NODE_ENV=local
ENVIROMENT=local

# JWT 및 암호화 비밀키
# 임의 값 설정
JWT_SECRET=your_jwt_secret
ENCRYPTION_SECRET=your_encryption_secret
ENCRYPTION_API_KEY_SECRET=your_encryption_api_key_secret

# MongoDB 설정
MONGO_CLUSTER=your_mongo_cluster_url
MONGO_LOGDB=your_mongo_logdb_url
MONGO_DBNAME=your_mongo_dbname
MONGO_USER=your_mongo_user
MONGO_PASSWORD=your_mongo_password

# 백엔드 서버 및 ai 서버 URL 설정
# 배포된 주소 설정
SERVER_URL=https://your_api_server_url
AI_SERVER_URL=your_ai_server_url

# Mailgun 키 설정
MAILGUN_API_KEY=your_mailgun_api_key

# GCP 자격 증명
VELUGA_BACKEND_GOOGLE_CREDENTIAL='your_google_credentials_json'
VELUGA_BACKEND_GOOGLE_SA=your_google_service_account_json

# 노션 인증 및 콜백 설정
# 사용하실 경우 설정
SOCIAL_NOTION_CLIENT_ID=your_notion_client_id
SOCIAL_NOTION_CLIENT_SECRET_ID=your_notion_clinet_secret_id
NOTION_CALLBACK_URL=https://your-api-url/external-app/notion/callback

# sqs or rabbitmq 택 1 (ai 서버와 일치해야 함)
SET_QUEUE_TYPE=sqs

# AWS SQS 설정
# RABBITMQ 사용 시 무시
# 먼저 FIFO 큐 생성 후 설정
AWS_ACCESS_KEY_ID=your_aws_access_key
AWS_SECRET_ACCESS_KEY=your_aws_secret_key
AWS_SQS_QUEUE_URL=your_sqs_queue_url

# RABBITMQ 설정
# SQS 사용 시 무시
# QUEUE NAM은 임의로 설정 후 ai서버와 동기화
RABBITMQ_URL=your_rabbitmq_url
RABBITMQ_QUEUE_NAME=your_rabbitmq_queue_name

# 법령 API 정보 https://open.law.go.kr/
LAW_API_OC_NAME=your_law_api_oc_name
LAW_API_DOMAIN=https://www.law.go.kr/DRF/lawService.do
LAW_API_SEARCH_DOMAIN=https://www.law.go.kr/DRF/lawSearch.do
LAW_DOMAIN=https://www.law.go.kr/lsSc.do
PREC_DOMAIN=https://www.law.go.kr/판례/

# Partner
ADMIN_API_URL=https://admin-api.veluga.app
PARTNER_API_KEY=your_veluga_partner_api_key
```

**주의사항**:

- 모든 `your_*` 항목을 실제 값으로 대체하세요.

    - DB, API_KEY, Queue 등은 직접 만드시면 됩니다.

- `.env`파일은 보안상 안전한 위치에 보관하고, 접근 권한을 제한하세요.

- `VELUGA_BACKEND_GOOGLE_SA`는 ''(따옴표)로 묶지 말고 json 형식 그대로 넣어주세요.

- `PARTNER_API_KEY` 는 별도로 전달드린 값을 넣어주세요.

- sqs 와 rabbitmq 중 하나를 선택해서 사용하시고, 선택한 큐 정보가 ai 서버와 일치해야 합니다.

## **4. Docker 컨테이너 실행**

환경 변수 파일을 준비한 후, 다음 명령어를 사용하여 Docker 컨테이너를 실행합니다.

```javascript

docker run -d -p 8080:8080 --env-file ./path/to/.env ubioncontainerregistry.azurecr.io/setup-veluga-backend:latest

```

### **명령어 설명**

- `d`: 컨테이너를 백그라운드에서 실행합니다.

- `p 8080:8080`: 호스트의 포트 8080을 컨테이너의 포트 8080에 매핑합니다. 필요에 따라 포트를 변경할 수 있습니다.

- `-env-file ./path/to/.env`: 외부업체가 생성한 `.env`파일의 경로를 지정합니다.

- ubioncontainerregistry`[.azurecr.io/setup-veluga-backend:latest](https://velugaappcontainerregistry.azurecr.io/dev-usamsung-backend:latest)`: 사용하려는 Docker 이미지와 태그입니다.

**예시**:

```javascript
docker run -d -p 8080:8080 --env-file ./.env ubioncontainerregistry.azurecr.io/setup-veluga-backend:latest

```

## **5. 컨테이너 상태 확인 및 관리**

### **5.1. 실행 중인 컨테이너 확인**

```javascript
docker ps

```

### **5.2. 컨테이너 로그 확인**

실행 중인 컨테이너의 로그를 확인하려면 다음 명령어를 사용하세요.

```javascript
docker logs <컨테이너_ID>

```

### **5.3. 컨테이너 중지**

컨테이너를 중지하려면 다음 명령어를 사용하세요.

```javascript
docker stop <컨테이너_ID>

```

### **5.4. 컨테이너 제거**

컨테이너를 제거하려면 다음 명령어를 사용하세요.

```javascript
docker rm <컨테이너_ID>

```

# [Setup Veluga AI Backend 컨테이너 설치 가이드]

## **1. 사전 준비 사항**

- **Docker 설치**: Docker가 설치되어 있어야 합니다. Docker 설치 방법은 Docker 공식 문서를 참고하세요.

## **2. Docker 이미지 Pull**

Azure Container Registry(ACR)에 저장된 Docker 이미지를 Pull하려면 다음 단계를 따르세요.

### **2.1. ACR 로그인**

외부업체는 ACR에 접근할 수 있는 인증 정보(사용자 이름 및 비밀번호)를 제공받아야 합니다. 다음 명령어를 사용하여 ACR에 로그인합니다.

```javascript
docker login ubioncontainerregistry.azurecr.io -u <ACR_USERNAME> -p <ACR_PASSWORD>

```

- `<ACR_USERNAME>`: 제공받은 ACR 사용자 이름

- `<ACR_PASSWORD>`: 제공받은 ACR 비밀번호

### **2.2. Docker 이미지 Pull**

로그인 후, 다음 명령어를 사용하여 Docker 이미지를 Pull합니다.

```javascript
docker pull ubioncontainerregistry.azurecr.io/setup-veluga-ai-backend:latest

```

- `latest`: 최신 버전의 이미지를 Pull합니다. 특정 태그가 필요한 경우, 해당 태그로 변경하세요. 예를 들어, 특정 커밋 해시를 사용할 수 있습니다.

## **3. 환경 변수 파일 준비**

아래는 `.env.setup` 파일의 예시 템플릿입니다.

### **3.1. **`**.env.setup**`** 파일 예시**

```javascript
ENV=local
PORT=8000

# 백엔드 서버 설정
VELUGA_API_SERVER_URL=https://your_api_server_url

# MongoDB 설정
MONGO_URL=your_mongo_cluster_url
MONGO_LOGDB=your_mongo_logdb_url
MONGO_DBNAME=your_mongo_dbname

# LLM 모델별 설정
# OpenAI
OPENAI_API_KEY=your_openai_api_key

# anthropic 설정
ANTHROPIC_API_KEY=your_anthropic_api_key

# gcp 설정
GOOGLE_API_KEY=your_google_api_key
GOOGLE_CLOUD_PROJECT_ID=your_google_cloud_project_id

# sqs or rabbitmq 택 1 (백엔드 서버와 일치해야 함)
SET_QUEUE_TYPE=sqs

# 큐 이름 설정
# - sqs일 경우 aws에서 먼저 만드신 후 설정
# - rabbitmq일 경우 여기서 바로 이름 설정
DOCUMENT_PROCESSING_QUEUE_NAME=your_document_processing_queue_name

# backend 서버에서 만드신 큐 이름과 DOCUMENT_COMPLETE_QUEUE_NAME은 동일해야 합니다.
# - backend 서버에서 rabbitmq를 사용 설정 하셨을 경우 RABBITMQ_QUEUE_NAME
# - backend 서버에서 sqs를 사용 설정 하셨을 경우 만드신 큐 이름
#   - 예시: AWS_SQS_QUEUE_URL=https://sqs.ap-northeast-2.amazonaws.com/123154567/document-complete.fifo 
#          일 경우 document-complete.fifo
DOCUMENT_COMPLETE_QUEUE_NAME=your_document_complete_queue_name

# AWS SQS 설정(백엔드 서버와 일치해야 함)
# RABBITMQ 사용 시 무시
AWS_ACCESS_KEY_ID=your_aws_access_key_id
AWS_SECRET_ACCESS_KEY=your_aws_secret_access_key

# RABBITMQ 설정(백엔드 서버와 일치해야 함)
# SQS 사용 시 무시
RABBITMQ_HOST=your_rabbitmq_host
RABBITMQ_USER=your_rabbitmq_user
RABBITMQ_PASSWORD=your_rabbitmq_password

# pinecone or milvus 택 1 (Vector DB)
SET_SEARCH_DB=pinecone

# Milvus 설정
# Pinecone 사용 시 무시
MILVUS_DIMENSION=1024
MILVUS_DB_URI=your_milvus_db_uri
MILVUS_DB_TOKEN=your_milvus_db_token
MILVUS_DB_NAME=your_milvus_db_name
MILVUS_HYBRID_COLLECTION_NAME=your_milvus_hybrid_collection_name
MILVUS_QUESTION_COLLECTION_NAME=your_milvus_question_collection_name

# Pinecone 및 Pinecone에 생성된 인덱스 설정
# Milvus 사용 시 무시
PINECONE_API_KEY=your_pinecone_api_key
PINECONE_ENVIRONMENT=your_pinecone_environment
PINECONE_INDEX_NAME=your_pinecone_index_name
PINECONE_HYBRID_API_KEY=your_pinecone_hybrid_api_key
PINECONE_HYBRID_ENVIRONMENT=your_pinecone_hybrid_environment
PINECONE_HYBRID_INDEX_NAME=your_pinecone_hybrid_index_name
PINECONE_QUESTION_INDEX_NAME=your_pinecone_question_index_name

# Neo4j 설정
NEO4J_URL=your_neo4j_url
NEO4J_USER=your_neo4j_user
NEO4J_PASSWORD=your_neo4j_password

# Reranking
VOYAGE_API_KEY=your_voyage_api_key

# Embedding
DOCUMENT_EMBEDDING_TYPE=openai

# Chrome driver
CHROME_DRIVER_PATH=app/static/chromedriver/mac/chromedriver
CHROME_EXE_PATH=/opt/google/chrome/chrome-linux64/chrome

# Partner
ADMIN_API_URL=https://admin-api.veluga.app
PARTNER_API_KEY=your_veluga_partner_api_key
```

**주의사항**:

- 모든 `your_*` 항목을 실제 값으로 대체하세요.

    - DB, API_KEY, Queue 등은 직접 만드시면 됩니다.

- `.env.setup` 파일은 보안상 안전한 위치에 보관하고, 접근 권한을 제한하세요.

- `PARTNER_API_KEY` 는 별도로 전달드린 값을 넣어주세요.

- sqs 와 rabbitmq 중 하나를 선택해서 사용하시고, 선택한 큐 정보가 백엔드 서버와 일치해야 합니다.

- Vector DB는 milvus와 pinecone 중 하나를 선택해서 만드신 후 사용하세요.

## **4. Docker 컨테이너 실행**

환경 변수 파일을 준비한 후, 다음 명령어를 사용하여 Docker 컨테이너를 실행합니다.

```javascript
docker run -d -p 8000:8000 --env-file ./path/to/.env.setup ubioncontainerregistry.azurecr.io/setup-veluga-ai-backend:latest

```

### **명령어 설명**

- `d`: 컨테이너를 백그라운드에서 실행합니다.

- `p 8000:8000`: 호스트의 포트 8000을 컨테이너의 포트 8000에 매핑합니다. 필요에 따라 포트를 변경할 수 있습니다.

- `-env-file ./path/to/.env.setup`: 외부업체가 생성한 `.env.setup` 파일의 경로를 지정합니다.

- `[ubioncontainerregistry.azurecr.io/setup-veluga-ai-backend:latest](https://velugaappcontainerregistry.azurecr.io/dev-usamsung-ai-backend:latest)`[: 사용하려는 Docker 이미지와 태그입니다.](https://velugaappcontainerregistry.azurecr.io/dev-usamsung-ai-backend:latest)`[:latest](https://velugaappcontainerregistry.azurecr.io/dev-usamsung-ai-backend:latest)`: 사용하려는 Docker 이미지와 태그입니다.

**예시**:

```javascript
docker run -d -p 8000:8000 --env-file ./.env.setup ubioncontainerregistry.azurecr.io/setup-veluga-ai-backend:latest

```

## **5. 컨테이너 상태 확인 및 관리**

### **5.1. 실행 중인 컨테이너 확인**

```javascript
docker ps

```

### **5.2. 컨테이너 로그 확인**

실행 중인 컨테이너의 로그를 확인하려면 다음 명령어를 사용하세요.

```javascript
docker logs <컨테이너_ID>

```

### **5.3. 컨테이너 중지**

컨테이너를 중지하려면 다음 명령어를 사용하세요.

```javascript
docker stop <컨테이너_ID>

```

### **5.4. 컨테이너 제거**

컨테이너를 제거하려면 다음 명령어를 사용하세요.

setup-veluga-backend

# [Setup Veluga Frontend 컨테이너 설치 가이드]

---

## **1. Docker 이미지 Pull 및 실행**

### **1.1. ACR 로그인**

Azure Container Registry(ACR)에서 이미지를 Pull하기 위해 인증이 필요합니다. 다음 명령어를 사용하여 ACR에 로그인합니다.

```javascript
docker login ubioncontainerregistry.azurecr.io -u <ACR_USERNAME> -p <ACR_PASSWORD>

```

- `**<ACR_USERNAME>**`: 제공받은 ACR 사용자 이름

- `**<ACR_PASSWORD>**`: 제공받은 ACR 비밀번호

### **1.2. Docker 이미지 Pull**

아래 명령어를 사용하여 **ACR에서 Docker 이미지를 Pull**합니다.

```javascript
docker pull ubioncontainerregistry.azurecr.io/setup-veluga-frontend:latest

```

---

## **2. 환경 변수 파일 생성**

**도메인과 서버 URL은 별도의 환경 변수 파일에 정의**해야 합니다. 이 파일은 Docker 실행 시 컨테이너에 환경 변수를 전달합니다.

### **2.1. **`**.env.local**`** 파일 예시**

```javascript
VELUGA_URL=https://custom-domain.veluga.app // 도메인
SERVER_URL=https://custom-api.veluga.app // 서버 URL (API 요청 주소)
```

**주의사항**:

- `.env.local` 파일은 **민감한 정보가 포함될 수 있으므로** 안전한 위치에 보관하고 접근 권한을 제한하세요.

- 이 파일의 이름은 **`.env.local`*로 지정되어야 하며, 컨테이너 실행 시 해당 파일을 경로와 함께 전달합니다.

---

## **3. Docker 컨테이너 실행**

아래 명령어를 사용하여 Docker 컨테이너를 실행합니다. `**.env.local**`** 파일을 전달하여 환경 변수를 적용**합니다.

```javascript
docker run -d -p 3000:3000 --env-file ./.env.local ubioncontainerregistry.azurecr.io/setup-veluga-frontend:latest

```

### **명령어 설명**

- `d`: 컨테이너를 **백그라운드**에서 실행합니다.

- `p 3000:3000`: **호스트의 포트 3000**을 **컨테이너의 포트 3000**에 매핑합니다.

- `-env-file ./env.local`: **외부의 **`**.env.local**`** 파일**을 사용하여 환경 변수를 전달합니다.

- `[ubioncontainerregistry.azurecr.io/setup-veluga-frontend:latest](https://velugaappcontainerregistry.azurecr.io/setup-veluga-frontend:latest)`: 사용할 **Docker 이미지와 태그**입니다.

### **서비스 접근 확인**

- **VelugaFrontend**: [http://localhost:3000](http://localhost:3000/)

- **VelugaBackend (API)**: [http://localhost:8080](http://localhost:8080)

- **VelugaAIBackend (AI)**: [http://localhost:8000](http://localhost:9090)

For the site tree, see the [root Markdown](https://slashpage.com/veluga-api.md).
