본문 바로가기

취미, 관심/NAS, Server

[Synology] 무료 도메인(Freenom) DDNS 설정과 와일드카드 인증서 발급(도커, LuaDNS,acme.sh)

사실 이전 글과 다르지 않습니다. 

https://freenom.com 에서 ID 생성 및 도메인을 얻고, luadns 네임서버를 넣어준 후

https://luadns.com 에서 ID생성 및 도메인 레코드 설정을 합니다.

 

그러니까..

#1. Freenom.com 도메인 발급

#2. LuaDNS 설정(freenom 네임서버 설정)

여기까진 완전히 동일하다고 봐도 무방합니다.

 

이제 시놀로지의 도커에서 설정을 합니다...만, 사실 따라하기엔 하나하나 값을 넣어주는것보단 아래 방식이 편할 것 같습니다.

 

패키지 센터, 모든 패키지에서 docker 를 설치해줍니다. 저는 volume1/docker 공용 폴더를 사용합니다만, 상황에 맞게 경로를 수정해서 넣어주시면 됩니다.

 

제어판 -> 작업 스케줄러 -> 생성 -> 예약된 작업 -> 사용자 정의 스크립트를 눌러 작업을 만듭니다.

일반 칸은 이렇게 세팅하시는데, 작업 부분은 아무렇게나 하셔도 됩니다.

한번 실행할거라 스케줄은 건너뛰고, 작업 설정 란으로 이동해서 사용자 정의 스크립트 부분에 아래와 같이 채워줍니다.

 

알림 설정이 되어있다면 실행 정보를 받아보시는것도 좋겠죠.

#!/bin/sh

# docker-ddns 설정파일이 위치할 절대경로
DDNS_FOLDER='/volume1/docker/ddns-updater'

# LuaDNS 관련 내용
DOMAIN="example.com"
HOST="@"
EMAIL="luaid@example.com"
TOKEN="lua_api_key"

# ddns-updater file 생성
mkdir -p ${DDNS_FOLDER}
touch ${DDNS_FOLDER}/config.json
echo -e { \
  "\"settings"\": [ \
    { \
      "\"provider"\": "\"luadns"\", \
      "\"domain"\": "\"${DOMAIN}"\", \
      "\"host"\": "\"${HOST}"\", \
      "\"email"\": "\"${EMAIL}"\", \
      "\"token"\": "\"${TOKEN}"\", \
      "\"ip_version"\": "\"ipv4"\" \
    } \
  ] \
} > ${DDNS_FOLDER}/config.json
chown -R 1000:1000 ${DDNS_FOLDER}
chmod 700 ${DDNS_FOLDER}
chmod 400 ${DDNS_FOLDER}/config.json

# ddns-updater docker 실행
docker run -d --name ddns-updater -p 8000:8000/tcp -v "${DDNS_FOLDER}":/updater/data qmcgaw/ddns-updater

LuaDNS 관련 내용 부분을 지우시고, 아래 # ddns-updater file 생성 부분에 있는 값을 직접 채워도 무방합니다.

 

실행을 하시면..

이렇게 도커 컨테이너가 하나 생깁니다. 로그를 볼게요

컨테이너를 더블클릭해서 들어가줍니다.

이런 로그가 뜹니다. 완료!

 

https://api.luadns.com/zones 사이트로 돌아가서 IP가 변경되었는지 확인할 수 있습니다. 물론 브라우저에 내가 지정한 도메인을 입력해 정상적으로 접속되는지 확인을 해도 됩니다.

 

인증서는 

2021.10.01 - [Synology] 시놀로지에서 클라우드플레어 DDNS 설정하고 와일드카드 인증서 받기 #2

이 내용과 거의 비슷한데, dns-api를 luadns를 사용하는것만 다릅니다. 

 

아래 내용을 적당히 수정해서 넣으시면 됩니다. 

# synology DSM LuaDNS acme.sh
# zerossl에 등록할 이메일
export ACCOUNT_EMAIL='lua@example.com'
# 도메인
export DOMAIN="example.com"
# LuaDNS 정보
export LUA_Key="lua_token"
export LUA_Email="lua@example.com"

# 시놀로지 정보
export SYNO_Username='SYNO_ID'
export SYNO_Password='SYNO_PW'
export SYNO_Certificate=""

# Install acme.sh
cd ~
wget https://github.com/acmesh-official/acme.sh/archive/master.tar.gz
tar xvf master.tar.gz
cd acme.sh-master/
./acme.sh --install --nocron --home /usr/local/share/acme.sh --accountemail "${ACCOUNT_EMAIL}"
source ~/.profile

# Creating the certificate
cd /usr/local/share/acme.sh
./acme.sh --issue --home . -d "${DOMAIN}" -d "*.${DOMAIN}" --dns "dns_lua"

# 기본 인증서 치환
cd /usr/local/share/acme.sh
./acme.sh --deploy --home . -d "${DOMAIN}" -d "*.${DOMAIN}" --deploy-hook synology_dsm

 

인증서 갱신 설정

작업 스케줄러에 아래 내용을 넣어주시고, 매주 돌리시거나, 월 1회 돌리도록 설정합니다. 

# renew certificates 
/usr/local/share/acme.sh/acme.sh --cron --home /usr/local/share/acme.sh/