도커 + Nginx 환경에서 SSL 갱신 완전 자동화하기

도커 + Nginx 환경에서 SSL 갱신 완전 자동화하기


왜 자동 갱신이 필요한가?

Let’s Encrypt나 ZeroSSL 인증서는 90일마다 갱신이 필요합니다.
이걸 수동으로 갱신하는 건 번거롭고, 서비스 중단 위험까지 있죠.

자동화의 핵심은 acme-companiondocker 환경 변수 구성에 있습니다.


기본 구조

docker-compose.yml 파일은 다음과 같이 구성합니다:

services:
nginx-proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./nginx-certs:/etc/nginx/certs
- ./nginx-vhost:/etc/nginx/vhost.d
- ./nginx-html:/usr/share/nginx/html

acme-companion:
image: nginxproxy/acme-companion
container_name: nginx-proxy-acme
environment:
- DEFAULT_EMAIL=admin@yourdomain.com
- ACME_EAB_KID=your_eab_kid
- ACME_EAB_HMAC_KEY=your_eab_hmac_key
volumes_from:
- nginx-proxy
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./nginx-certs:/etc/nginx/certs:rw
- ./acme:/etc/acme.sh


ZeroSSL 키 발급 및 등록

  1. ZeroSSL 계정 생성

  2. EAB Key 발급 (KID, HMAC_KEY)

  3. 위 환경 변수에 추가

  4. 컨테이너 재시작:

    docker-compose up -d

자동 갱신 확인

아래 명령으로 인증서가 자동 갱신되는지 확인합니다:

docker logs nginx-proxy-acme | grep "Renew"

TIP:
crontab에 별도 등록할 필요 없이, acme-companion이 내부적으로 주기적 체크를 수행합니다.


마무리

이 설정만으로 ZeroSSL + Docker + Nginx 완전 자동 갱신 환경이 완성됩니다.
한 번 세팅해두면 인증서 만료로 새벽에 서버 깨울 일은 없습니다.



게시됨

카테고리

작성자

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다