배포 API
서비스를 먼저 확인하고, 계획이 통과된 경우에만 DNS·Nginx·HTTPS를 적용합니다.
권장 호출 순서
공개 웹은 계획만 생성합니다. 실제 적용·삭제는 192.168.45.x 내부 AI/API가 계획별 1회성 자격을 발급받아 수행합니다. 현재는 23번 Primary 검증만 배포 성공 조건이며 73번 Secondary는 선택사항입니다.
호스트 상태·파일 위치 확인
AI가 도메인의 마지막 점검 결과, 대상 서버, Nginx 실제 설정 파일 경로를 한 번에 확인합니다. 파일 내용은 반환하지 않습니다.
curl -sS 'https://dns2.dclub.kr/api/health?host=admin.dclub.kr'
호스트 클릭 진단
DNS 현황 화면에서 RUNNING·HTTP 502·HTTP 503 배지를 클릭하면 읽기 전용 진단을 실행합니다. Nginx 경로, listen, proxy_pass, 대상 서버를 확인하며 설정을 변경하지 않습니다.
curl -sS 'https://dns2.dclub.kr/api/diagnose?host=admin.dclub.kr'
1. 계획 생성
health, DNS 이름 중복, HTTPS 인증서를 확인합니다. 이 단계에서는 시스템을 변경하지 않습니다.
curl -sS -X POST https://dns2.dclub.kr/api/deploy/plan \
-H 'content-type: application/json' \
-d '{
"zone": "dclub.kr",
"subdomain": "my-service",
"server": "25",
"port": 30001,
"health": "/health",
"tls": true
}'2. 내부 AI가 1회성 적용 자격 받기
이 요청은 192.168.45.x 내부망에서만 성공합니다. 발급된 자격은 해당 계획·발급 IP에 묶이고 5분 후 만료되며 한 번만 사용할 수 있습니다. 자격값은 로그·채팅·Git에 기록하지 마세요.
curl -sS -X POST https://dns2.dclub.kr/api/internal/token \
-H 'content-type: application/json' \
-d '{"planId":"plan_발급값"}'3. 내부 AI가 실제 적용
바로 앞 단계의 응답에서 받은 capability만 사용합니다. 공개 인터넷에서는 이 요청이 거부됩니다.
curl -sS -X POST https://dns2.dclub.kr/api/deploy/apply \
-H 'content-type: application/json' \
-H "x-deploy-capability: ${DEPLOY_CAPABILITY}" \
-d '{"planId":"plan_발급값"}'4. 테스트 도메인 삭제
적용 완료된 같은 계획만 삭제할 수 있습니다. 먼저 /api/internal/token에 action=remove를 넣어 새 1회성 자격을 받고, 백업·DNS·Nginx 검증을 포함한 삭제를 실행합니다.
curl -sS -X POST https://dns2.dclub.kr/api/internal/token \
-H 'content-type: application/json' \
-d '{"planId":"plan_발급값","action":"remove"}'
curl -sS -X POST https://dns2.dclub.kr/api/deploy/remove \
-H 'content-type: application/json' \
-H "x-deploy-capability: ${REMOVE_CAPABILITY}" \
-d '{"planId":"plan_발급값"}'보안 규칙
공개 웹은 점검 전용입니다.
실제 적용은 내부 192.168.45.x에서 발급한 계획별 1회성 자격만 허용합니다. 기존 관리자 토큰도 내부망에서만 사용할 수 있습니다. 배포 대상 서버는 등록된 23·25·253만 허용되며, 서비스가 먼저 HTTP 2xx health를 반환해야 합니다. A·AAAA·CNAME·TXT·MX·SRV·CAA·NS·HTTPS·SVCB 중 하나라도 기존 레코드가 있으면 거부합니다.