도메인 생성 공통 스크립트 기존 도메인 덮어씌우지않도록 수정

This commit is contained in:
2026-06-18 12:54:15 +09:00
parent 2bf905352b
commit c6877cd8fe
+36 -35
View File
@@ -119,50 +119,51 @@ runs:
WS=$([ "$WEBSOCKETS" = "true" ] && echo true || echo false) WS=$([ "$WEBSOCKETS" = "true" ] && echo true || echo false)
# --------------------------------------------------------------- # ---------------------------------------------------------------
# 2. 기존 프록시 호스트 확인 (멱등성: 2번째 실행 대응) # 2. 기존 프록시 호스트 확인 → 있으면 즉시 종료 (덮어쓰지 않음)
# 이미 등록된 도메인은 기존 설정을 보존하기 위해 아무것도 건드리지 않습니다.
# --------------------------------------------------------------- # ---------------------------------------------------------------
HOST_ID=$(api GET "/nginx/proxy-hosts" \ HOST_ID=$(api GET "/nginx/proxy-hosts" \
| jq -r --arg d "$DOMAIN" \ | jq -r --arg d "$DOMAIN" \
'map(select(.domain_names | index($d))) | .[0].id // empty') 'map(select(.domain_names | index($d))) | .[0].id // empty')
CREATED=false if [ -n "$HOST_ID" ]; then
echo "이미 존재하는 도메인입니다. 덮어쓰지 않고 종료합니다: ${DOMAIN} (host id=${HOST_ID})"
echo "host-id=${HOST_ID}" >> "$GITHUB_OUTPUT"
echo "created=false" >> "$GITHUB_OUTPUT"
exit 0
fi
# --------------------------------------------------------------- # ---------------------------------------------------------------
# 3. HTTP 전용 프록시 호스트 먼저 생성 (SSL 없이) # 3. HTTP 전용 프록시 호스트 먼저 생성 (SSL 없이)
# 도메인이 80포트로 응답해야 Let's Encrypt HTTP-01 검증이 통과합니다. # 도메인이 80포트로 응답해야 Let's Encrypt HTTP-01 검증이 통과합니다.
# --------------------------------------------------------------- # ---------------------------------------------------------------
if [ -z "$HOST_ID" ]; then echo "HTTP 프록시 호스트 생성 중: ${DOMAIN} -> ${FORWARD_SCHEME}://${FORWARD_HOST}:${FORWARD_PORT}"
echo "HTTP 프록시 호스트 생성 중: ${DOMAIN} -> ${FORWARD_SCHEME}://${FORWARD_HOST}:${FORWARD_PORT}" HTTP_PAYLOAD=$(jq -nc \
HTTP_PAYLOAD=$(jq -nc \ --arg d "$DOMAIN" \
--arg d "$DOMAIN" \ --arg fh "$FORWARD_HOST" \
--arg fh "$FORWARD_HOST" \ --arg fp "$FORWARD_PORT" \
--arg fp "$FORWARD_PORT" \ --arg fs "$FORWARD_SCHEME" \
--arg fs "$FORWARD_SCHEME" \ --argjson ws "$WS" \
--argjson ws "$WS" \ '{domain_names:[$d],
'{domain_names:[$d], forward_host:$fh,
forward_host:$fh, forward_port:($fp|tonumber),
forward_port:($fp|tonumber), forward_scheme:$fs,
forward_scheme:$fs, certificate_id:0,
certificate_id:0, ssl_forced:false,
ssl_forced:false, http2_support:false,
http2_support:false, hsts_enabled:false,
hsts_enabled:false, hsts_subdomains:false,
hsts_subdomains:false, caching_enabled:false,
caching_enabled:false, allow_websocket_upgrade:$ws,
allow_websocket_upgrade:$ws, block_exploits:true,
block_exploits:true, access_list_id:0,
access_list_id:0, advanced_config:"",
advanced_config:"", locations:[],
locations:[], meta:{}}')
meta:{}}') HOST_ID=$(api POST "/nginx/proxy-hosts" "$HTTP_PAYLOAD" | jq -r '.id')
HOST_ID=$(api POST "/nginx/proxy-hosts" "$HTTP_PAYLOAD" | jq -r '.id') if [ -z "$HOST_ID" ] || [ "$HOST_ID" = "null" ]; then
if [ -z "$HOST_ID" ] || [ "$HOST_ID" = "null" ]; then echo "프록시 호스트 생성 실패: ${DOMAIN}"
echo "프록시 호스트 생성 실패: ${DOMAIN}" exit 1
exit 1
fi
CREATED=true
else
echo "기존 프록시 호스트 사용: ${DOMAIN} (host id=${HOST_ID})"
fi fi
# --------------------------------------------------------------- # ---------------------------------------------------------------
@@ -223,4 +224,4 @@ runs:
echo "도메인 생성/SSL 적용 완료: ${DOMAIN} (host id=${HOST_ID})" echo "도메인 생성/SSL 적용 완료: ${DOMAIN} (host id=${HOST_ID})"
echo "host-id=${HOST_ID}" >> "$GITHUB_OUTPUT" echo "host-id=${HOST_ID}" >> "$GITHUB_OUTPUT"
echo "created=${CREATED}" >> "$GITHUB_OUTPUT" echo "created=true" >> "$GITHUB_OUTPUT"