Skip to content

Latest commit

Β 

History

History
120 lines (87 loc) Β· 4.23 KB

File metadata and controls

120 lines (87 loc) Β· 4.23 KB

πŸ’Ž Dify μ±„νŒ…ν˜• μ›Ή μ•± ν…œν”Œλ¦Ώ

Note

ν˜„μž¬ λ ˆν¬μ§€ν† λ¦¬λŠ” Dify 의 곡식 ν…œν”Œλ¦ΏμΈ webapp-conversation 의 포크 λ²„μ „μž…λ‹ˆλ‹€.

preview

κΈ°μ‘΄ λ ˆν¬μ§€ν† λ¦¬μ—μ„œ μΆ”κ°€λœ λ‚΄μš©λ“€

  • ν•œκ΅­μ–΄ 지원 μΆ”κ°€
  • 둜고 이미지 μ»€μŠ€ν…€
  • powered by Dify 제거
  • κΈ°λ³Έ privacy νŽ˜μ΄μ§€ 제곡

μ•± μ„€μ •

ν˜„μž¬ 디렉토리에 .env.local νŒŒμΌμ„ μƒμ„±ν•˜κ³  .env.example의 λ‚΄μš©μ„ λ³΅μ‚¬ν•˜μ—¬ λ‹€μŒ λ‚΄μš©μ„ μ„€μ •ν•˜μ„Έμš”:

# APP ID: μ•±μ˜ 고유 μ‹λ³„μžμž…λ‹ˆλ‹€. μ•± 상세 νŽ˜μ΄μ§€ URLμ—μ„œ 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.
# 예λ₯Ό λ“€μ–΄, URL `https://cloud.dify.ai/app/xxx/workflow`μ—μ„œ `xxx` 값이 APP IDμž…λ‹ˆλ‹€.
NEXT_PUBLIC_APP_ID=

# APP API Key: μ•±μ˜ API μš”μ²­μ„ μΈμ¦ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” ν‚€μž…λ‹ˆλ‹€.
# μ•±μ˜ "API Access" νŽ˜μ΄μ§€μ—μ„œ 우츑 μƒλ‹¨μ˜ "API Key" λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.
NEXT_PUBLIC_APP_KEY=

# APP URL: API의 κΈ°λ³Έ URLμž…λ‹ˆλ‹€. Dify ν΄λΌμš°λ“œ μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” 경우, λ‹€μŒμœΌλ‘œ μ„€μ •ν•˜μ„Έμš”: https://api.dify.ai/v1
NEXT_PUBLIC_API_URL=

config/index.ts νŒŒμΌμ—μ„œ μΆ”κ°€ 섀정을 ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

export const APP_INFO: AppInfo = {
  title: "TeddyNote Dify App Template",
  description: "TeddyNote Dify App Template",
  copyright: "TeddyNote",
  privacy_policy: "/privacy",
  default_language: "ko",
  logoUrl: "/teddynote-logo.png",
};

둜고 이미지λ₯Ό 직접 ν˜ΈμŠ€νŒ…ν•˜λ €λ©΄ src/public 폴더 μ•„λž˜μ— 이미지 νŒŒμΌμ„ λ„£μ–΄μ£Όμ„Έμš”.
이후 logoUrl: "/your-image-file-name.png" 와 같이 μ„€μ •ν•΄μ£Όμ‹œλ©΄ λ©λ‹ˆλ‹€.

κ°œμΈμ •λ³΄ 처리방침 νŽΈμ§‘

src/app/privacy/page.tsx νŒŒμΌμ„ νŽΈμ§‘ν•΄μ£Όμ„Έμš”.
이후 http://localhost:3000/privacy μ—μ„œ ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.

μ‹œμž‘ν•˜κΈ°

λ¨Όμ € μ˜μ‘΄μ„±μ„ μ„€μΉ˜ν•΄μ£Όμ„Έμš”:

npm install
# λ˜λŠ”
yarn
# λ˜λŠ”
pnpm install

