SELFINET
SELFINET
Personal Infra Console
무료 DDNS·VPN for everyone
집 안 서버, 미니PC, 라즈베리파이를 어디서든. 동적 DNS와 WireGuard VPN을 한 콘솔에서 관리하세요.
⊞ selfinet.com 서브도메인 무료 발급
⌬ 클릭 한 번으로 WireGuard Peer 발급
⟲ DynDNS2 호환 — 공유기에 바로 연결
© SELFINET · selfinet.com
개인인프라 비서
개인 인프라 관리 콘솔에 로그인하세요
계정이 없으신가요? 회원가입
이용약관 · 개인정보처리방침
내 공인 IP
…
추천 장비
이 추천은 쿠팡파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
SELFINET
SELFINET
Get Started
무료 DDNS·VPN for everyone
이메일 인증 한 번이면 끝. 가입 즉시 selfinet.com 서브도메인과 VPN Peer를 발급받을 수 있습니다.
© SELFINET · selfinet.com
개인인프라 비서
새 계정을 만들어 시작하세요
이미 계정이 있으신가요? 로그인
이용약관 · 개인정보처리방침
logo
SELFINET
▦ 대시보드
⊞ 도메인
◉ 내 IP
⌬ VPN
◎ 설정
⤓ 다운로드
? 도움말
⛨ 관리자 콘솔 ↗
–
–
–
✎ 프로필 변경
🔒 패스워드 변경
★ 계정등급 변경
⚠ 회원 탈퇴
대시보드
도메인 레코드
–
총 레코드 · DDNS 0
VPN
–
WireGuard Peer
정상
–
마지막 업데이트 성공
오류
–
마지막 업데이트 실패
최근 DDNS 업데이트 로그
로딩 중...
전체 도메인
타입호스트명값메모TTL상태작업
로딩 중...
동적 도메인
로딩 중...
DDNS 업데이트 이력
로그가 없습니다.
내 공인 IP
로딩 중…
via proxy
지리 / 네트워크 정보
로딩 중…
DDNS 호스트에 이 IP 적용
로딩 중…
외부 도구로 사용하기
라우터·NAS·스크립트에서 다음 URL 을 호출하면 무인증으로 공인 IP 를 확인할 수 있습니다. 자세한 응답 포맷과 cron 예시는 도움말 → IP 정보 를 참고.
경로응답
GET /api/ipJSON
GET /api/ip/txtplain text (IP 한 줄)
GET /api/ip/detailJSON + 지리/ASN
VPN Peers
로딩 중...
사용 안내
Peer 추가를 누르면 새 WireGuard 키쌍이 발급되고, 다운로드받은 .conf 파일을 WireGuard 클라이언트에서 가져와 연결할 수 있습니다.
발급된 개인키는 서버에 저장되어 언제든 다시 다운로드할 수 있습니다. 분실한 경우 Peer를 삭제하고 새로 추가하세요.
API 키
DDNS 업데이트 API 키
–
업데이트 URL:
–
도메인 관리
기본 제공 도메인
사용자 도메인
로딩 중...
사용자 도메인 추가는 Premium 권한이 필요합니다. 사이드바 하단 계정 메뉴에서 업그레이드할 수 있습니다.
호스트명 입력 규칙 (레코드 추가 시 공통)

레코드를 추가/수정할 때 호스트명은 아래 조건을 모두 만족해야 합니다. 위반 시 서버가 즉시 거절합니다.

① 형식 (FQDN)
항목조건
전체 길이1 ~ 253 자
라벨(점 사이) 길이1 ~ 63 자
허용 문자a-z, 0-9, - (하이픈). 대소문자는 자동으로 소문자 변환.
금지언더스코어 _, 공백, 한글, 특수문자, 연속된 점 ..
하이픈 위치라벨의 처음·끝에 올 수 없음 (예: -test, test- 거절)
② 도메인 suffix

호스트명의 끝은 허용된 도메인 으로 끝나야 합니다.

  • 시스템 기본 도메인: selfinet.com, selfinet.net
  • 본인이 추가한 사용자 도메인 (Premium / Admin 만 추가 가능 — 설정 탭에서 NS 위임 후 등록)
  • 깊은 서브도메인 가능 — 예: home.iot.selfinet.com (longest-suffix 매칭)
