내가 만든 프로그램에
주소 붙이기
AI랑 뭔가 만들긴 했는데, 주소창에 localhost:3000이라고 떠 있죠?
그건 내 컴퓨터에서만 열리는 주소입니다. 남에게 보여주려면 진짜 주소가 필요해요.
DuckDNS로 공짜로 하나 받는 게 이 글의 목표입니다.
"주소 알려줘" 했는데 알려줄 주소가 없습니다
AI와 몇 시간 씨름해서 뭔가 만들었습니다. 브라우저에 잘 뜹니다. 그런데 친구가 "링크 줘봐"라고 하면… 줄 게 없습니다. localhost:3000을 그대로 보내면 친구 컴퓨터의 3000번을 열려고 해서 아무것도 안 뜨거든요.
localhost는 "이 컴퓨터"라는 뜻입니다. 주소가 아니라 "여기"라는 말에 가까워요. 그래서 남에게 보여주려면 바깥에서 찾아올 수 있는 이름이 하나 필요합니다.
도메인을 사려면 보통 1년에 1~2만 원쯤 듭니다. 그런데 연습용·개인용이라면 공짜로 되는 방법이 있어요. 그게 DuckDNS입니다.
주소, 이름, 그리고 이사 문제
용어 세 개만 비유로 정리하면 나머지는 술술 풀립니다.
인터넷의 모든 컴퓨터에는 IP 주소라는 숫자 주소가 있습니다. 그런데 사람이 203.0.113.42를 외울 순 없으니, 도메인이라는 이름을 붙여 놓고 "이 이름 = 저 숫자"라고 안내소에 등록해 둡니다. 우리가 naver.com을 칠 때 실제로 벌어지는 일이 그거예요.
문제는 여기서 생깁니다. 집이나 사무실 인터넷의 IP 주소는 수시로 바뀝니다. 통신사가 돌려쓰기 때문인데, 공유기를 껐다 켜거나 며칠 지나면 슬쩍 달라져 있어요. 이걸 유동 IP라고 합니다.
그래서 도메인만 사두면 IP가 바뀔 때마다 안내소에 가서 손으로 고쳐야 합니다. 자고 일어나면 사이트가 죽어 있는 거죠. 이걸 자동으로 해주는 게 DDNS(다이나믹 DNS)이고, DuckDNS는 그걸 공짜로 해주는 서비스입니다.
공짜인데 조건이 거의 없습니다
| 항목 | 내용 |
|---|---|
| 가격 | 무료. 카드 등록도, 기간 만료도 없습니다 |
| 받는 주소 모양 | 내가정한이름.duckdns.org |
| 개수 | 계정당 5개까지 |
| 가입 | 따로 없습니다. 구글·깃허브 계정으로 로그인하면 끝 |
| IP 자동 갱신 | ✅ 됩니다 (이게 핵심) |
.duckdns.org로 끝나는 건 바꿀 수 없습니다. 연습용·개인용·팀 내부용으로는 충분하지만, 손님에게 보여줄 진짜 서비스라면 나중에 .com 같은 도메인을 따로 사시는 게 좋습니다. 그때도 서버 설정은 그대로 두고 주소만 바꿔 끼우면 돼요.주소 받기 — 3분이면 끝납니다
duckdns.org 접속해서 로그인
www.duckdns.org에 들어가서 위쪽의 로그인 버튼을 누릅니다. 구글·깃허브 계정으로 바로 됩니다. 회원가입 절차가 따로 없어요.
원하는 이름을 적고 add domain
입력칸에 쓰고 싶은 이름을 넣고 버튼을 누릅니다. 이미 쓰는 사람이 있으면 안 되니 몇 개 시도해 보세요. 성공하면 내이름.duckdns.org가 목록에 생깁니다.
토큰을 복사해 둔다
화면 위쪽에 token이라는 긴 글자열이 있습니다. 이게 "이 주소를 고칠 수 있는 열쇠"예요. 메모장에 복사해 두세요. 남에게 보여주면 안 됩니다.
제대로 됐는지 확인
터미널에서 ping 내이름.duckdns.org — 숫자로 된 IP가 나오면 성공입니다. 지금은 그 숫자가 내 집 IP로 잡혀 있어요.
IP가 바뀌어도 따라오게 만들기
DuckDNS 홈페이지는 접속한 순간의 내 IP를 기억합니다. 그런데 앞에서 말한 대로 IP는 바뀝니다. 바뀌면 그 이름으로 찾아온 사람이 엉뚱한 집 문을 두드리게 돼요.
그래서 "내 IP 바뀌었어요"라고 주기적으로 알려주는 일을 서버가 자동으로 하게 만듭니다. 방법은 간단합니다 — 주소 하나를 5분마다 열어주면 끝이에요.
그 주소가 이렇게 생겼습니다. 두 곳만 내 것으로 바꾸시면 됩니다:
https://www.duckdns.org/update?domains=내이름&token=내토큰&ip= |
맨 끝 ip=는 비워 두세요. 비워 두면 DuckDNS가 "지금 접속해온 그 IP"로 알아서 잡아줍니다. 브라우저로 한 번 열어보면 OK라고 뜹니다.
crontab -e로 열어서 아래 한 줄 추가*/5 * * * * curl -s "위주소" >/dev/null5분마다 자동 실행됩니다
curl "위주소"를 실행하게 하면 됩니다"DuckDNS 주소
내이름.duckdns.org의 IP를 5분마다 자동 갱신하도록 설정해줘. 토큰은 내가 직접 입력할게."운영체제를 보고 알아서 등록해 줍니다. 토큰은 채팅에 붙여 넣지 마시고, AI가 만들어 준 파일에 직접 적어 넣으세요.
바깥에서 들어올 문 열어주기
이제 이름은 내 집을 정확히 가리킵니다. 그런데 아직 문이 잠겨 있어요. 공유기가 바깥에서 오는 접속을 전부 막고 있거든요(원래 그래야 맞습니다).
그래서 "80번·443번 문으로 온 손님은 내 서버 컴퓨터로 보내줘"라고 공유기에 등록해야 합니다. 이걸 포트포워딩이라고 해요.
| 문 번호 | 용도 |
|---|---|
80 | 일반 접속(http). 인증서를 받을 때도 이 문이 열려 있어야 합니다 |
443 | 보안 접속(https). 실제로 쓰이는 건 이쪽입니다 |
공유기 설정 화면은 제조사마다 다르지만 보통 이 경로에 있습니다:
| ipTIME | 고급 설정 → NAT/라우터 관리 → 포트포워드 설정 |
| 통신사 공유기 | 포트포워딩 / 포트 포워드 메뉴 |
| 공통 | "내부 IP"에는 서버 컴퓨터의 주소(예: 192.168.0.10)를 넣습니다 |
자물쇠(https) 달기 — 이게 제일 쉽습니다
주소창에 자물쇠가 없으면 브라우저가 "주의 요함"이라고 경고를 띄웁니다. 예전엔 인증서를 받는 게 큰일이었는데, 지금은 자동으로 해주는 프로그램이 있어요.
Caddy(캐디)를 쓰면 설정 파일 두 줄로 끝납니다. 인증서 발급도, 90일마다 갱신하는 것도 알아서 합니다.
설정 파일(Caddyfile)에 이렇게만 적으면 됩니다:
내이름.duckdns.org { |
"이 주소로 온 손님은 내 컴퓨터 3000번에서 돌아가는 프로그램에게 연결해줘"라는 뜻입니다. 3000 자리에 내 프로그램이 쓰는 번호를 넣으세요.
다 됐는지 보는 법
| 확인할 것 | 이렇게 하면 됩니다 |
|---|---|
| 이름이 내 IP를 가리키나 | ping 내이름.duckdns.org → 숫자가 나옴 |
| 자동 갱신이 도나 | 갱신 주소를 브라우저로 열어 OK 확인. 등록한 작업이 돌고 있는지도 확인 |
| 바깥에서 열리나 | 휴대폰 Wi-Fi를 끄고(LTE·5G 상태에서) 주소를 열어보세요. 집 Wi-Fi 안에서는 안 열려도 밖에서는 열리는 경우가 있어 헷갈립니다 |
| 자물쇠가 붙었나 | 주소창 왼쪽에 🔒 표시 확인 |
안 될 때 보는 순서
집에서는 안 열리는데 밖에서는 열린다
- 집 Wi-Fi에서 주소를 치면 공유기 설정 화면이 뜨거나 아무것도 안 뜸
- 공유기가 "밖으로 나갔다 다시 들어오는 길"을 못 만들어서 그렇습니다. 고장이 아니에요. 집 안에서는
192.168.…주소로 접속하세요
어디서도 안 열린다
- 서버 컴퓨터가 잠들었거나 프로그램이 꺼져 있음
- 포트포워딩의 내부 IP가 바뀜
- 서버에서 먼저
localhost:3000이 열리는지 확인 — 여기서 안 되면 바깥 문제가 아닙니다 - 서버 컴퓨터 IP를 고정으로 잡아두세요(공유기의 "고정 IP 할당")
어제까진 됐는데 오늘 안 된다
- IP가 바뀌었는데 자동 갱신이 안 돌았습니다
- 갱신 주소를 손으로 한 번 열어 보세요. 열자마자 살아나면 자동 갱신 등록이 문제입니다
통신사가 막는 경우도 있습니다
- 설정을 다 맞췄는데도 바깥에서 전혀 안 열림
- 공유기에 표시된 외부 IP와, 검색창에 "내 아이피"를 쳐서 나온 IP가 다르면 통신사가 IP를 나눠 쓰는 중이라 포트포워딩이 안 됩니다. 이땐 아래 "문을 안 여는 방법"으로 가세요
안전하게 쓰기
포트를 여는 건 우리 집 문을 길가 쪽으로 하나 내는 것과 같습니다. 문을 열면 손님도 오지만, 문고리를 돌려보는 사람도 옵니다. 실제로 열자마자 몇 분 안에 자동화된 접속 시도가 들어옵니다.
| 꼭 지킬 것 | 이유 |
|---|---|
| 관리자 페이지를 열어두지 마세요 | DB 관리 화면, 설정 화면이 그대로 노출되면 끝입니다 |
| 기본 비밀번호를 바꾸세요 | admin/admin 같은 건 제일 먼저 시도됩니다 |
| 22번 포트는 열지 마세요 | 원격 접속용 문입니다. 굳이 필요하면 비밀번호 로그인은 끄고 키 로그인만 허용하세요 |
| 중요한 파일은 그 컴퓨터에 두지 마세요 | 연습용 서버와 개인 자료는 분리하는 게 안전합니다 |
| 안 쓸 땐 닫으세요 | 포트포워딩은 필요할 때만 켜두는 게 제일 안전합니다 |
문을 안 여는 방법도 있습니다
위 내용이 부담스럽거나, 통신사가 막아서 포트포워딩이 아예 안 되는 경우도 있습니다. 그럴 땐 공유기를 건드리지 않는 방법을 쓰면 됩니다.
3줄 요약
localhost는 주소가 아니라 "여기"라는 뜻이라 남에게 못 보여줍니다.
DuckDNS에서 공짜 주소를 받고, 5분마다 IP를 알려주는 작업만 걸어두면 이름이 내 집을 계속 가리킵니다.
그다음 공유기에 문(80·443)을 열고 Caddy로 자물쇠를 달면 끝 — 대신 문을 열었다는 건 잊지 마세요.