SUPABASE

Supabase
프로젝트 생성 & 키 셋업

오픈소스 Firebase 대안 Supabase로 빠르게 백엔드를 띄우는 가이드입니다. PostgreSQL·Auth·Storage·Realtime·Edge Functions를 한 번에 구성합니다.

무료 플랜

2개 프로젝트

유료 전환

Pro $25/월~

필요 정보

GitHub 계정 권장

Overview

시작 전에 확인하세요

Supabase 무료 플랜은 프로젝트가 1주일 비활성 시 일시 정지됩니다. 프로덕션 서비스는 Pro 플랜($25/월~)으로 전환해야 안정적입니다. Row Level Security(RLS)를 반드시 켜두고 시작하세요 — 기본 비활성이면 모든 데이터가 공개됩니다.

GitHub 계정

Supabase는 GitHub OAuth 기반.

리전 선택

한국은 Tokyo(ap-northeast-1).

RLS 정책 설계

Row Level Security 기본 비활성.

두 종류의 키 구분

anon vs service_role.

Step by Step

단계별 가이드

01

SIGNUP

계정 가입 & 조직 생성

supabase.com에서 GitHub으로 가입.

  • Sign in with GitHub 권장 (이메일도 가능)
  • 조직(Organization) 자동 생성 — 팀 단위로 프로젝트 묶음
  • 팀원 초대는 조직 단위로 관리
  • 무료 플랜: 조직당 프로젝트 2개 제한
02

PROJECT

새 프로젝트 생성

데이터베이스와 리전을 결정합니다.

  • New Project 클릭
  • 프로젝트 이름 (URL 슬러그로 사용됨)
  • Database Password 생성 (강력한 비밀번호, 안전 보관)
  • Region: Northeast Asia (Tokyo)가 한국에서 가장 빠름
  • Pricing Plan: Free / Pro / Team
  • 프로비저닝 2~3분 소요
03

KEYS

API 키 확인

두 가지 키의 역할을 명확히 이해하세요.

  • Settings > API 메뉴
  • Project URL: https://${id}.supabase.co
  • anon public key: 프론트엔드에서 사용 가능, RLS로 보호됨
  • service_role key: 서버 전용, RLS 우회 · 절대 노출 금지
  • JWT Secret: 커스텀 토큰 발급 시 사용
  • .env.local에 NEXT_PUBLIC_SUPABASE_URL / ANON_KEY 저장
04

AUTH

Authentication 설정

로그인 방식을 활성화합니다.

  • Authentication > Providers 메뉴
  • Email (기본 활성), Phone, Google, Apple, Kakao 등
  • 각 OAuth 공급자는 별도 설정 필요 (Client ID/Secret)
  • Redirect URL: https://${id}.supabase.co/auth/v1/callback
  • Email Templates 한국어로 커스터마이징
  • Rate Limits 확인 (무료 플랜은 시간당 제한)
05

DATABASE

테이블 생성 & RLS 정책

Postgres 테이블을 만들고 보안 정책을 설정.

  • Table Editor로 GUI 생성 또는 SQL Editor에서 DDL 실행
  • 신규 테이블은 반드시 Enable RLS 체크
  • RLS 정책 예: "auth.uid() = user_id" (본인만 조회)
  • Realtime 활성화 — INSERT/UPDATE/DELETE 이벤트 구독
  • Foreign Key 관계 설정 (auth.users와 연결 권장)
06

STORAGE

Storage 버킷 설정

파일 업로드를 위한 버킷 생성.

  • Storage > New Bucket
  • Public / Private 선택
  • Public: 누구나 URL로 접근, 프로필 이미지 등에 적합
  • Private: 인증된 사용자만, signed URL로 접근
  • RLS 정책으로 업로드·다운로드 권한 제어
  • 이미지 변환 기능(image transformation)은 Pro 플랜
07

FUNCTIONS

Edge Functions 배포

서버리스 함수로 커스텀 API 구현.

  • Deno 런타임 기반, TypeScript 지원
  • supabase init → supabase functions new my-func
  • supabase functions deploy my-func
  • 외부 API 호출·복잡한 로직·웹훅 처리에 유용
  • 환경변수는 supabase secrets set 명령
  • 무료 플랜 한도: 500K invocations/월
08

OPS

팀 초대 & 백업

운영 필수 설정.

  • Organization Settings > Team에서 멤버 초대
  • 역할: Owner / Developer (세부 권한은 Pro 이상)
  • Database > Backups: 일일 자동 백업
  • Free 플랜은 7일 보관, Pro는 30일
  • Point-in-time Recovery는 Team 플랜 이상
  • Disable Postgres upgrades 비활성 권장

Pitfalls

자주 막히는 부분

RLS 비활성 상태로 배포

Row Level Security가 꺼져 있으면 anon 키로 모든 테이블 조회/수정이 가능합니다. 데이터 유출 사고 1순위.

service_role 키 프론트 노출

service_role은 RLS를 우회하는 관리자 키입니다. NEXT_PUBLIC_ 접두사를 절대 붙이면 안 됩니다.

무료 플랜 자동 일시정지

1주일 비활성 시 프로젝트가 paused 상태로 전환되어 API가 404를 반환합니다. 프로덕션은 Pro 필수.

리전 변경 불가

프로젝트 생성 시 리전은 변경 불가. 잘못 선택하면 새 프로젝트 만들고 마이그레이션해야 합니다.

Database Password 분실

복구 불가능합니다. 반드시 비밀번호 관리자에 저장. 잃으면 새 프로젝트를 만들어야 합니다.

등록이 복잡하면 대행해 드려요

제이씨랩이 진행하는 프로젝트는 개발자 계정 셋업부터 출시·운영까지 모두 포함됩니다.