③ 예약어 / 중복 차단
  • 좌측 첫 라벨이 일반적으로 쓰이는 시스템 서비스명이면 거절 (www, mail, api, vpn, admin, ssh, ftp, ns1 등 ~450개. /etc/services 도 포함)
  • 이미 다른 사용자가 사용 중이면 거절 (메시지는 예약어와 동일 — 사용자 enumeration 방지)
  • 본인이 이미 등록한 동일 FQDN 도 거절
  • 같은 호스트가 직전에 삭제 큐잉 중이면 409 — 잠시 후 재시도
④ 예시
호스트명결과이유
myhome.selfinet.com✅일반 케이스
home.iot.selfinet.com✅깊은 서브도메인 허용
www.selfinet.com❌예약어 (www)
home_office.selfinet.com❌언더스코어 — 형식 위반
-test.selfinet.com❌라벨 시작이 하이픈
myhome.example.com❌허용 도메인 아님
myhome.MY-DOMAIN.krPremium ✅본인이 추가한 도메인이면 OK. 저장 시 소문자로 변환
팁: 사용자 도메인을 쓰려면 먼저 도메인 등록 업체에서 NS 를 ns1.selfinet.com / ns2.selfinet.com 으로 위임한 뒤 설정 → 도메인 관리 에서 추가하세요. NS 위임이 확인되면 그 zone 하위로 자유롭게 호스트를 만들 수 있습니다.

DDNS 클라이언트 설정 (proprietary API)

자체 스크립트나 cron 으로 IP 를 갱신하고 싶을 때 사용합니다.

엔드포인트
GET https://www.selfinet.com/api/ddns/update
파라미터
이름필수설명
hostOFQDN (예: myhome.selfinet.com)
keyOAPI 키 (설정 탭에서 확인)
ipX명시할 IP. 생략 시 요청 source IP 사용
응답 (JSON)
{
  "host":   "myhome.selfinet.com",
  "old_ip": "1.2.3.4",
  "new_ip": "5.6.7.8",
  "status": "queued"   // 또는 "unchanged"
}
예시 — curl
curl 'https://www.selfinet.com/api/ddns/update?host=myhome.selfinet.com&key={API_KEY}'
예시 — cron (5분마다)
*/5 * * * * curl -fsS 'https://www.selfinet.com/api/ddns/update?host=myhome.selfinet.com&key={API_KEY}' >/dev/null
IP 가 직전과 같으면 zone 변경은 일어나지 않고 status: "unchanged" 가 반환됩니다 — 자주 호출해도 부담 없음.

DynDNS2 설정 (라우터 펌웨어용)

ASUS / OpenWrt / pfSense / ddclient 등 표준 DynDNS2 클라이언트로 직접 연동 가능합니다.

엔드포인트
GET https://www.selfinet.com/nic/update
인증
HTTP Basic Auth.
Username = 가입 이메일, Password = API 키.
파라미터
이름필수설명
hostnameOFQDN. 콤마 구분으로 다중 호스트 가능
myipX명시할 IP. 생략 시 요청 source IP
응답 코드 (text/plain, 호스트별 한 줄)
코드의미
good <ip>업데이트 큐잉됨
nochg <ip>동일 IP, 변경 없음
nohost해당 호스트의 DDNS 레코드 없음
!yours다른 사용자 소유 호스트
notfqdnhostname 형식 오류
badauth인증 실패 (HTTP 401)
dnserr / 911내부 오류
예시 — curl
curl -u '{EMAIL}:{API_KEY}' 'https://www.selfinet.com/nic/update?hostname=myhome.selfinet.com'
ASUS 라우터 (DDNS 메뉴)
서버Custom
Serverwww.selfinet.com
Username가입 이메일
PasswordAPI 키
Hostname예: myhome.selfinet.com
OpenWrt (ddns-scripts) — /etc/config/ddns
config service 'selfinet'
    option enabled '1'
    option service_name 'dyndns.org'
    option domain 'myhome.selfinet.com'
    option username '{EMAIL}'
    option password '{API_KEY}'
    option update_url 'https://[USERNAME]:[PASSWORD]@www.selfinet.com/nic/update?hostname=[DOMAIN]&myip=[IP]'
    option ip_source 'web'
    option check_interval '5'
    option check_unit 'minutes'