κ·Έ λ‹€μŒ, 개발 μ„œλ²„λ₯Ό μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

npm run dev
# λ˜λŠ”
yarn dev
# λ˜λŠ”
pnpm dev

λΈŒλΌμš°μ €μ—μ„œ http://localhost:3000을 μ—΄μ–΄ κ²°κ³Όλ₯Ό ν™•μΈν•˜μ„Έμš”.

Docker μ‚¬μš©ν•˜κΈ°

docker build . -t <DOCKER_HUB_REPO>/webapp-conversation:latest
# 이제 3000번 ν¬νŠΈμ—μ„œ μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€
docker run -p 3000:3000 <DOCKER_HUB_REPO>/webapp-conversation:latest

λΈŒλΌμš°μ €μ—μ„œ http://localhost:3000을 μ—΄μ–΄ κ²°κ³Όλ₯Ό ν™•μΈν•˜μ„Έμš”.

🚜 ν”„λ‘œλ•μ…˜ 배포

Next.js 앱을 λ°°ν¬ν•˜λŠ” κ°€μž₯ μ‰¬μš΄ 방법은 Next.js의 μ œμž‘μžμΈ Vercel Platform을 μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

μžμ„Έν•œ λ‚΄μš©μ€ Next.js 배포 λ¬Έμ„œλ₯Ό ν™•μΈν•˜μ„Έμš”.

Vercel 둜 3λΆ„ μ•ˆμ— λ°°ν¬ν•˜κΈ°

[!WARNING] > Vercel Hobbyλ₯Ό μ‚¬μš©ν•˜λŠ” 경우, Vercel의 μ œν•œμœΌλ‘œ 인해 λ©”μ‹œμ§€κ°€ 잘릴 수 μžˆμŠ΅λ‹ˆλ‹€.

  1. 이 Repository λ₯Ό 클둠 or Use this Template 을 톡해, 본인의 Repository 둜 생성
  2. ν•΄λ‹Ή Repo λ₯Ό Vercel νŽ˜μ΄μ§€ μ—μ„œ κΆŒν•œ λΆ€μ—¬ν•΄μ„œ κ°€μ Έμ˜€κΈ°
  3. ν•΄λ‹Ή Repo λ₯Ό Import λ²„νŠΌ λˆ„λ₯΄κ³  ν™˜κ²½λ³€μˆ˜ μž…λ ₯ ν›„ > Deploy λ²„νŠΌ 클릭
  4. 배포 μ™„λ£Œ

(μΆ”κ°€) μ»€μŠ€ν…€ 도메인 μ—°κ²°

  1. μœ„μ˜ 배포 μ™„λ£Œ ν™”λ©΄μ—μ„œ Add Domain λ²„νŠΌμ„ λˆ„λ₯΄κ±°λ‚˜ Project Settings > Domains > Add λ₯Ό 톡해 ν•΄λ‹Ή ν™”λ©΄ μ§„μž… Domain μž…λ ₯칸에 μ›ν•˜λŠ” 도메인 μž…λ ₯ (ex. www.teddynote.com) ν›„ Add Domain λ²„νŠΌ 클릭
  2. 아직 도메인 λΌμš°νŒ… ν…Œμ΄λΈ” 섀정이 μ•ˆλ˜μ—ˆκΈ° λ•Œλ¬Έμ— Invalid Configuration μ—λŸ¬ λ°œμƒ
  3. DNS ν…Œμ΄λΈ”μ— CNAME μΆ”κ°€ (κ°€λΉ„μ•„, namecheap λ“± DNS ν˜ΈμŠ€νŒ… μ‚¬μ΄νŠΈμ—λŠ” λͺ¨λ‘ 이 κΈ°λŠ₯이 μžˆμŠ΅λ‹ˆλ‹€)
  4. μΆ”κ°€ ν›„ 기닀리면 μžλ™μœΌλ‘œ μ»€μŠ€ν…€ 도메인 μ—°κ²° + https μ„€μ •

License

MIT License