커뮤니티 입장하기

도메인과 셀프호스팅 (Domain & Self-hosting)

도메인은 인터넷에서 내 서비스를 찾을 수 있는 고유 주소이고, 셀프호스팅은 남의 플랫폼 대신 내가 직접 서버를 운영하는 방식입니다.

같은 말:도메인DomainDNS셀프호스팅Self-hostingVPS호스팅

아직 읽은 기록이 많지 않은 개념이에요
Share
목차
  1. 🤔 혹시 이런 경험 있나요?
  2. 🌐 도메인이란?
  3. 📱 도메인은 집 주소, 서버는 집
  4. 🛒 도메인 구매부터 연결까지
  5. 🏠 셀프호스팅이란?
  6. 🤔 언제 셀프호스팅을 고려할까요?
  7. 🛠️ 셀프호스팅 시작하기
  8. 🔒 셀프호스팅 시 꼭 알아야 할 보안 기본
  9. ⚠️ 바이브코딩할 때 주의할 점
  10. 📋 3줄 요약

🤔 혹시 이런 경험 있나요?

Vercel에 배포까지 성공했습니다. my-app.vercel.app으로 접속도 잘 됩니다. 그런데 이 주소를 명함이나 포트폴리오에 적기엔 좀 부끄럽습니다. "내 도메인을 연결하고 싶은데, DNS? A 레코드? 네임서버? 이게 다 뭐지?" 또는 "Vercel 무료 플랜 제한이 걱정되는데, 내 서버에서 직접 돌릴 수는 없을까?" 이런 생각이 드는 시점이라면, 이 글이 딱 필요한 타이밍입니다.

🌐 도메인이란?

도메인(Domain)은 인터넷에서 내 서비스를 찾아가는 주소입니다.

컴퓨터들은 서로를 IP 주소(예: 76.76.21.21)로 구분합니다. 하지만 사람이 숫자를 외우기는 어렵죠. 그래서 숫자 대신 사람이 읽을 수 있는 이름을 붙인 것이 도메인입니다.

IP 주소: 76.76.21.21 ← 컴퓨터가 이해하는 주소 도메인: myapp.com ← 사람이 이해하는 주소

전화번호부에서 이름으로 전화번호를 찾듯이, DNS(Domain Name System)가 도메인을 IP 주소로 변환해줍니다.

📱 도메인은 집 주소, 서버는 집

도메인과 서버의 관계를 집에 비유하면 이해가 쉽습니다.

  • 서버: 실제 집 건물입니다. 내 앱이 돌아가는 컴퓨터입니다.
  • IP 주소: GPS 좌표입니다. 정확하지만 외우기 어렵습니다.
  • 도메인: 집 주소(서울시 강남구...)입니다. 사람이 쉽게 찾을 수 있습니다.
  • DNS: 주소를 GPS 좌표로 변환해주는 내비게이션입니다.

집을 이사하면(서버를 바꾸면) GPS 좌표가 바뀌지만, 주소 체계를 업데이트하면(DNS를 수정하면) 같은 주소로 새 집을 찾아갈 수 있습니다.

🛒 도메인 구매부터 연결까지

1. 브라우저 입력
myapp.com

사람이 읽는 주소

→
2. DNS 조회
A 레코드
myapp.com
= 76.76.21.21

주소를 IP로 변환

→
3. 서버 접속
76.76.21.21

이 IP의 서버가 웹페이지를 응답

도메인 연결의 핵심은 "도메인 → DNS → 서버 IP" 세 단계가 전부입니다.

1단계: 도메인 구매

도메인은 도메인 등록 업체(Registrar)에서 구매합니다.

업체특징가격대 (.com 기준)
Cloudflare Registrar원가 판매, 가장 저렴연 $10 내외
Namecheap첫해 할인 많음, 영문 UI연 $9~13
가비아한국어 지원, .kr 도메인연 15,000~20,000원
Porkbun저렴하고 UI가 깔끔연 $9 내외

팁: 도메인은 "소유"가 아니라 "임대"입니다. 매년 갱신해야 하며, 갱신을 놓치면 다른 사람이 가져갈 수 있으므로 자동 갱신을 켜두세요.

2단계: DNS 레코드 설정

도메인을 구매했으면, "이 도메인으로 접속하면 어디로 보내줘"라는 설정을 해야 합니다. 이것이 DNS 레코드입니다.

레코드 타입역할예시
A도메인 → IP 주소myapp.com → 76.76.21.21
CNAME도메인 → 다른 도메인www.myapp.com → myapp.vercel.app
TXT텍스트 정보 저장도메인 소유 인증, 이메일 인증 등
MX이메일 서버 지정myapp.com → mail.google.com

바이브코딩에서 가장 많이 쓰는 것은 A 레코드와 CNAME입니다.

3단계: 배포 플랫폼에서 도메인 연결

Vercel 예시:

1. Vercel 대시보드 → Settings → Domains 2. 구매한 도메인 입력 (예: myapp.com) 3. Vercel이 알려주는 DNS 레코드를 도메인 업체에 설정 4. 인증 완료 후 HTTPS 인증서 자동 발급

대부분의 배포 플랫폼은 도메인을 연결하면 HTTPS(SSL 인증서)를 자동으로 발급해줍니다. 직접 인증서를 설치할 필요가 없습니다.

본문 개념을 설명하는 학습용 예시입니다. 실제 서비스 화면이 아닙니다. 세부 DNS 조회 단계는 생략한 개념도입니다.

🏠 셀프호스팅이란?

Vercel, Netlify 같은 플랫폼 대신 내가 직접 서버를 운영하는 것을 셀프호스팅(Self-hosting)이라고 합니다.