ddclient — /etc/ddclient.conf
protocol=dyndns2
use=web, web=checkip.dyndns.com
server=www.selfinet.com
ssl=yes
login={EMAIL}
password={API_KEY}
myhome.selfinet.com
동일 IP 또는 source IP 가 이미 zone 과 일치하면 zone 은 변경되지 않고 nochg 가 반환됩니다.

VPN (WireGuard) 사용 안내

selfinet VPN 은 WireGuard 기반입니다. 클라이언트는 wireguard.com/install 에서 다운로드할 수 있습니다.

1. Peer 발급
VPN 탭 → + Peer 추가 → 이름만 입력하면 IP 가 자동 할당되고 .conf 파일이 생성됩니다. 키쌍은 서버에서 발급되어 곧바로 적용됩니다.
2. 클라이언트에 .conf 가져오기
플랫폼방법
Windows / macOSWireGuard 앱 → "Import tunnel(s) from file" → 다운로드한 .conf 선택
iOS / Android아래 "휴대폰에서 사용" 절차 참고 (QR 스캔이 가장 빠름)
Linux (wg-quick)sudo cp peer.conf /etc/wireguard/wg0.conf && sudo wg-quick up wg0
📱 휴대폰에서 사용 (iOS / Android)
① WireGuard 앱 설치
    · iOS:   App Store 에서 "WireGuard" 검색 (개발사: WireGuard Development Team)
    · Android: Google Play 에서 "WireGuard" 검색 (동일 개발사)

② 휴대폰 브라우저로 selfinet 접속
    모바일 Safari/Chrome 에서 https://www.selfinet.com/ 로그인 → 좌측 햄버거 메뉴 (≡) → VPN 탭

③ Peer 발급
    + Peer 추가 → 이름 입력 → 추가. 발급 직후 설정 모달이 열림.

④ QR 코드 스캔
    모달에서 "QR 코드 (모바일)" 탭 선택 (모바일 접속 시 자동 선택됨) → WireGuard 앱에서 + → "QR 코드에서 만들기" → 화면의 QR 을 스캔. 설정 자동 입력.

⑤ 토글 ON
    WireGuard 앱에서 방금 추가된 터널을 ON 으로 켜면 연결 완료. 네트워크 권한 요청 시 허용해 주세요.
3. 재다운로드 / 재발급
Peer 행의 설정 버튼으로 .conf 를 언제든 다시 받을 수 있습니다 (개인키 포함).
개인키를 분실했다면 해당 Peer 를 삭제 후 재추가하세요 — 새 키쌍으로 발급됩니다.
4. 속도 측정
VPN 연결된 상태에서 VPN 탭 → 해당 Peer 카드의 속도측정 버튼을 누르면 다이얼로그가 열리며 자동으로 터널 연결을 확인합니다.
연결되어 있으면 다이얼로그 내부에서 다운로드/업로드/RTT 를 측정 (브라우저 보안 정책으로 차단될 경우 "새 창에서 열기" 자동 폴백). 결과는 WG 터널 + 서버 처리 capacity 기준이며 일반 인터넷 속도와 다를 수 있습니다.
Peer 한도: 일반 3, Premium 10, Admin 50. 한도 초과 시 사용하지 않는 Peer 를 먼저 삭제하세요.

IP 정보 조회

내가 어떤 공인 IP 로 selfinet 에 접속 중인지, 그 IP 의 지리/ASN 정보까지 한 번에 확인할 수 있는 엔드포인트입니다. DDNS 클라이언트가 어떤 IP 를 보내야 하는지 확인하거나 NAT/VPN 통과 후 실제 외부 IP 를 점검할 때 사용하세요. /api/ip, /api/ip/txt, /api/ip/detail 은 로그인 불필요 — 외부 스크립트에서 바로 호출 가능합니다.

