D: 🚀 Supabase를 프로덕션 환경에서 Self-Hosting할 때 꼭 필요한 커스텀 도메인과 HTTPS 설정을 단계별로 알아보겠습니다!
(이 가이드는 Ubuntu 20.04+ 기준으로 작성되었습니다)
🔍 왜 커스텀 도메인이 필요한가요?
- 기본
localhost
나 IP 주소로 접근하면 ❌ 보안 이슈 발생 - 모바일 앱/웹에서 CORS 문제 ⚠️
- 브라우저가 안전하지 않은 연결로 차단 🚫
- 전문적인 서비스 이미지 구축 ✨
📦 전제 조건
- 도메인 구매 완료 (ex:
yourdomain.com
) - 서버에 Docker & Docker-Compose 설치
- 이미 Supabase가 기본 설정으로 실행 중
# Supabase 실행 확인
docker ps
🛠 STEP 1: DNS 설정 (Cloudflare 예시)
- Cloudflare 대시보드에서 DNS 레코드 추가
A
레코드:api.yourdomain.com
→ 서버 IPCNAME
레코드:supabase.yourdomain.com
→api.yourdomain.com
🌐 예시 설정: | Type | Name | Content |
---|---|---|---|
A | api | 123.123.123.123 | |
CNAME | supabase | api.yourdomain.com |
🔐 STEP 2: SSL 인증서 발급 (Certbot)
# Certbot 설치
sudo apt install certbot python3-certbot-nginx
# 인증서 발급 (Nginx 사용 시)
sudo certbot certonly --nginx -d api.yourdomain.com -d supabase.yourdomain.com
✅ 성공 시 경로:
/etc/letsencrypt/live/api.yourdomain.com/
(privkey.pem, fullchain.pem 파일 확인)
⚙️ STEP 3: Supabase 구성 수정
docker-compose.yml
파일에서 환경 변수 수정:
services:
kong:
environment:
- KONG_HTTP_HOST=supabase.yourdomain.com
- KONG_HTTPS_HOST=supabase.yourdomain.com
- KONG_ADMIN_LISTEN=0.0.0.0:8001
studio:
environment:
- STUDIO_PG_META_URL=http://kong:8000
- SUPABASE_PUBLIC_URL=https://supabase.yourdomain.com
🌐 STEP 4: Nginx 리버스 프록시 설정
/etc/nginx/sites-available/supabase
파일 생성:
server {
listen 80;
server_name api.yourdomain.com supabase.yourdomain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name api.yourdomain.com supabase.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/api.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:3000; # Supabase 기본 포트
proxy_set_header Host $host;
}
}
# Nginx 재시작
sudo systemctl restart nginx
🔥 STEP 5: Supabase 재배포 & 테스트
# 변경 사항 적용
docker-compose down && docker-compose up -d
# HTTPS 연결 테스트
curl -I https://supabase.yourdomain.com/rest/v1/
🟢 성공 응답: HTTP/2 200
🚨 주의사항
- 포트 충돌 확인: Nginx와 Supabase가 동일 포트 사용하지 않도록
- 방화벽 설정:
ufw allow 443/tcp
- 인증서 자동 갱신:
sudo certbot renew --dry-run
💡 고급 설정 팁
- 로드 밸런싱 필요 시: AWS ALB/Nginx upstream 사용
- HTTP/2 활성화: Nginx 설정에
http2
추가 - HSTS 헤더 추가: 보안 강화
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
이제 여러분의 Supabase 인스턴스는 완벽한 프로덕션 환경에서 운영될 준비가 되었습니다! 🎉
문제 발생 시 Supabase 공식 Discord 커뮤니티에서 도움을 받으세요.