supabase
프레임워크supabase/supabase
오픈 소스 Firebase 대안으로, Postgres 데이터베이스, 인증, API 및 실시간 기능을 제공합니다.
개요
Supabase는 인증, 자동 생성된 REST 및 GraphQL API, 실시간 구독, 파일 스토리지, AI/벡터 도구가 통합된 관리형 Postgres 개발 플랫폼입니다. 엔터프라이즈급 오픈 소스 도구를 기반으로 구축되었으며, Firebase와 유사한 개발자 경험을 제공합니다.
README 미리보기
\n\n\n\n\n# Supabase\n\n[Supabase](https://supabase.com) is the Postgres development platform. We're building the features of Firebase using enterprise-grade open source tools.\n\n- [x] Hosted Postgres Database. [Docs](https://supabase.com/docs/guides/database)\n- [x] Authentication and Authorization. [Docs](https://supabase.com/docs/guides/auth)\n- [x] Auto-generated APIs.\n - [x] REST. [Docs](https://supabase.com/docs/guides/api)\n - [x] GraphQL. [Docs](https://supabase.com/docs/guides/graphql)\n - [x] Realtime subscriptions. [Docs](https://supabase.com/docs/guides/realtime)\n- [x] Functions.\n - [x] Database Functions. [Docs](https://supabase.com/docs/guides/database/functions)\n - [x] Edge Functions [Docs](https://supabase.com/docs/guides/functions)\n- [x] File Storage. [Docs](https://supabase.com/docs/guides/storage)\n- [x] AI + Vector/Embeddings Toolkit. [Docs](https://supabase.com/docs/guides/ai)\n- [x] Dashboard\n\n\n\nWatch "releases" of this repo to get notified of major updates.\n\n\n\n## Documentation\n\nFor full documentation, visit [supabase.com/docs](https://supabase.com/docs)\n\nTo see how to Contribute, visit [Getting Started](./DEVELOPERS.md)\n\n## Community & Support\n\n- [Community Forum](https://github.com/supabase/supabase/discussions). Best for: help with building, discussion about database best practices.\n- [GitHub Issues](https://github.com/supabase/supabase/issues). Best for: bugs and errors you encounter using Supabase.\n- [Email Support](https://supabase.com/docs/support#business-support). Best for: problems with your database or infrastructure.\n- [Discord](https://discord.supabase.com). Best for: sharing your applications and hanging out with the community.\n\n## How it works\n\nSupabase is a combination of open source tools. We’re building the features of Firebase using enterprise-grade, open source products. If the tools and communities exist, with an MIT, Apache 2, or equivalent open license, we will use and support that tool.
FAQ (5)
문제 해결왜 Supabase 스토리지 업로드에 실제 파일 콘텐츠 대신 multipart boundaries가 포함되어 있나요?
이 문제는 file_options에 대문자로 시작하는 Content-Type 헤더를 전달할 때 발생합니다. 스토리지 백엔드가 multipart 본문을 파싱하지 못하고 전체 엔벌로프(--boundary 문자열 포함)를 파일 콘텐츠로 저장하면서도 여전히 200 OK를 반환합니다.
**해결 방법:** 대신 소문자 content-type 헤더를 사용하세요:
# ❌ 깨짐 - multipart 경계가 저장됨
supabase.storage.from_("bucket").upload(
filename, file_content,
file_options={"Content-Type": file.content_type}
)
# ✅ 정상 작동 - 실제 파일 바이트가 저장됨
supabase.storage.from_("bucket").upload(
filename, file_content,
file_options={"content-type": file.content_type}
)
이 문제는 Python 클라이언트(v2.17.0에서 확인됨)와 직접적인 REST API 호출 모두에 영향을 미칩니다. HTTP 헤더는 RFC에 따라 대소문자를 구분하지 않아야 하지만, 스토리지 백엔드의 multipart 파서는 대소문자를 구분합니다. 이미 손상된 파일을 업로드한 경우, 소문자 헤더로 다시 업로드하고 다운로드 시 유효한 콘텐츠가 반환되는지 확인하세요.
문제 해결supabase.auth.oauth.approveAuthorization()를 호출한 후 window.location.href가 undefined가 되는 이유는 무엇인가요?
supabase.auth.oauth.approveAuthorization() / denyAuthorization()의 응답은 data.redirect_to가 아니라 data.redirect_url을 반환합니다. 이전 Supabase 문서 예제에서는 잘못된 속성 이름을 사용하여 window.location.href = undefined가 되었고, 그 결과 /oauth/undefined로 무한 리다이렉트 루프가 발생했습니다. 해결 방법: const { data, error } = await supabase.auth.oauth.approveAuthorization(authorizationId)를 사용한 다음 window.location.href = data.redirect_url을 사용하세요. 참고: 브라우저에서는 SDK가 기본적으로 자동 리다이렉트를 수행하므로, 수동 리다이렉트는 skipBrowserRedirect: true를 전달하는 경우에만 필요합니다. 문서는 이후 수정되었습니다.
문제 해결Supabase에서 이메일 확인을 비활성화했는데도 왜 여전히 'Email Not Confirmed' 오류가 발생하나요?
'Enable email confirmations' 토글(Authentication > Providers > Email)은 신규 가입에만 적용됩니다. 확인이 활성화된 상태에서 가입한 사용자는 확인되지 않은 상태로 남아 있으며 여전히 'Email Not Confirmed' 오류가 발생합니다. 기존 사용자를 해결하려면 다음 중 하나를 수행하세요: 1) SQL Editor에서 수동으로 확인합니다: UPDATE auth.users SET email_confirmed_at = NOW() WHERE email_confirmed_at IS NULL; (또는 WHERE email = 'user@example.com'으로 특정 사용자를 지정), 또는 2) Authentication > Users에서 테스트 사용자를 삭제하고 다시 가입합니다. 설정을 비활성화한 이후의 신규 가입은 자동으로 확인되며 즉시 로그인할 수 있습니다.
문제 해결실수로 삭제된 Supabase 프로젝트를 복구하는 방법은?
프로젝트 ref, organization, 삭제 날짜를 포함하여 즉시 support@supabase.com으로 Supabase 지원팀에 문의하여 해당 사례를 검토받으세요. Supabase 문서에 따르면 삭제된 프로젝트는 일반적으로 영구적으로 제거되며 직접 복원할 수 없으므로 복구가 보장되지 않는다는 점에 유의하세요. 향후 예방을 위해: Project Settings > Database > Backups에서 일일 백업(Pro plan에서 제공)을 활성화하고, 정기적으로 백업을 다운로드하거나, Project Settings > Database에서 확인할 수 있는 connection string을 통해 pg_dump로 직접 덤프를 생성하세요.
문제 해결Supabase 인보이스를 결제할 때 신용카드 또는 체크카드가 거절되는 이유는 무엇인가요?
Supabase 인보이스를 결제할 때 카드가 거절된 경우, 먼저 은행 또는 카드 발급사에 해당 거래를 차단하지 않았는지 확인하세요. 은행에서 카드에 문제가 없다고 확인했음에도 여러 카드로 결제가 계속 실패한다면, 이는 고객 측에서 해결할 수 없는 결제 시스템 측의 문제입니다. 조직/프로젝트 세부 정보와 함께 support@supabase.com으로 Supabase 결제 지원팀에 직접 문의하면, 팀에서 결제 실패 원인을 조사하고 인보이스를 처리해 드릴 수 있습니다.