[ubuntu, docker] 도커 컨테이너로 클라우드플레어 DDNS 사용하기
앞서 시놀로지에서 클라우드플레어 API를 이용한 DDNS 설정을 작성했습니다.
이번엔 도커를 이용해 간단하게 DDNS를 이용해 봅니다.
시놀로지 뿐 아니라 도커가 사용 가능한 모든 장치에서 가능한 방법이라, 활용도가 높을 것 같네요. (특히 저처럼 초보자들..)
이전 글에 클플 API Key를 받는 방법이 기술되어 있어, 간단하게 작성합니다.
도커가 설치된 환경에서 ssh로 접속하여 아래 명령을 넣으면 끝입니다.
docker run -d --name=cloudflare-ddns --restart=always -e API_KEY=[클라우드플레어 API Key] -e ZONE=[도메인] -e SUBDOMAIN=[DDNS를 적용할 서브도메인. 없는경우 루트 도메인을 갱신함] oznu/cloudflare-ddns
별 내용은 없지만, 자세한 설정이나 내용은 아래를 참고해주세요.
https://hub.docker.com/r/oznu/cloudflare-ddns/
환경 변수의 간단한 설명은 아래와 같습니다.
PROXIED – CloudFlare CDN을 사용하는 경우 true로 설정. 기본값은 false
DELETE_ON_STOP – 컨테이너가 정지되면 dns레코드를 삭제하도록 설정, 기본값은 false
INTERFACE – 네트워크 인터페이스를 지정해줍니다. 기본값은 공개IP
DNS_SERVER – DNS 서버를 설정합니다. 기본값은 1.1.1.1
CRON – 사용자 정의 CRON값, 즉 어느 주기로 실행할지 설정합니다. 기본값은 5분( */5 * * * *)
사용하는 컨테이너가 많다면 docker-compose를 사용하여 정리하면 좀더 편하겠죠?
docker-compose.yml 파일을 만들어줍니다.
version: '3' services: cf-ddns: image: oznu/cloudflare-ddns:latest restart: always environment: API_KEY: api_token ZONE: example.com SUBDOMAIN: subdomain
루트 도메인을 사용하려면, subdomain을 지우거나 주석(#)처리 하시면 됩니다.
API Token을 여기에 그냥 노출하면 좀 불안하죠? .env 파일을 만들어서 숨겨봅시다.
docker-compose.yml 파일과 같은 경로에 .env파일을 만들고
API_KEY=[api_key]
내용을 넣고, docker-compose.yml 파일을 수정합니다.
version: '3' services: cf-ddns: image: oznu/cloudflare-ddns:latest restart: always environment: API_KEY: ${API_KEY} ZONE: example.com SUBDOMAIN: subdomain
만약, 도메인이 여러개라면?
여러개 만들면 됩니다. 아쉽게도 다중 도메인에 대한 지원은 하지 않나봐요.
version: '3' services: cf-ddns1: image: oznu/cloudflare-ddns:latest restart: always environment: API_KEY: ${API_KEY} ZONE: example1.com SUBDOMAIN: subdomain cf-ddns2: image: oznu/cloudflare-ddns:latest restart: always environment: API_KEY: ${API_KEY} ZONE: example2.com SUBDOMAIN: subdomain
– 도메인마다 API_KEY가 다르다면? API_KEY도 뒤에 1, 2, 3… 붙여서 바꿔주면 됩니다.
container name을 설정해도 됩니다만, 이거같은 경우엔 한번 실행하곤 끝이라서 특별하게 뭘 건들 필요는 없어보입니다.
기본적으로 5분마다 갱신을 합니다.