Nostr 아이덴티티에 커스텀 도메인 사용하기: 단계별 가이드
내가 제어하는 도메인에 NIP-05를 직접 호스팅하는 방법. 왜 그럴 수 있는지, 몇 분 만에 설정하는 방법, 그리고 관리형 서비스로는 얻을 수 없는 것이 무엇인지 알아봅니다.
Nostr 아이덴티티에 자신의 도메인을 사용하는 것은 합리적인 선택입니다. 관리형 서비스보다 설정이 더 필요하지만 식별자에 대한 영구적인 제어권을 얻을 수 있습니다. 이 가이드는 언제 그럴 가치가 있는지, 그리고 어떻게 하는지를 다룹니다.
TL;DR. 도메인을 등록하고,
https://yourdomain.com/.well-known/nostr.json에 pubkey가 담긴 JSON 파일을 올리고, Nostr 프로필에서 NIP-05를yourname@yourdomain.com으로 설정하세요. 총 설정 시간: 약 30분. 연간 비용: 도메인 등록비만. 클라이언트 관점에서는 관리형 NIP-05 서비스와 동일하게 작동합니다.
준비되면, @nostr.blog 주소 받기
커스텀 도메인이 중요한 이유
이 방법을 선택하는 세 가지 이유가 있습니다.
완전한 소유권. 커스텀 도메인은 갱신하는 한 계속 내 것입니다. NIP-05 서비스를 포함한 어떤 제3자도 빼앗아갈 수 없습니다. 내일 nostr.blog가 서비스를 종료하면 alice@nostr.blog 아이덴티티는 더 이상 조회되지 않습니다. 하지만 alice@alicedomain.com은 도메인이 내 것이기 때문에 영향을 받지 않습니다.
고유성. alice@nostr.blog는 "nostr.blog 서비스를 이용하는 Alice"를 나타냅니다. alice@alicedomain.com은 "자신의 공간을 가진 Alice"를 나타냅니다. 공인, 크리에이터, 개인 브랜드를 구축하는 누구에게든 셀프 호스팅 식별자는 브랜딩 측면에서 더 큰 비중을 가집니다.
통제권. 도메인에 관한 정책을 직접 결정합니다. 별도 등록 없이 여러 이름(alice@alicedomain.com, alice-work@alicedomain.com)을 가질 수 있습니다. 서비스에 관여하지 않고도 연결된 pubkey를 변경할 수 있습니다.
커스텀 도메인이 필요 없는 경우
솔직한 반론 목록입니다.
Nostr가 처음인 경우. 처음 사용하는 사람은 관리형 서비스를 이용해 빠르게 시작하는 것이 좋습니다. 원한다면 나중에 커스텀으로 전환하세요.
웹 서버가 익숙하지 않은 경우. 설정 시 서버 구성 편집이 필요합니다. 어렵지는 않지만 초보자에게 친화적이지는 않습니다.
도메인을 갱신하지 않을 경우. 만료된 도메인은 NIP-05를 잃게 됩니다. 몇 년간 도메인을 유지할지 확신이 없다면 관리형 서비스가 더 안정적입니다.
도메인이 다른 목적으로 브랜딩된 경우. 이미 주얼리 사업을 위해 alicejewelry.com을 소유하고 있다면, 그 도메인에 NIP-05를 운영하면 Nostr 아이덴티티가 그 사업과 연결됩니다. 바람직할 수도 있고 그렇지 않을 수도 있습니다.
사전 준비 사항
세 가지가 필요합니다.
- 내가 제어하는 도메인. Namecheap, Cloudflare 등에서 등록. 대부분의 TLD는 연간 $10-15.
/.well-known/nostr.json에 정적 파일을 호스팅하는 방법. 가장 저렴한 방법: GitHub Pages, Cloudflare Pages, Netlify, Caddy가 설치된 VPS, 또는 기존에 보유한 웹 호스팅.- hex 형식의 Nostr 공개 키. 소문자
a-f와0-9로 구성된 64자리. 클라이언트의 계정 설정에서 확인할 수 있습니다.
설정: 빠른 방법 (Cloudflare Pages)
이미 DNS에 Cloudflare를 사용하고 있다면 이 방법이 가장 빠릅니다.
- 새 Cloudflare Pages 프로젝트를 만듭니다.
- 이름-pubkey 매핑이 포함된
/.well-known/nostr.json파일을 추가합니다:
{
"names": {
"yourname": "your-hex-pubkey-here"
}
}
- 배포합니다.
/.well-known/*경로에Access-Control-Allow-Origin: *헤더를 설정하도록 Worker 또는 Pages Function을 구성합니다. Cloudflare 공식 문서에 설명되어 있습니다.- 도메인을 Pages 프로젝트에 연결합니다.
- 테스트:
curl -i https://yourdomain.com/.well-known/nostr.json을 실행해 CORS 헤더와 함께 JSON이 반환되는지 확인합니다. - Nostr 클라이언트에서 NIP-05를
yourname@yourdomain.com으로 설정합니다. 저장합니다. - 몇 분 후 인증 체크마크가 표시됩니다.
총 소요 시간: Cloudflare에 익숙하다면 20-30분.
설정: VPS에서 Caddy 사용
이미 VPS를 운영하는 사용자를 위한 방법입니다.
- Caddyfile에 다음을 추가합니다:
yourdomain.com {
header /.well-known/nostr.json {
Access-Control-Allow-Origin "*"
Content-Type "application/json"
}
file_server
}
- 서버의 webroot에
/.well-known/nostr.json경로로 JSON 파일을 만듭니다:
{
"names": {
"yourname": "your-hex-pubkey-here"
}
}
- Caddy를 재로드합니다:
sudo systemctl reload caddy. curl -i https://yourdomain.com/.well-known/nostr.json으로 확인합니다.- Nostr 프로필에서 NIP-05를 설정합니다.
Caddy는 TLS를 자동으로 처리합니다. DNS가 전파되고 파일이 정상적으로 제공되면 인증이 작동합니다.
설정: GitHub Pages
무료이며 소규모 사용에 가장 간단합니다.
- GitHub 저장소를 만듭니다. 커스텀 도메인(yourdomain.com)으로 GitHub Pages를 활성화합니다.
- 이름/pubkey 매핑이 포함된
.well-known/nostr.json을 저장소에 추가합니다. - 푸시합니다.
- GitHub Pages 공식 문서에 따라 도메인의 DNS를 GitHub Pages로 연결합니다.
주의 사항: GitHub Pages는 커스텀 응답 헤더를 설정할 수 없습니다. CORS를 위해 Cloudflare를 통해 프록시하거나, Cloudflare Worker를 사용해 헤더를 추가하거나, 일부 브라우저 기반 클라이언트에서 아이덴티티 인증이 실패하는 것을 감수해야 합니다.
데스크탑 전용 사용이라면 CORS 없이 GitHub Pages만으로 가능합니다. 완전한 지원을 위해서는 GitHub Pages 앞에 Cloudflare를 두는 것이 일반적인 해결책입니다.
하나의 도메인에 여러 아이덴티티 운영
커스텀 도메인은 여러 이름을 호스팅할 수 있습니다. nostr.json 예시:
{
"names": {
"alice": "pubkey-1...",
"alice-work": "pubkey-2...",
"the-journalist": "pubkey-3..."
}
}
각 이름은 서로 다른 pubkey로 연결됩니다. 자신의 여러 아이덴티티, 가족 구성원, 또는 운영하는 소규모 커뮤니티를 위해 사용할 수 있습니다.
대부분의 사용자는 항목이 하나뿐이지만, 필요하다면 이 옵션을 활용할 수 있습니다.
나중에 pubkey 변경하기
Nostr 개인 키를 교체해야 할 경우(유출 또는 다른 이유로), JSON 파일을 업데이트해 이름이 새 pubkey를 가리키도록 합니다.
절차:
- 새 키 쌍을 생성합니다.
/.well-known/nostr.json을 업데이트해 새 hex pubkey를 사용합니다.- 클라이언트 측 캐시가 초기화될 때까지 기다립니다(일부 클라이언트는 최대 24시간).
- 식별자가 이제 새 아이덴티티를 가리킵니다.
단점: npub(이전 것)으로 팔로우하는 팔로워들은 자동으로 전환되지 않습니다. 그들은 특정 pubkey를 팔로우합니다. NIP-05 식별자는 유지되더라도 팔로워 관계는 잃게 됩니다.
2026년 현재 키 교체는 여전히 깔끔하지 않습니다. NIP-26 위임과 NIP-41 제안이 이를 개선하는 것을 목표로 하고 있습니다.
선택 사항: JSON에 relay 포함하기
NIP-05를 사용하면 이름과 함께 선호하는 relay를 공개할 수 있습니다:
{
"names": {
"alice": "your-pubkey-here"
},
"relays": {
"your-pubkey-here": [
"wss://relay.damus.io",
"wss://nos.lol"
]
}
}
클라이언트는 콘텐츠를 조회할 때 자동으로 선호 relay에 연결하는 데 이 정보를 활용합니다. 독자의 초기 접속 성능이 향상됩니다.
선택 사항입니다. 있어도 없어도 작동합니다.
도메인이 만료되면 어떻게 되나요
NIP-05 인증이 중단됩니다. Nostr의 게시물은 유지되지만, 읽을 수 있는 식별자는 더 이상 조회되지 않습니다. 기본 계정(pubkey)은 영향을 받지 않습니다.
복구 방법: 도메인을 갱신하면 인증이 다시 작동합니다. 만료 기간 중 다른 사람이 도메인을 구입한 경우, 본인 것을 포함한 모든 이름을 주장할 수 있습니다. 실제로 개인 도메인에서는 드문 일이지만 가치 있는 도메인은 가능성이 있습니다.
보호 방법: 도메인 자동 갱신을 설정하고, 백업 결제 수단을 등록하고, 만료 알림을 모니터링하세요.
비용 비교
5년 기준:
- 커스텀 도메인: $50-75 (도메인 갱신 5 × $10-15)
- nostr.blog 5자 이하 짧은 이름: $145 (5 × $29)
- nostr.blog 8자 이상 이름: $14.95 (5 × $2.99)
- nostr.blog 1자 프리미엄 이름: $4,995 (5 × $999)
긴 이름의 경우 nostr.blog가 더 저렴합니다. 짧은 프리미엄 이름의 경우 커스텀 도메인이 훨씬 저렴합니다. 어차피 구입할 개인 도메인이라면 커스텀은 사실상 무료입니다.
커스텀 도메인이 올바른 선택인 경우
커스텀 도메인이 명확하게 적합한 사용자 유형:
- 이미 다른 목적으로 개인 도메인을 보유하고 있는 경우
- 회사나 조직을 운영하며 NIP-05로
you@company.com을 원하는 경우 - 짧은 프리미엄 이름을 원하는데 관리형 서비스가 비싼 경우
- 모든 제3자 서비스로부터 장기적인 독립성을 중시하는 경우
- 여러 Nostr 아이덴티티를 운영하며 동일한 도메인에 두고 싶은 경우
그 외의 사용자에게는 nostr.blog 같은 관리형 서비스가 더 쉬운 기본 선택입니다. 관리형에서 커스텀으로의 전환은 언제든 가능합니다. 유일한 비용은 식별자가 변경되는 짧은 기간입니다.
자주 묻는 질문
커스텀 도메인이 NIP-05에 있어서 nostr.blog보다 나은가요?
커스텀 Nostr 도메인은 비용이 얼마나 드나요?
NIP-05에 서브도메인을 사용할 수 있나요?
NIP-05 셀프 호스팅에 어떤 웹 호스트가 적합한가요?
NIP-05를 직접 호스팅하면 zap에 영향을 주나요?
이어 읽기
NIP-05란 무엇인가? Nostr 주소 설명
NIP-05는 Nostr에서 사용하는 이메일 형태의 식별자입니다: alice@nostr.blog. 실제로 하는 일, 하지 않는 일, 그리고 어떻게 얻는지 알아봅시다.
15분 소요정체성과 NIP-052026년 Nostr 주소(NIP-05) 얻는 방법
읽을 수 있는 Nostr 식별자를 획득하는 단계별 가이드. 가장 빠른 관리형 옵션, 완전 자체 호스팅 설정, 비용 및 인증 방법.
14분 소요정체성과 NIP-05당신의 Nostr 신원이 이동 가능한 이유 (그리고 그것이 중요한 이유)
중앙집중식 플랫폼과 달리, 당신의 Nostr 신원은 클라이언트, 릴레이, 서비스 전반에 걸쳐 당신을 따릅니다. 실제로 이동성이 무엇을 의미하는지 설명합니다.
16분 소요정체성과 NIP-05프리미엄 Nostr 주소: 짧고, 기억하기 쉽고, 나만의 것
한 글자, 두 글자짜리 Nostr 식별자가 실제로 존재하며, 그만한 이유로 더 비쌉니다. 프리미엄 이름의 가격과 그 의미에 대해 알아보세요.
15분 소요