엔드포인트
경로인증응답속도 제한 (IP당)
GET /api/ip불필요JSON60/분
GET /api/ip/txt불필요plain text (IP 한 줄)60/분
GET /api/ip/detail불필요JSON + 지리/ASN20/분
GET /api/ip/lookup/{ip}세션JSON (임의 IP 의 지리/ASN)—
※ /detail 은 외부 ipinfo.io API 를 사용합니다. 서버에 24시간 메모리 캐시가 있어 같은 IP 의 반복 조회는 외부 호출 없이 즉시 응답합니다.
※ 10.0.0.0/8, 192.168.0.0/16 같은 사설 IP 는 외부 호출 없이 bogon: true 만 반환합니다.
응답 — GET /api/ip (JSON)
{
  "ip": "203.0.113.42",            // 실제 클라이언트 공인 IP (체인 끝)
  "edge_ip": "127.0.0.1",          // FastAPI 소켓이 본 직접 연결 (nginx)
  "via_proxy": true,               // X-Real-IP / X-Forwarded-For 헤더 존재 여부
  "forwarded_for": "203.0.113.42", // X-Forwarded-For 헤더 원본
  "x_real_ip": "203.0.113.42"      // X-Real-IP 헤더 원본 (없으면 null)
}
응답 — GET /api/ip/detail (JSON, 지리/ASN 포함)
{
  "ip": "203.0.113.42",
  "edge_ip": "127.0.0.1",
  "via_proxy": true,
  "forwarded_for": "203.0.113.42",
  "x_real_ip": "203.0.113.42",
  "lookup": {
    "ip": "203.0.113.42",
    "city": "Seoul",
    "region": "Seoul",
    "country": "KR",
    "loc": "37.5683,126.9778",
    "org": "AS9318 SK Broadband",
    "postal": "04524",
    "timezone": "Asia/Seoul"
  }
}
※ lookup 의 필드 구성은 ipinfo.io 정책에 따라 달라질 수 있으며, 외부 API 호출 실패 시 {"ip": "...", "error": "lookup_failed"} 형태로 graceful 폴백됩니다 (라우터는 200 유지).
사용 예시 — curl / shell
# JSON 으로 내 공인 IP 확인
curl -s https://www.selfinet.com/api/ip

