drvlink
설정 완료

drvlink 설치 가이드

처음 사용자도 10분 안에 설정할 수 있도록, 단계별로 안내합니다. 모든 명령과 링크는 복사 버튼이 있어 그대로 사용할 수 있습니다.

현재 환경 변수 상태
.env.local 또는 docker-compose의 environment에 채워주세요.
  • PUBLIC_BASE_URL
    https://drvlink.awl.co.kr
  • AUTH_SECRET
    openssl rand -base64 32 로 생성
  • ENCRYPTION_KEY
    openssl rand -base64 32 (32 bytes)
  • AUTH_GOOGLE_ID
    GCP Console에서 발급
  • AUTH_GOOGLE_SECRET
    GCP Console에서 발급
  • DATABASE_URL
    postgres://drvlink:***@localhost:55433/drvlink
STEP 1
GCP 프로젝트 생성

Google Cloud Console — 새 프로젝트에서 새 프로젝트를 만들거나 기존 프로젝트를 선택하세요. 프로젝트 이름은 예: drvlink.

STEP 2
Google Drive API 활성화

Drive API 라이브러리 페이지에서 "사용" 버튼을 누릅니다. drvlink는 drive.file 스코프만 사용해, 우리가 만들거나 사용자가 명시적으로 공유한 파일에만 접근합니다.

STEP 3
OAuth 동의 화면 구성
  • OAuth 동의 화면 열기
  • User type: External. 앱 이름, 사용자 지원 이메일, 개발자 연락처 이메일을 입력합니다.
  • 스코프: openid, email, profile, https://www.googleapis.com/auth/drive.file
  • 일단 테스트 모드로 두고 본인 이메일과 가까운 협업자를 테스트 사용자로 등록(최대 100명).
  • 앞으로 공개 가입을 받으려면 Submit for Verification을 진행합니다. drive.file은 sensitive scope이므로 데모 영상과 정책 페이지가 필요합니다.
STEP 4
OAuth 클라이언트 ID 생성
  • Credentials → Create OAuth client ID
  • Application type: Web application
  • Authorized JavaScript origins: https://drvlink.awl.co.kr
  • Authorized redirect URIs:
    https://drvlink.awl.co.kr/api/auth/callback/google
  • 생성 후 표시되는 Client IDClient Secret을 복사해 둡니다.
STEP 5
drvlink 환경변수 설정

아래 변수들을 .env.local (개발) 또는 .env (Docker) 파일에 채워주세요. 시크릿 두 개는 명령어로 즉시 생성할 수 있습니다.

openssl rand -base64 32
→ AUTH_SECRET, ENCRYPTION_KEY 각각에 사용
PUBLIC_BASE_URL=https://drvlink.awl.co.kr
AUTH_SECRET=...
ENCRYPTION_KEY=...
AUTH_GOOGLE_ID=...
AUTH_GOOGLE_SECRET=...
DATABASE_URL=postgres://drvlink:drvlink@localhost:5432/drvlink
STEP 6
DB 마이그레이션 & 첫 로그인
  1. Postgres 컨테이너 실행:
    docker run -d --name drvlink-pg \
      -e POSTGRES_USER=drvlink -e POSTGRES_PASSWORD=drvlink -e POSTGRES_DB=drvlink \
      -p 5432:5432 postgres:16-alpine
  2. npm run db:push로 스키마 적용 (또는 npm run db:migrate)
  3. npm run dev 실행 → 로그인

문제가 있다면 /api/health로 상태를 확인하거나 컨테이너 로그를 살펴보세요. 환경변수를 바꾼 뒤에는 서버 재시작이 필요합니다.