Skip to content

deploy: nginx + Let's Encrypt HTTPS 구성 및 DB 시크릿 관리 개선 (리뷰 기록용) - #2

Merged
hamtorygoals merged 2 commits into
pre-nginx-https-snapshotfrom
main
Jul 5, 2026
Merged

deploy: nginx + Let's Encrypt HTTPS 구성 및 DB 시크릿 관리 개선 (리뷰 기록용)#2
hamtorygoals merged 2 commits into
pre-nginx-https-snapshotfrom
main

Conversation

@hamtorygoals

Copy link
Copy Markdown
Member

📌 Summary

해당 PR에서 작업한 내용을 간단히 요약해주세요.

⚠️ 이 PR은 리뷰/기록용입니다. 아래 커밋들은 긴급성 때문에 이미 main에 직접 push되어 반영된 상태이며,
이 PR을 머지해도 main에는 아무 변화가 없습니다(diff가 이미 main에 포함되어 있음). 리뷰 코멘트만 남겨주세요.

  • api.zipzip.site 도메인 + nginx 리버스 프록시 + Let's Encrypt HTTPS 구성
  • JAR 네이티브 빌드로 전환(QEMU 에뮬레이션 컴파일 회피)
  • DB 접속정보를 서버 수동 관리 → GitHub Secrets 개별 등록 + stdin 전달 방식으로 변경
  • CD 배포를 docker rundocker compose 기반으로 전환

✅ Tasks

이번 PR에서 수행한 작업을 체크리스트로 작성해주세요.

  • Dockerfile을 단일 스테이지로 변경, JAR은 CD에서 네이티브(x86) 빌드 후 arm64 이미지에 COPY만
  • deploy/ 디렉토리 신설: nginx+certbot+api compose 스택, nginx 설정(80 리다이렉트 + 443 SSL)
  • Let's Encrypt 인증서 최초 발급(webroot 방식) 및 자동 갱신 루프 구성
  • SPRING_DATASOURCE_URL/USERNAME/PASSWORD를 GitHub Secrets에 개별 등록, 배포 시 stdin으로 서버에 전달
  • 배포 전용 SSH 키의 forced command와 stdin 전달 방식 검증
  • 8080 포트 공개 규칙 제거(iptables + OCI Security List), nginx 경유(80/443)만 외부 노출

🔥 Troubleshooting

작업 중 발생한 문제와 해결 과정을 작성해주세요. 없다면 "없음"으로 작성해주세요.

  • 최초 Dockerfile은 멀티스테이지로 Gradle 빌드까지 포함해서, arm64 buildx 빌드 시 QEMU 에뮬레이션 위에서
    컴파일이 돌아 매우 느렸음 → JAR을 CD에서 네이티브로 먼저 빌드하고 Dockerfile은 결과물만 COPY하도록 분리
  • GitHub Secrets 이름 불일치(DOCKER_USERNAME vs DOCKERHUB_USERNAME)로 Docker Hub 로그인 실패 → 이름 통일
  • SSH_PRIVATE_KEY 시크릿에 등록된 값이 실제로는 forced command 제한이 없는 다른 키였던 것으로 확인됨
    (배포 시 deploy: command not found 에러로 발견). 로컬 키 파일에서 gh secret set으로 직접 재등록해 해결.
    이 시크릿을 다룰 땐 콘솔 복붙보다 파일에서 직접 등록하는 걸 권장.
  • docker-compose.yml에 개인 Docker Hub 계정명(hamtorygoals)이 하드코딩되어 있던 것을 ${DOCKERHUB_IMAGE}
    변수로 분리(서버 전용 .env, git 미포함)

📸 API Test Results

화면, API 테스트, Postman, Swagger, 프론트 캡처 등 검증 결과를 첨부해주세요.

  • https://api.zipzip.site/actuator/health{"status":"UP"}
  • https://api.zipzip.site/swagger-ui/index.html → 200
  • http://api.zipzip.site/... → 301 → HTTPS 리다이렉트 확인
  • 8080 외부 접근 timeout(완전 차단) 확인

🔍 To Reviewer

리뷰어가 중점적으로 봐줬으면 하는 부분이나 질문을 작성해주세요.

  • DB 시크릿을 GitHub Secrets로 옮긴 결정에 이견 없는지
  • nginx/certbot 설정을 배포 때마다 자동 반영하지 않고 수동으로 두는 현재 방식이 괜찮을지

@hamtorygoals hamtorygoals self-assigned this Jul 5, 2026
@hamtorygoals
hamtorygoals merged commit cba5599 into pre-nginx-https-snapshot Jul 5, 2026
5 of 6 checks passed
@hamtorygoals hamtorygoals added the 🧹 chore 빌드, 설정, 잡무 label Jul 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🧹 chore 빌드, 설정, 잡무

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant