도메인과 셀프호스팅 (Domain & Self-hosting)
도메인은 인터넷에서 내 서비스를 찾을 수 있는 고유 주소이고, 셀프호스팅은 남의 플랫폼 대신 내가 직접 서버를 운영하는 방식입니다.
🤔 혹시 이런 경험 있나요?
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를 수정하면) 같은 주소로 새 집을 찾아갈 수 있습니다.
🛒 도메인 구매부터 연결까지
사람이 읽는 주소
myapp.com
= 76.76.21.21
주소를 IP로 변환
이 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 인증서)를 자동으로 발급해줍니다. 직접 인증서를 설치할 필요가 없습니다.
🏠 셀프호스팅이란?
Vercel, Netlify 같은 플랫폼 대신 내가 직접 서버를 운영하는 것을 셀프호스팅(Self-hosting)이라고 합니다.
| 구분 | 플랫폼 호스팅 (Vercel 등) | 셀프호스팅 |
|---|---|---|
| 서버 관리 | 플랫폼이 알아서 처리 | 내가 직접 관리 |
| 비용 | 무료~사용량 기반 과금 | 서버 임대 비용 (월 $5~) |
| 자유도 | 플랫폼 제한 내에서 사용 | 완전한 자유 |
| 확장성 | 자동 스케일링 | 직접 설정 필요 |
| 난이도 | 쉬움 | 중간~어려움 |
🤔 언제 셀프호스팅을 고려할까요?
플랫폼 호스팅이 적합한 경우:
- 개인 프로젝트, 포트폴리오, 블로그
- 트래픽이 예측 가능한 소규모 서비스
- 서버 관리에 시간 쓰고 싶지 않을 때
셀프호스팅이 적합한 경우:
- 플랫폼 무료 제한을 초과했을 때
- 데이터를 내 서버에만 저장해야 할 때 (보안, 규정)
- 플랫폼이 지원하지 않는 기능이 필요할 때 (장시간 작업, 특수 런타임)
- Docker, 데이터베이스 등 인프라를 직접 제어하고 싶을 때
🛠️ 셀프호스팅 시작하기
myapp.com
→ 내 VPS IP
방화벽: 80, 443만 개방
HTTPS 처리, 요청 전달
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을 만들어줍니다.
🔒 셀프호스팅 시 꼭 알아야 할 보안 기본
셀프호스팅은 자유도가 높은 만큼, 보안도 본인 책임입니다.
- SSH 키 인증 사용: 비밀번호 대신 SSH 키로 서버에 접속하세요. 비밀번호 로그인은 비활성화하는 것이 안전합니다.
- 방화벽 설정: 80(HTTP), 443(HTTPS), 22(SSH) 포트만 열어두세요.
- 자동 업데이트: 서버 OS 보안 패치를 자동으로 적용하도록 설정하세요.
- HTTPS 필수: Let's Encrypt로 무료 SSL 인증서를 발급받으세요. Nginx + Certbot 조합이 가장 일반적입니다.
⚠️ 바이브코딩할 때 주의할 점
-
DNS 변경은 시간이 걸립니다. DNS 레코드를 수정해도 전 세계에 퍼지는 데 최대 24~48시간이 걸릴 수 있습니다(보통 5~30분). 안 된다고 설정을 반복 변경하면 오히려 더 오래 걸립니다.
-
네임서버는 한 곳에서만 관리하세요. 도메인 업체의 네임서버를 쓸지, Cloudflare 같은 외부 DNS를 쓸지 하나만 선택하세요. 양쪽에서 동시에 관리하면 충돌이 생깁니다.
-
셀프호스팅은 유지보수도 내 몫입니다. 서버가 다운되면 직접 복구해야 하고, 보안 패치도 직접 적용해야 합니다. 처음에는 플랫폼 호스팅으로 시작하고, 필요할 때 셀프호스팅으로 넘어가는 것을 추천합니다.
📋 30초 요약
-
도메인은 인터넷에서 내 서비스를 찾는 주소입니다. DNS가 도메인을 서버 IP로 변환해주며, A 레코드와 CNAME만 알면 대부분의 연결이 가능합니다.
-
셀프호스팅은 플랫폼 대신 내 서버를 직접 운영하는 것입니다. 자유도와 비용 절감이 장점이지만, 서버 관리와 보안을 직접 책임져야 합니다. 초보자는 플랫폼 호스팅으로 시작하는 것을 추천합니다.
-
처음에는 도메인 구매 + Vercel 연결로 시작하고, 서비스가 커지면 셀프호스팅을 고려하세요. Docker를 활용하면 셀프호스팅도 훨씬 수월해집니다.
이 글이 도움이 되셨다면 공유해 주세요
메신저로 바로 보내거나 링크를 복사할 수 있습니다.
도메인을 구매하고 Vercel에 연결하려면 설정해야 하는 DNS 레코드는 무엇일까요?
이어서 배우면 좋은 개념
배포 (Deployment)
내 컴퓨터에서만 돌아가던 프로젝트를 인터넷에 올려서 누구나 접속할 수 있게 만드는 과정입니다.
환경 변수와 .env (Environment Variables)
프로그램이 실행될 때 참조하는 설정값으로, API 키나 비밀번호 같은 민감한 정보를 코드와 분리하여 안전하게 관리하는 방법입니다.
클로드 코드 플랜과 사용량 한도 이해하기
클로드 코드를 쓸 때 요금이 어떻게 매겨지고, 얼마나 쓰면 한도에 걸리는지를 정하는 구조입니다. 구독 플랜은 정해진 사용량이 포함되고, API 방식은 쓴 만큼 토큰 단위로 요금이 붙습니다.
Memory와 CLAUDE.md (영속 컨텍스트) 이해하기
Claude Code가 세션을 넘어 기억할 수 있도록 만든 영속 컨텍스트 시스템입니다. 사용자가 직접 적은 CLAUDE.md 파일과 Claude가 작업 중 자동으로 쌓는 auto memory 두 갈래로 구성됩니다.
관련 인사이트
- Qwen3.8 27B 로컬 실행 결과: 24GB 맥에서는 CPU로 떨어집니다Qwen3.8 27B는 알리바바 Qwen 팀이 2026년 8월 공개한 Apache 2.0 오픈 웨이트 모델입니다. 메모리 24GB 맥미니 M4 프로에 직접 설치해 돌려 보니 GPU에 올라가지 못하고 CPU로 실행됐고, 그때 측정한 속도를 그대로 정리했습니다.
- 코덱스 CLI와 클로드 코드 비교 (같은 도구를 만들게 해 봤습니다)코덱스 CLI와 클로드 코드는 터미널에서 파일을 직접 읽고 만드는 코딩 도구입니다. 두 도구에 똑같은 규격서를 주고 같은 도구를 만들게 해서 걸린 시간, 결과물 규모, 안전장치가 어떻게 다른지 측정했습니다.
- 코덱스 CLI 사용법: 초보 블로거를 위한 GEO 인용 검사 도구 만들기 과정코덱스 CLI는 터미널에서 파일을 직접 읽고 만드는 코딩 도구입니다. 빈 폴더에서 시작해 내 글이 AI 답변에 인용되기 쉬운지 확인하는 GEO 점검 도구가 나올 때까지, 시킬 말 전문과 명령을 그대로 정리했습니다.
- 구글 픽셀 11, Qwen3.8, 커서 인수로 본 AI 배포 경쟁AI 배포 경쟁은 같은 모델을 몇 개의 화면에 넣어 두느냐로 우열이 정해지는 경쟁입니다. 2026년 8월 12일부터 15일 사이에 나온 발표 다섯 건을 놓고, 각 회사가 모델을 어디까지 밀어 넣었는지 공식 자료 기준으로 정리했습니다.
- VS Code에서 클로드 코드 실행하기 (윈도우 화면 그대로 따라하기)클로드 코드를 설치했는데 검은 PowerShell 창이 부담스러운 분을 위해, VS Code를 설치하고 그 안 터미널에서 클로드 코드를 실행하는 순서를 화면 그림과 함께 정리했습니다. 승인 질문을 건너뛰는 bypass 모드까지 담았습니다.
- 챗GPT 리눅스 데스크톱 앱 프리뷰 정리: 설치 패키지와 지원 기능챗GPT 리눅스 데스크톱 앱은 오픈AI가 2026년 8월 11일 프리뷰로 공개한 리눅스용 공식 앱으로, ChatGPT와 Work, Codex를 하나의 앱에서 쓸 수 있습니다. 설치 패키지 4종과 테스트된 배포판, 요금 조건에서 확인된 것과 아직 확정되지 않은 것을 구분해 정리했습니다.