# 텍스트 한 줄만 — DDNS 클라이언트가 IP 비교에 사용
MY_IP=$(curl -s https://www.selfinet.com/api/ip/txt)
echo "$MY_IP"

# 지리/ASN 까지 한 번에
curl -s https://www.selfinet.com/api/ip/detail | jq

# 다른 IP 조회 (세션 로그인 필요 — 쿠키 파일로 인증)
curl -s -b ~/.selfinet.cookies https://www.selfinet.com/api/ip/lookup/8.8.8.8
DDNS 와 함께 쓰기
# /api/ip/txt 로 현재 IP 를 확인하고 변경됐을 때만 DDNS 업데이트
CACHE=/tmp/selfinet-last-ip
NEW=$(curl -s https://www.selfinet.com/api/ip/txt)
OLD=$(cat "$CACHE" 2>/dev/null || echo "")
if [ "$NEW" != "$OLD" ]; then
  curl -s "https://www.selfinet.com/api/ddns/update?host=myhome.selfinet.com&key={API_KEY}&ip=$NEW"
  echo "$NEW" > "$CACHE"
fi
※ {API_KEY} 부분은 본인 API 키 (도움말이 열리면 자동 치환됩니다).
팁: /api/ip 는 nginx 가 박는 X-Forwarded-For / X-Real-IP 헤더를 신뢰합니다. CDN 등을 추가로 앞에 두는 경우, 그 CDN 이 같은 헤더를 올바로 전달하는지 확인하세요.
왜 IP 위치가 실제와 다른가

IP 지오로케이션은 사용자가 어디 있는가 가 아니라 해당 IP 블록을 ISP 가 어디에 등록했는가 를 기준으로 매핑됩니다. 한국 가정용 ISP (SKB / KT / LGU+) 는 광역 IDC 단위로 IP 를 운용해서 국가·광역시 정확도는 90%+ 지만 시·구 정확도는 30~50% 수준으로 떨어집니다. 예: 구로구 SK브로드밴드 가입자가 "Incheon" 으로 잡히는 케이스 — 그 IP 블록의 등록지가 인천 백본이기 때문.

MaxMind / ip-api / ipgeolocation.io 등 다른 IP 지오로케이션 서비스로 교체해도 한국 시·구 단위 정확도는 비슷한 한계가 있습니다. 정확한 위치가 필요하면 https://ipinfo.io/corrections 로 해당 IP 의 위치 수정을 신청할 수 있지만, 동적 IP 라면 의미가 작습니다.

로컬 주소 (WebRTC) — 사설 IP / mDNS

HTTP 헤더만으로는 NAT 너머의 사설 IP (192.168.x.x, 10.x.x.x) 를 알 수 없습니다. 대신 브라우저의 RTCPeerConnection 으로 로컬 네트워크 인터페이스 주소를 시도합니다.

출력 형태의미
192.168.1.42 / 10.0.0.x실제 사설 IPv4 — Brave 의 비보호 모드, 일부 회사망, 구형 브라우저에서만
abc123.localmDNS hostname — Chrome 100+ / Firefox 100+ / Safari 기본. fingerprinting 방지용으로 실제 IP 를 숨김 (정상)
fe80::...IPv6 link-local — IPv6 활성 인터페이스
(표시 안 됨)Brave hardened mode, 권한 거부, VPN 일부, WebRTC 비활성 환경

※ mDNS hostname 은 동일 브라우저·프로필 안에서는 안정적인 식별자지만, 시크릿 창이나 다른 브라우저에서는 새 값이 생성됩니다.

Premium 결제

selfinet 의 Premium 구독은 토스페이먼츠 의 단건 결제 로 처리됩니다. 자동결제(빌링키) 없음 — 만료일이 지나면 일반 등급으로 자동 강등되며, 필요 시 다시 결제하면 그 시점부터 새로 30일.

결제 흐름
  1. 사이드바 → 사용자 메뉴 → 계정등급 변경
  2. Premium 카드 선택 → "N원 결제하고 Premium 시작" 버튼
  3. 토스 결제창에서 카드 정보 입력 → 결제 인증
  4. selfinet 페이지로 자동 복귀 → 등급이 premium 으로 변경되고 만료일 안내
  5. 만료일 이후 다음 요청 시 자동으로 일반 등급으로 강등 (별도 작업 불필요)
🧪 샌드박스 (테스트) 모드
백엔드의 TOSS_SECRET_KEY 가 test_* 로 시작하면 모든 결제는 샌드박스 모드입니다. 실제 출금 없음 — 흐름만 검증.
테스트 카드 정보 — 결제창에 아래 값을 입력:
항목값
카드 번호4330-1234-1234-1234 (Luhn 통과 임의 번호)
만료일미래의 아무 월/연 (예: 12 / 30)
CVC임의 3자리 (예: 123)
비밀번호 앞 2자리임의 2자리 (예: 00)
생년월일 / 사업자번호임의 — 검증 없음
※ 카드 번호는 토스가 Luhn 알고리즘만 검사. 실제 카드사 인증은 우회됩니다.
※ 운영 환경 전환은 TOSS_* 키를 live_* 로 교체한 뒤 selfinet-backend 재시작.
⚙️ 운영자용 — 샌드박스 설정 절차
  1. backend/.env 에 토스 결제창 v1 SDK 의 공개 테스트 키 페어가 이미 박혀 있습니다 (test_ck_D5G... / test_sk_zXL...). 별도 작업 없이 동작해야 정상.
  2. 키가 INVALID_API_KEY 또는 UNAUTHORIZED 로 거부되면 토스 정책 변경 — 아래 절차로 재발급:
    1. 토스페이먼츠 개발자센터 가입 (사업자등록증 필요)
    2. "내 개발 정보" → 테스트 키 (Client / Secret) 발급
    3. backend/.env 의 TOSS_CLIENT_KEY, TOSS_SECRET_KEY 교체
  3. 변경 후 sudo systemctl restart selfinet-backend
  4. 이 페이지(도움말 → 결제)에 다시 와서 흐름 검증.
🚀 라이브 전환 체크리스트
  • 토스페이먼츠 콘솔에서 사업자 정산 정보 / 카드사 계약 마무리
  • 운영 키(live_ck_* / live_sk_*) 발급
  • backend/.env 의 TOSS_* 키 교체, 가격 확정 (PREMIUM_PRICE_KRW)
  • sudo systemctl restart selfinet-backend
  • 본인 카드로 1회 실제 결제 → 환불 → 환불까지 잘 도는지 검증 후 공식 오픈
결제 내역은 GET /api/billing/history 로 조회 가능. 환불은 현재 admin 콘솔 UI 가 없으므로 토스 콘솔의 결제 내역에서 직접 처리하세요. (admin 환불 UI 는 백로그 중)
DDNS 클라이언트 동적 DNS

공인 IP 가 바뀔 때마다 selfinet.com 호스트명을 자동으로 갱신합니다. 아래 전용 업데이트 스크립트 는 회원님의 API 키가 미리 채워져 바로 실행할 수 있고, 공유기·NAS 는 표준 DynDNS2 클라이언트로도 연동됩니다.

① 전용 업데이트 스크립트 (API 키 자동 포함)
내려받은 스크립트에는 본인 API 키가 그대로 포함되어 있습니다 — 외부에 공유하지 마세요. cron / 작업 스케줄러에 5분 간격으로 등록하면 자동 갱신됩니다. 자세한 설정은 도움말 → DNS 참고.
② 표준 DDNS 클라이언트 (DynDNS2 호환)

서버 주소 www.selfinet.com, 사용자명 가입 이메일, 비밀번호 API 키 로 설정합니다.

ddclient
Linux · macOS · BSD 표준 DDNS 데몬
사이트 ↗
inadyn
경량 DDNS 클라이언트 (OpenWrt 등)
GitHub ↗
공유기 펌웨어 내장
ASUS · pfSense · OpenWrt 의 DDNS 설정에서 "사용자 정의 / DynDNS2" 선택
설정 가이드
VPN 클라이언트 WireGuard

SELFINET VPN 은 WireGuard 기반입니다. 사용하는 기기에 공식 클라이언트를 설치한 뒤, VPN 탭 에서 Peer 를 발급받아 .conf 파일을 불러오거나 QR 코드를 스캔하면 연결됩니다.

🪟
Windows
설치형 (.exe) — 64bit
⤓ 설치 파일
🍎
macOS
App Store
App Store ↗
📱
iPhone / iPad
App Store · QR 스캔 지원
App Store ↗
🤖
Android
Play Store · QR 스캔 지원
Play Store ↗
🐧
Linux
apt / dnf / pacman 패키지
설치 가이드 ↗
모바일은 앱 설치 후 VPN 탭 → Peer 추가 → QR 코드 를 스캔하면 가장 빠릅니다. PC 는 .conf 파일을 내려받아 WireGuard 앱에 "터널 가져오기" 로 추가하세요. 단계별 안내는 도움말 → VPN 에 있습니다.
레코드 추가
일반 사용자는 A 레코드 / TTL 300초로 고정됩니다. Premium 으로 업그레이드하면 변경할 수 있습니다.
.
프로필 변경
–
jpg / png / webp / gif · 최대 2MB
패스워드 변경
계정등급 변경

현재 등급: user

변경할 등급을 선택하세요
🧪 결제 샌드박스 모드 — 실제 출금되지 않습니다. 결제창에서 아무 카드 정보(예: 4330-1234-1234-1234, 미래 만료일, 임의 CVC) 를 입력하세요. 자세한 안내는 도움말 → 결제.
회원 탈퇴
탈퇴 시 계정과 등록된 모든 DNS 레코드, API 키, 업데이트 이력이 영구 삭제되며 복구할 수 없습니다.
사용자 도메인 추가
관리자 승인 절차가 필요합니다.
① 도메인 레지스트라에서 NS를 본 서비스의 네임서버로 위임해 주세요.
② 신청 후 "승인 대기" 상태로 표시되며, 관리자가 승인하면 BIND zone 이 생성되어 레코드를 추가할 수 있게 됩니다.
③ 거절될 경우 사유와 함께 재신청 안내가 표시됩니다.
VPN Peer 추가
IP 주소는 선택한 서버의 서브넷에서 자동 할당됩니다. WireGuard 키쌍이 서버에서 생성되고, 생성 후 .conf 파일을 다운로드 받을 수 있습니다.
VPN Peer 설정 파일
이 파일에는 클라이언트의 개인키가 포함되어 있습니다. 안전하게 보관하세요.
QR 코드 생성 중...
휴대폰의 WireGuard 앱 → + → QR 코드에서 만들기 → 위 QR 을 카메라로 스캔하면 자동 설정됩니다.
속도 측정
연결 확인 중...
레코드 삭제