프로젝트 소개

# RelayAB 개요 RelayAB는 자체 호스팅 AI API 게이트웨이(중계소)로, 상위 AI 서비스의 API Key를 소수의 사용자에게 안전하고 통제 가능하게 공유하며 세부적인 권한 및 사용량 관리를 제공합니다. Vercel에 원클릭 배포를 지원하며 OpenAI 및 Anthropic의 API 프로토콜과 호환됩니다. ## 핵심 기능 - **다중 사용자 및 역할**: 관리자(admin)와 일반 사용자(user) 두 가지 역할을 지원하며, 사용자 비밀번호는 bcrypt 단방향 해시로 저장됩니다. - **크레딧 할당량 관리**: 관리자는 각 계정에 총 크레딧 양과 접근 가능한 모델을 할당할 수 있으며, 계정 내 모든 API Key가 해당 크레딧을 공유하고 소진 시 모두 중단됩니다. - **사용자 셀프 서비스**: 일반 사용자는 콘솔에서 직접 API Key를 생성, 이름 변경, 활성화/비활성화 또는 삭제할 수 있으며 비밀번호도 자체 변경 가능합니다. - **세부적인 Key 제어**: 각 사용자는 여러 개의 API Key를 생성할 수 있으며, 각 Key는 만료 시간, 활성화 상태 및 모델 화이트리스트를 독립적으로 구성할 수 있습니다(계정 화이트리스트 기준으로만 축소 가능). - **호환 프로토콜**: OpenAI Chat Completions 및 Anthropic Messages 프로토콜을 지원하며, 클라이언트 모델을 상위 실제 모델로 매핑하는 기능도 제공합니다. - **안전한 저장**: 상위 Provider Key는 AES-256-GCM으로 암호화되어 Redis에 저장되며, 마스터 키 분실 시 데이터는 영구적으로 복구 불가능합니다. - **다국어 인터페이스**: 기본 언어는 중국어이며 영어를 지원하고, 페이지 하단에서 원클릭으로 전환 가능합니다. - **사용자 친화적인 문서 페이지**: 복사 가능한 인터페이스 주소와 OpenAI/Anthropic 호환 예제 코드를 제공합니다. ## 기술 스택 - **프레임워크**: Next.js 15 App Router + React 19 + TypeScript 5 - **데이터 저장소**: Upstash for Redis (Vercel Marketplace를 통해 원클릭 설치 가능) - **인증**: iron-session 8 + bcryptjs (work factor 12) - **암호화**: AES-256-GCM + bcryptjs - **상위 AI 통합**: Vercel AI SDK - **테스트**: Vitest + Playwright ## 빠른 시작 1. **의존성 설치**: `pnpm install` 2. **환경 변수 설정**: `.env.example`을 복사하여 `.env.local`로 만들고, `RELAY_AUTH`(마스터 비밀번호이자 관리자 로그인 비밀번호)만 설정하면 됩니다. Upstash 변수는 Vercel에서 자동으로 주입됩니다. 3. **개발 서버 시작**: `pnpm dev` 실행 후 `http://localhost:3000`에 접속합니다. 4. **로그인**: 최초 시작 시 자동으로 관리자 계정이 생성되며, 사용자 이름은 기본적으로 `admin`, 비밀번호는 `RELAY_AUTH` 값입니다. ## Vercel에 배포 프로젝트는 원클릭 배포 버튼을 제공하며, 배포 시 `RELAY_AUTH` 환경 변수만 입력하면 됩니다. 배포 성공 후 Vercel Marketplace를 통해 Upstash 데이터베이스를 설치한 다음, 다시 배포(Redeploy)하면 적용됩니다. ## 보안 사항 - 사용자 비밀번호는 bcrypt 단방향 해시로 저장되어 원문을 역추적할 수 없습니다. - 고객 API Key는 SHA-256 해시 값만 저장되며, 평문은 생성 시 한 번만 반환됩니다. - 상위 Provider Key는 AES-256-GCM으로 암호화되어 저장되며, 마스터 키 분실 시 복구가 불가능합니다. - Session Cookie는 iron-session으로 암호화되며 HttpOnly, Secure 및 SameSite=Lax 속성이 설정됩니다. ## 문서 및 운영 프로젝트는 상세한 아키텍처, 데이터 모델, API 라우트, 테스트 및 배포 문서를 제공합니다. 또한 bootstrap-admin, reset-password, rotate-key, list-usage 등의 운영 스크립트 명령어도 포함되어 있습니다. ## 라이선스 MIT