문서
NextChat
자체 호스팅 NextChat은 OpenAI용으로 이미 제공되는 변수를 통해 Kunavo에 연결됩니다. OPENAI_API_KEY에 키를, BASE_URL에 원본 주소를, CUSTOM_MODELS에 ID를 지정하면 됩니다. 포크나 패치는 필요하지 않습니다.
환경 변수 세 개 — OPENAI_API_KEY, BASE_URL(기본 오리진), CUSTOM_MODELS — 하나의 키로 자체 호스팅 NextChat에서 Claude와 GPT를 사용할 수 있습니다
CODE=your-access-password
OPENAI_API_KEY=sk-kn-...
BASE_URL=https://api.kunavo.com
HIDE_USER_API_KEY=1
CUSTOM_MODELS=-all,+claude-sonnet-5@OpenAI,+claude-opus-5@OpenAI,+claude-haiku-4-5@OpenAI,+gpt-5-6-sol@OpenAI,+gpt-5-6-terra@OpenAIBASE_URL에는 기본 원본 주소를 입력하고 /v1는 붙이지 않습니다. 문서 페이지에는 접미사에 관한 설명이 없지만, 해당 페이지의 기본값이 https://api.openai.com이고 https://api.openai.com/v1가 아니라는 점이 이를 명확히 보여 줍니다. NextChat이 나머지 경로를 덧붙입니다. 직접 추가한 /v1는 /v1/v1/chat/completions가 되어 404를 반환하고, 오타가 아니라 엔드포인트 오류처럼 보입니다.OPENAI_API_KEY가 설정되어 있으면 서버가 사용자의 키로 Kunavo를 호출하므로 CODE를 통과하는 모든 사용자가 사용자 잔액을 사용합니다. HIDE_USER_API_KEY=1에는 "사용자가 자체 API 키를 입력하지 않도록 하려면 이 값을 1로 설정하세요"라고 명시되어 있습니다. 이 값을 설정하지 않으면 각 방문자가 Settings에서 자신의 키를 붙여넣을 수 있으며, 공유 인스턴스에서는 이 방식이 적합합니다.-all 접두사와 @OpenAI 접미사는 +, -, name=displayName만 다루는 문서 표에 없습니다. 이는 같은 날 확인한 NextChat 자체의 모델 수집 코드에서 가져온 것입니다. -all는 내장 목록을 비워 선택기에 Kunavo가 거부할 ID가 표시되지 않도록 하고, @OpenAI는 새 ID를 OpenAI 공급자에 고정해 BASE_URL로 전송되도록 합니다. 이 접미사 없이 ID를 입력하면 해당 ID 자체가 공급자 이름이 되어 구성한 경로를 거치지 않습니다. 대소문자 표기는 그대로 유지해야 합니다.ENABLE_BALANCE_QUERY도 설정하지 않은 상태로 두세요. 잔액 확인은 OpenAI 자체 대시보드의 결제 경로를 호출하며, 이는 OpenAI 호환 인터페이스에 포함되지 않습니다. 잔액은 /app/billing에서 확인할 수 있습니다.sk-kn-로 시작합니다) $10부터 크레딧을 추가하세요. 호출 비용은 해당 잔액에서 차감되며 실패한 호출에는 요금이 부과되지 않습니다. 그러면 대시보드가 NextChat 설정 화면에서 열립니다.단계별 안내
/app/keys에서 키를 생성해 복사하세요. 키는 한 번만 표시됩니다.OPENAI_API_KEY을 해당 키로,BASE_URL을https://api.kunavo.com로 설정하세요. Vercel에서는 프로젝트 환경 변수로, Docker에서는-e플래그로 설정하고, 로컬에서는.env.local에 넣습니다.CODE을 액세스 비밀번호로 설정하세요. 그렇지 않으면 URL을 발견한 누구나 배포에 접속할 수 있고, 비용은 여러분의 키로 청구됩니다.CUSTOM_MODELS에 사용할 ID를 나열하고 각각에@OpenAI접미사를 붙이세요. 기본 제공 항목을 제외하려면-all로 시작합니다.- 다시 배포하세요. 환경 변수는 서버에서 읽으므로 Vercel 프로젝트는 새로 배포해야 하고, 컨테이너는 재시작해야 합니다. 실행 중인 인스턴스에서는 변수만 수정해도 아무런 변화가 없습니다.
- 앱을 열고 모델 선택기에서 ID 중 하나를 선택한 다음 메시지를 보내세요. 답변이 도착하면 세 변수가 서로 일치하는 것입니다.
NextChat의 환경 변수 페이지에서 확인했습니다(2026년 9월 21일 기준). 서드파티 설정은 변경될 수 있으므로, 여기의 필드 이름이 실제 화면과 다르면 이 문서가 아니라 해당 페이지를 기준으로 삼으세요.
클라이언트를 디버깅하기 전에 확인할 사항
한 번의 요청으로 문제가 엔드포인트, 키 또는 구성 파일 중 어디에 있는지 판단할 수 있습니다. 이 요청에서 JSON이 반환되면 동일한 base URL과 키가 NextChat에서 작동합니다.
# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."필드에 입력할 model id
모든 텍스트 모델은 model id로 접근할 수 있습니다. 현재 목록은 GET /v1/models이며, 가격이 포함된 카탈로그는 모델 페이지에서 확인할 수 있습니다. 요금은 토큰 100만 개당 USD 기준이며 입력 / 출력 순서입니다.
| 모델 ID | Kunavo 입력/출력 | NextChat에서의 위치 |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | 잔액을 신경 쓰지 않고 긴 대화를 나누는 일상적인 대화 |
claude-opus-5 | $3.50 / $17.50 | 비싼 모델을 쓸 만한 주간 질문 하나 |
claude-haiku-4-5 | $0.70 / $3.50 | 요약, 채팅 이름 변경, 공유 인스턴스에서 주로 오가는 짧은 대화 |
gpt-5-6-sol | $2.00 / $12.00 | 같은 선택기에서 같은 키로 사용하는 두 번째 모델군 |
gpt-5-6-terra | $0.70 / $4.20 | 컨텍스트 창이 결정적인 요소인 긴 문서 붙여넣기 |
자주 묻는 질문
NextChat을 사용자 지정 API 엔드포인트에 연결하려면 어떻게 하나요?
자체 호스팅 배포에서 BASE_URL을 엔드포인트의 오리진으로, OPENAI_API_KEY를 해당 엔드포인트에서 발급한 키로 설정하세요. 둘 다 환경 변수로 설정하면 됩니다. NextChat의 환경 변수 페이지에는 BASE_URL이 "OpenAI API 요청 기본 URL 재정의"라고 설명되어 있으므로 코드를 수정할 필요가 없습니다. 앱은 계속 OpenAI 와이어 형식으로 통신하면서 요청을 다른 곳으로 보냅니다. 설정 후 다시 배포하세요. 값은 서버에서 읽으므로 실행 중인 인스턴스에는 적용되지 않습니다.
NextChat의 BASE_URL 끝에 /v1을 붙여야 하나요?
아니요. NextChat이 버전 구간과 경로를 직접 덧붙이기 때문에 BASE_URL의 문서화된 기본값은 https://api.openai.com/v1이 아니라 오리진만 있는 https://api.openai.com입니다. https://api.kunavo.com만 입력하세요. 접미사를 직접 붙이면 경로가 중복되어 404가 발생하고, 이를 엔드포인트가 다운된 것으로 오해하기 쉽습니다.
NextChat의 모델 목록에 사용자 지정 모델을 추가하려면 어떻게 하나요?
CUSTOM_MODELS에는 쉼표로 구분한 목록을 지정합니다. +는 모델 추가, -는 모델 숨기기, name=displayName은 모델 이름 변경을 뜻합니다. NextChat이 모르는 ID는 즉시 생성되므로 +claude-sonnet-5@OpenAI를 지정하면 해당 ID가 선택기에 표시됩니다. 두 가지 세부 사항은 정확히 따라야 합니다. 기본 제공 OpenAI ID를 선택했을 때 오류가 나지 않도록 목록을 -all로 시작해 해당 ID를 숨기고, ID가 모델 이름을 딴 제공업체가 아니라 BASE_URL을 통해 라우팅되도록 @OpenAI 접미사를 유지하세요.
NextChat에서 서버 API 키를 사용해야 하나요, 아니면 각 사용자가 직접 입력하게 해야 하나요?
둘 다 지원되며, 선택에 따라 비용을 부담하는 사람이 달라집니다. OPENAI_API_KEY에 넣은 키는 서버의 키이므로 CODE 비밀번호를 통과한 방문자는 모두 하나의 잔액에서 비용을 사용합니다. 비공개 인스턴스에는 적합하지만, 공유 링크에서는 비용이 커질 수 있습니다. HIDE_USER_API_KEY를 설정하지 않으면 방문자가 설정에서 자신의 키를 입력하고 직접 비용을 부담할 수 있습니다. 이 값을 1로 설정하면 해당 입력란이 사라집니다. 어느 방식이든 사용자가 직접 입력하지 않는 한 키가 브라우저에 전달되지 않습니다.