구분플랫폼 호스팅 (Vercel 등)셀프호스팅
서버 관리플랫폼이 알아서 처리내가 직접 관리
비용무료~사용량 기반 과금서버 임대 비용 (월 $5~)
자유도플랫폼 제한 내에서 사용완전한 자유
확장성자동 스케일링직접 설정 필요
난이도쉬움중간~어려움

🤔 언제 셀프호스팅을 고려할까요?

플랫폼 호스팅이 적합한 경우:

  • 개인 프로젝트, 포트폴리오, 블로그
  • 트래픽이 예측 가능한 소규모 서비스
  • 서버 관리에 시간 쓰고 싶지 않을 때

셀프호스팅이 적합한 경우:

  • 플랫폼 무료 제한을 초과했을 때
  • 데이터를 내 서버에만 저장해야 할 때 (보안, 규정)
  • 플랫폼이 지원하지 않는 기능이 필요할 때 (장시간 작업, 특수 런타임)
  • Docker, 데이터베이스 등 인프라를 직접 제어하고 싶을 때

🛠️ 셀프호스팅 시작하기

셀프호스팅에서 요청이 도착하는 길
사용자 접속
myapp.com
→
DNS A 레코드
→ 내 VPS IP
→
VPS 서버
방화벽: 80, 443만 개방
Nginx
HTTPS 처리, 요청 전달
→
내 앱 (Node.js)
PM2로 상시 실행
→
웹페이지 응답

플랫폼이 대신 해주던 이 전체 경로를 셀프호스팅에서는 내가 직접 구성합니다.

VPS(가상 서버) 선택

셀프호스팅의 첫 단계는 VPS(Virtual Private Server)를 임대하는 것입니다.

서비스최저 가격특징
Oracle Cloud무료 (Always Free)ARM 서버 24GB RAM 무료
Hetzner월 €3.79유럽 기반, 가성비 최고
Vultr월 $5서울 리전 있음, 한국 속도 빠름
DigitalOcean월 $4튜토리얼 풍부, 초보 친화

기본 배포 흐름

1. VPS 서버 임대 (Ubuntu 추천) 2. 서버에 Node.js, npm 설치 3. 내 프로젝트 코드를 서버에 올림 (git clone) 4. npm install && npm run build 5. PM2 등으로 프로세스를 상시 실행 6. Nginx로 도메인과 HTTPS 설정 7. 도메인 DNS에 서버 IP를 A 레코드로 연결

Docker로 간편하게

서버 환경 설정이 복잡하다면, Docker를 사용하면 편합니다.

# Dockerfile 예시 FROM node:20-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY . . RUN npm run build CMD ["npm", "start"]

Docker를 사용하면 "내 컴퓨터에서는 되는데 서버에서 안 돼요" 문제를 거의 없앨 수 있습니다. AI에게 "내 Next.js 프로젝트를 Docker로 배포하는 방법 알려줘"라고 물어보면 프로젝트에 맞는 Dockerfile을 만들어줍니다.

🔒 셀프호스팅 시 꼭 알아야 할 보안 기본

셀프호스팅은 자유도가 높은 만큼, 보안도 본인 책임입니다.

  1. SSH 키 인증 사용: 비밀번호 대신 SSH 키로 서버에 접속하세요. 비밀번호 로그인은 비활성화하는 것이 안전합니다.
  2. 방화벽 설정: 80(HTTP), 443(HTTPS), 22(SSH) 포트만 열어두세요.
  3. 자동 업데이트: 서버 OS 보안 패치를 자동으로 적용하도록 설정하세요.
  4. HTTPS 필수: Let's Encrypt로 무료 SSL 인증서를 발급받으세요. Nginx + Certbot 조합이 가장 일반적입니다.

⚠️ 바이브코딩할 때 주의할 점

  1. DNS 변경은 시간이 걸립니다. DNS 레코드를 수정해도 전 세계에 퍼지는 데 최대 24~48시간이 걸릴 수 있습니다(보통 5~30분). 안 된다고 설정을 반복 변경하면 오히려 더 오래 걸립니다.

  2. 네임서버는 한 곳에서만 관리하세요. 도메인 업체의 네임서버를 쓸지, Cloudflare 같은 외부 DNS를 쓸지 하나만 선택하세요. 양쪽에서 동시에 관리하면 충돌이 생깁니다.

  3. 셀프호스팅은 유지보수도 내 몫입니다. 서버가 다운되면 직접 복구해야 하고, 보안 패치도 직접 적용해야 합니다. 처음에는 플랫폼 호스팅으로 시작하고, 필요할 때 셀프호스팅으로 넘어가는 것을 추천합니다.

📋 3줄 요약

  1. 도메인은 숫자로 된 IP 주소 대신 사람이 읽을 수 있게 붙인 서비스 주소이고 DNS가 그 이름을 IP로 바꿔 줍니다.

  2. 도메인은 등록 업체에서 사며 클라우드플레어는 원가에 가까운 연 10달러 안팎이고 가비아는 한국어 지원과 .kr 도메인이 강점입니다.

  3. 셀프호스팅은 남의 플랫폼 대신 직접 서버를 운영하는 방식이라 플랫폼 제한은 없어지지만 보안과 백업, 장애 대응까지 직접 맡아야 합니다.

서비스를 실제로 여는 과정은 배포 클래스에서, 설정값 관리는 환경 변수 클래스에서 이어집니다.

Share

제대로 이해했는지 한 문제로 확인해 볼까요?

답을 고르면 바로 풀이가 나와요.

도메인을 구매하고 Vercel에 연결하려면 설정해야 하는 DNS 레코드는 무엇일까요?

13개념 / 클래스JSON과 데이터 구조 (JSON & Data Structures)