DMZ Edge Status API

DMZ 엣지(nginx reverse proxy)의 인증서 현황과 배포 적용 상태를 제공하는 읽기 전용 API

https://dmz.lumir.space

지금 상태

불러오는 중

개요

데이터는 배포 옵저버 NginxGitDeploy1분 주기로 갱신하는 정적 JSON 이다. 별도 백엔드 서비스가 없으므로 이 API 자체가 엣지의 가용성에 영향을 주지 않는다.

인증 없음 · 읽기 전용 · 내부 토폴로지 미노출. 업스트림 IP·포트는 응답에 포함되지 않는다.

엔드포인트

GET/api/health

헬스체크. 컨테이너가 떠 있고 배포가 원격과 동기화돼 있으면 ok, 아니면 degraded.

{ "status": "ok", "generatedAt": "2026-09-15T12:00:00+09:00", "server": "T21001" }
GET/api/status

통합 상태. 아래 세 엔드포인트의 내용을 한 번에 반환한다.

GET/api/certificates

인증서 현황. Let's Encrypt(자동갱신)와 상용 인증서를 모두 포함하며 만료 임박 순으로 정렬된다.

필드타입설명
namestringcertbot live 디렉터리명 또는 인증서 파일명
sourcestringletsencrypt | commercial
domainsstring[]SAN 목록
notAfterdate-time만료 시각
daysRemaininginteger음수면 이미 만료
statusstringvalid | expiring_soon(21일 이내) | expired
autoRenewbooleanLet's Encrypt 만 true (12시간 주기 갱신)
GET/api/domains

공개 도메인 목록과 각 도메인이 쓰는 인증서. tls: false:80 ACME 목록에만 있고 HTTPS server 블록이 아직 없는 상태를 뜻한다(전환 준비 중).

GET/api/deployment

배포 적용 상태와 실행 중 컨테이너.

필드설명
commit현재 엣지에 반영된 커밋
remoteCommitorigin/main
inSyncfalse 면 아직 반영되지 않은 커밋이 있다
workingTreeCleanfalse 면 서버 로컬 수정 때문에 자동 배포가 멈춘 상태
lastDeployAt마지막 자동 배포 완료 시각
GET/openapi.json

OpenAPI 3.0 스펙. Swagger UI·Postman 등에 그대로 불러올 수 있다.

사용 예

curl -s https://dmz.lumir.space/api/health

# 만료 임박·만료된 인증서만
curl -s https://dmz.lumir.space/api/certificates \
  | jq '.certificates[] | select(.status != "valid") | {name, daysRemaining, status}'

# 배포가 밀려 있는지
curl -s https://dmz.lumir.space/api/deployment | jq '.deployment | {commit, remoteCommit, inSync}'
모니터링에 쓸 때/api/healthstatus/api/certificatesexpiringSoon 을 보면 된다. generatedAt 이 수 분 이상 과거면 배포 옵저버 자체가 멈춘 것이므로 그 자체로 경보 신호다.