|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: "Duck DNS로 DDNS 설정하기 - Mac Mini로 홈서버 구축하기 #1" |
| 4 | +date: 2025-07-03 |
| 5 | +categories: [Tips] |
| 6 | +--- |
| 7 | + |
| 8 | +집에서 놀고 있는 Mac Mini로 홈서버 겸 API 서버를 구축하려고 합니다. |
| 9 | +집에서 쓰는 인터넷은 IP가 비정기적으로 변경될 수 있으니, DDNS(Dynamic DNS) 서비스를 이용해 집 IP에 접근 가능한 도메인을 등록해줍니다. |
| 10 | + |
| 11 | +## DuckDNS 가입 및 정보 확인 |
| 12 | + |
| 13 | +### DuckDNS란 |
| 14 | +DuckDNS는 무료로 제공되는 동적 DNS 서비스입니다. 공유기나 ISP에서 할당하는 IP 주소가 변경되어도 항상 같은 도메인으로 접속할 수 있게 해주는 서비스로, 개인 프로젝트나 홈서버 운영에 매우 유용합니다. |
| 15 | + |
| 16 | +### DuckDNS 웹사이트 접속 |
| 17 | +[DuckDNS 웹사이트](https://duckdns.org)에 접속한 후, 원하는 방식(Google, GitHub, Reddit 등)으로 로그인합니다. |
| 18 | + |
| 19 | +### 서브도메인(호스트 이름) 생성 |
| 20 | +"Sub-domains" 입력란에 사용할 이름(예: `myhome`)을 입력한 후 "add domain" 버튼을 클릭합니다. |
| 21 | +생성된 `myhome.duckdns.org`가 표시되는지 확인합니다. |
| 22 | + |
| 23 | +### 토큰(Token) 복사 |
| 24 | +화면 중앙 상단 "Account" 섹션에서 토큰(Token) 문자열을 복사해 둡니다. 이 토큰은 스크립트 인증에 필요합니다. |
| 25 | + |
| 26 | + |
| 27 | + |
| 28 | +## 업데이트 스크립트 등록 및 자동 실행 설정 |
| 29 | + |
| 30 | +### 작업 디렉터리 생성 및 스크립트 작성 |
| 31 | + |
| 32 | +```bash |
| 33 | +mkdir -p ~/duckdns |
| 34 | +cd ~/duckdns |
| 35 | +vi duck.sh |
| 36 | +``` |
| 37 | + |
| 38 | +아래 내용을 복사해서 붙여넣고, `YOUR_SUBDOMAIN`과 `YOUR_TOKEN`을 본인의 값으로 변경합니다: |
| 39 | + |
| 40 | +```bash |
| 41 | +#!/opt/local/bin/bash |
| 42 | +DOMAIN="YOUR_SUBDOMAIN" # 예: myhome |
| 43 | +TOKEN="YOUR_TOKEN" |
| 44 | + |
| 45 | +# DuckDNS 업데이트 요청 및 결과 로그 저장 |
| 46 | +echo url="https://www.duckdns.org/update?domains=${DOMAIN}&token=${TOKEN}&ip=" \ |
| 47 | + | curl -k -o ~/duckdns/duck.log -K - |
| 48 | +``` |
| 49 | + |
| 50 | +실행 권한을 부여합니다: |
| 51 | + |
| 52 | +```bash |
| 53 | +chmod 700 duck.sh |
| 54 | +``` |
| 55 | + |
| 56 | +### cron에 등록하기 |
| 57 | + |
| 58 | +```bash |
| 59 | +crontab -e |
| 60 | +``` |
| 61 | + |
| 62 | +맨 아래에 다음 줄을 추가하여 5분마다 업데이트가 실행되도록 설정합니다: |
| 63 | + |
| 64 | +```bash |
| 65 | +*/5 * * * * /Users/{YOUR_MAC_ACCOUNT_NAME}/duckdns/duck.sh >/dev/null 2>&1 |
| 66 | +``` |
| 67 | + |
| 68 | +> **참고**: `{YOUR_MAC_ACCOUNT_NAME}`은 Mac 로그인 아이디로 수정하세요. (`$ whoami` 명령어 실행 결과) |
| 69 | +
|
| 70 | +저장 후 종료합니다. |
| 71 | + |
| 72 | +### 동작 확인 |
| 73 | + |
| 74 | +스크립트를 수동 실행해 보고 에러 없이 프롬프트로 돌아오면 정상 실행된 것입니다: |
| 75 | + |
| 76 | +```bash |
| 77 | +~/duckdns/duck.sh |
| 78 | +``` |
| 79 | + |
| 80 | +로그를 확인합니다 (OK 또는 KO 출력): |
| 81 | + |
| 82 | +```bash |
| 83 | +cat ~/duckdns/duck.log |
| 84 | +``` |
| 85 | + |
| 86 | +## 참고사항 |
| 87 | + |
| 88 | +- Duck DNS는 무료 서비스로, 하루에 최대 1,000회 업데이트가 가능합니다 |
| 89 | +- 5분마다 업데이트하도록 설정했으므로 충분한 여유가 있습니다 |
| 90 | +- 외부에서 `yourdomain.duckdns.org`로 접속하여 설정이 제대로 되었는지 확인할 수 있습니다 |
| 91 | +- 스크립트가 정상적으로 실행되면 `~/duckdns/duck.log` 파일에 "OK"라는 메시지가 기록됩니다 |
0 commit comments