Skip to content

Caddy 서비스 현황

원본 다운로드: Markdown · PDF

점검: 2026-09-16 KST (2026-09-15 GCP VM 이전 반영) 실행 중인 Caddy의 관리 API(127.0.0.1:2019/config/), Windows 서비스, 로컬 포트, 공개 HTTPS를 확인한 시점별 기록입니다. 자동 갱신되는 상태판은 아닙니다.

Caddy는 내용을 제공하는 7개 호스트와, 내용을 따로 내지 않고 apex로 넘기는 5개 별칭을 처리합니다. 관리 API의 TLS 호스트는 모두 12개입니다.

도메인 주요 서비스 Caddy 뒤의 대상
dev.tictechtoeai.com 홈페이지 및 파일 공유 homepage/dist, 포트 8090
meet.dev.tictechtoeai.com Meet 화상통화 및 LiveKit 포트 3000, 7880
api.dev.tictechtoeai.com API 프록시 및 법무 문서 포트 8081, 8080, legal/
overlord.dev.tictechtoeai.com Operation Overlord 포트 3001
docs.dev.tictechtoeai.com 프로젝트 문서 사이트 docs-site/dist
tictechtoeai.com 회사 사이트(bearnie 정적 빌드) C:/Developments/tictechtoeai/dist
visionivy.sparklabsacademy.dev VisionIvy Reflex 앱 정적 프런트 + 포트 6000

별칭은 모두 https://tictechtoeai.com{uri}로 301 이동합니다. www.tictechtoeai.com, sparklabsacademy.dev, www.sparklabsacademy.dev, sparklabsacademy.com, www.sparklabsacademy.com.

API 도메인의 루트 /는 홈페이지가 아니라 404 응답으로 설정되어 있습니다. 아래의 실제 경로로 접근합니다.

문서 사이트의 공개 주소는 Caddy가 정적 빌드(docs-site/dist)를 제공하는 경로입니다. 로컬 Astro 개발 서버(localhost:4321)와는 별개입니다.

2026-09-15에 GCP VM(sparklabsacademy, 34.47.127.124)에서 회사 사이트와 VisionIvy를 이 머신으로 옮겼습니다. dev.tictechtoeai.com 홈페이지와 apex tictechtoeai.com은 다른 빌드입니다. 섞지 않습니다.

아직 GCP VM에 남아 있는 호스트: mbti, saju, visionivy2 (백엔드가 없어 502, 소스도 VM에 없음).

도메인: dev.tictechtoeai.com, HTTPS 443.

요청 경로 처리 방식 연결 대상
/share/api/* 리버스 프록시 127.0.0.1:8090
그 외 경로 정적 파일 제공 C:/Developments/LivekitDev/homepage/dist
정적 파일 404 /index.html로 재작성 홈페이지의 index.html

주요 화면: 홈페이지, 파일 업로드, 공개 다운로드.

파일 API에는 /share/api/ 접두사가 유지되어 전달됩니다. 업로드와 다운로드의 권한 처리는 파일 공유 서비스가 담당합니다. 상세 내용은 파일 공유 가이드를 참고합니다.

도메인: meet.dev.tictechtoeai.com.

외부 포트 요청 경로 연결 대상
HTTPS 443 /rtc*, /twirp/* LiveKit 127.0.0.1:7880
HTTPS 443 그 외 경로 Meet 127.0.0.1:3000
HTTPS 8443 /rtc*, /twirp/* LiveKit 127.0.0.1:7880
HTTPS 8443 그 외 경로 Meet 127.0.0.1:3000
HTTPS/WSS 7443 모든 경로 LiveKit 127.0.0.1:7880
  • 일반 화상통화 화면: Meet
  • 호환 포트 화면: Meet 8443
  • LiveKit 시그널링 주소: wss://meet.dev.tictechtoeai.com:7443

7443은 화상통화 UI가 아니라 LiveKit 연결용입니다. LiveKit의 미디어 포트는 이 HTTP 프록시 표와 별도로 관리합니다.

현재 활성 설정에는 Flutter /videocall/* 전용 정적 파일 경로가 없습니다. 이 주소도 Meet의 기본 프록시로 전달됩니다. 초기 데모 문서의 Flutter 배포 설명과 현재 설정을 구분해야 합니다.

도메인: api.dev.tictechtoeai.com, HTTPS 443.

요청 경로 연결 대상 설명
/v1/* 127.0.0.1:8081 CelloTutor 프록시
/healthz 127.0.0.1:8081 CelloTutor 헬스 확인
/api/* 127.0.0.1:8080 Caddy 주석상 KHEngine 경로. 실제 수신 프로세스는 Audiveris Web
/legal/* C:/Developments/LivekitDev/legal 접두사를 제거한 뒤 정적 파일 제공
그 외 경로 Caddy가 직접 응답 404 Not Found

법무 문서는 handle_path를 사용하므로 /legal 접두사가 제거됩니다.

/legal/cellotutor/privacy.html
-> C:/Developments/LivekitDev/legal/cellotutor/privacy.html

CelloTutor 개인정보처리방침은 홈페이지 빌드 폴더와 분리되어 있습니다.

:8080은 LivekitDev Windows 서비스가 아닙니다. 이 포트의 Java 프로세스는 다른 프로젝트의 Audiveris Web(악보 OMR)입니다. Caddy의 /api/* 라우팅은 살아 있으나, Audiveris는 /api를 제공하지 않아 해당 경로는 404입니다. Audiveris 서비스 자체는 Windows 서비스 가이드를 참고합니다.

API 접근 로그: C:/Developments/LivekitDev/logs/api-proxy.log. 설정된 로그 회전 크기는 10 MiB, 보존 파일 수는 5개입니다.

overlord.dev.tictechtoeai.com의 모든 요청은 127.0.0.1:3001로 전달됩니다. 설정 주석에는 Vite 개발 서버로 기록되어 있습니다. 로컬 :3001 응답 제목은 Operation Overlord: The Turning Point입니다.

도메인: docs.dev.tictechtoeai.com, HTTPS 443.

요청 경로 처리 방식 연결 대상
모든 경로 정적 파일 제공 C:/Developments/LivekitDev/docs-site/dist
  • 공개 화면: 문서 홈, Caddy 서비스 현황
  • DNS A 레코드: docs.dev.tictechtoeai.com125.131.238.28
  • 설정 파일: proxyserver/docs.dev.tictechtoeai.com.caddy (루트 Caddyfileproxyserver/*.caddy import로 활성)
  • 접근 로그: C:/Developments/LivekitDev/logs/docs-site.log (회전 10 MiB, 보존 5개)
  • 헤더: X-Content-Type-Options: nosniff, Referrer-Policy: strict-origin-when-cross-origin

공개 사이트는 npm run build로 만든 정적 산출물입니다. 로컬에서 문서를 고친 뒤에는 docs-site에서 다시 빌드해야 이 도메인에 반영됩니다.

로컬 Astro 개발 서버는 Windows 서비스가 아닙니다. 이 세션 기준으로 localhost:4321(IPv6 ::1)에서 동작하며, 127.0.0.1:4321에는 바인딩되지 않습니다.

도메인: tictechtoeai.com, HTTPS 443. 2026-09-15에 GCP VM에서 이전.

VM에서는 astro dev로 서비스하고 있었습니다. 이 머신에서는 정적 빌드만 제공합니다. 운영에 Astro 개발 서버를 다시 두지 않습니다. 개발 서버는 모든 응답에 Vite 클라이언트를 실어 404 하나가 약 130 KB였고, /@fs/로 프로젝트 소스가 인터넷에서 읽혔습니다.

요청 경로 처리 방식 연결 대상
모든 경로 정적 파일 제공 C:/Developments/tictechtoeai/dist
없는 경로 handle_errors/404.html 빌드에 포함된 404 페이지
  • 공개 화면: ticTechtoeAI. 응답 제목은 ticTechtoeAI. canonical은 https://tictechtoeai.com.
  • www.tictechtoeai.com은 내용을 내지 않고 apex로 301 이동합니다. 빌드 canonical·sitemap이 apex 하나이기 때문입니다.
  • DNS (Google Cloud DNS, zone tictechtoeai-com): apex A 125.131.238.28 TTL 300. www는 CNAME tictechtoeai.com. TTL 300. A가 아니라 CNAME인 이유는 회선 IP가 DHCP(임대 2시간)라 IP가 바뀌면 apex만 고치면 따라오게 하기 위함입니다.
  • dev.tictechtoeai.com A 레코드는 건드리지 않습니다. 루트 Caddyfile이 따로 서빙합니다.
  • 설정 파일: proxyserver/tictechtoeai.com.caddy
  • 접근 로그: C:/Developments/LivekitDev/logs/tictechtoeai.log (회전 10 MiB, 보존 5개). VM에서 로그가 2.4 GB까지 늘어난 적이 있어 회전을 겁니다.
  • 헤더: X-Content-Type-Options: nosniff, Referrer-Policy: strict-origin-when-cross-origin

소스와 재배포:

소스 : WSL Ubuntu /home/administrator/sites/bearnie
빌드 : wsl -d Ubuntu --cd /home/administrator/sites/bearnie -e npx astro build
배포 : wsl -d Ubuntu -e rsync -a --delete \
/home/administrator/sites/bearnie/dist/ /mnt/c/Developments/tictechtoeai/dist/

Caddy root가 같으면 재배포 후 reload는 필요 없습니다.

sparklabsacademy.dev, sparklabsacademy.com과 각각의 www는 내용을 내지 않고 https://tictechtoeai.com{uri}로 301 이동합니다. HTTP도 같은 목적지입니다.

GCP VM에서는 한 벌의 Astro 빌드(bearnie)로 세 도메인을 동시에 서비스하고 있었습니다. Astro site는 하나뿐이라 canonical·sitemap이 한 주소로만 박힙니다. 같은 문서를 여러 주소로 그대로 내보내면 검색엔진에 중복으로 잡히므로, 내용은 apex 한 곳에서만 냅니다. VM의 Caddyfile도 sparklabsacademy.comtictechtoeai.com으로 넘기고 있었습니다.

DNS 이름 레코드 대상
sparklabsacademy.dev A 125.131.238.28 TTL 300
www.sparklabsacademy.dev CNAME sparklabsacademy.dev.
sparklabsacademy.com A 125.131.238.28 TTL 300
www.sparklabsacademy.com CNAME sparklabsacademy.com.

www.sparklabsacademy.com은 원래 자기 자신을 가리키는 CNAME 루프였고, 2026-09-15에 고쳤습니다.

설정 파일: proxyserver/sparklabsacademy.caddy. VisionIvy 서브도메인은 이 파일에 넣지 않습니다.

도메인: visionivy.sparklabsacademy.dev, HTTPS 443. 2026-09-15에 GCP VM에서 이전. WSL이 아니라 Windows에서 직접 실행합니다.

Reflex는 프런트와 백엔드가 분리되어 있습니다. VM에서는 프런트도 react-router dev로 띄워 3000을 프록시했습니다. 이 머신의 3000은 LiveKit Meet이 쓰고, 운영에 개발 서버를 둘 이유도 없습니다. 정적 프런트를 Caddy가 직접 줍니다.

요청 경로 처리 방식 연결 대상
/_event/* 리버스 프록시 (WebSocket 포함) 127.0.0.1:6000
/ping 리버스 프록시 127.0.0.1:6000
/_upload/* 리버스 프록시 127.0.0.1:6000
그 외 경로 정적 파일 C:/Developments/VisionIvy/.web/build/client

localhost가 아니라 127.0.0.1로 적습니다. Windows에서 localhost::1로 먼저 풀리는데, 백엔드(uvicorn/granian)는 IPv4에만 바인딩합니다.

정적 쪽은 Reflex export 관례를 따릅니다. 라우트마다 .html이 있으므로 try_files {path} {path}.html {path}/index.html /404.html입니다.

  • 공개 화면: VisionIvy
  • 헬스: /ping → JSON "pong". 응답 서버 헤더는 granian, Via: 1.1 Caddy.
  • DNS A: visionivy.sparklabsacademy.dev125.131.238.28 TTL 300
  • 설정 파일: proxyserver/visionivy.sparklabsacademy.dev.caddy
  • 접근 로그: C:/Developments/LivekitDev/logs/visionivy.log (회전 10 MiB, 보존 5개)
  • 헤더: X-Content-Type-Options: nosniff, Referrer-Policy: strict-origin-when-cross-origin

백엔드 상시 구동은 LivekitDev Windows 서비스가 아닙니다. 작업 스케줄러 VisionIvy-EnsureC:\Developments\VisionIvy\scripts\ensure_visionivy.ps1을 부팅 시와 5분 주기로 실행합니다. 백엔드가 꺼지면 /ping/_event/*는 502가 되고, 정적 화면은 그대로 열립니다.

프런트 다시 빌드:

Terminal window
cd /d C:\Developments\VisionIvy
.venv\Scripts\reflex.exe export --frontend-only --no-zip
외부 사용자
-> Caddy :80 -> 같은 도메인의 HTTPS로 301 이동
(sparklabsacademy 별칭은 HTTPS apex로 바로 301)
-> Caddy :443
+-- dev -> homepage/dist 또는 :8090
+-- meet -> :3000 또는 :7880
+-- api -> :8081, :8080 또는 legal/
+-- overlord -> :3001
+-- docs -> docs-site/dist
+-- tictechtoeai.com -> C:/Developments/tictechtoeai/dist
+-- www / sparklabsacademy* -> https://tictechtoeai.com{uri}
+-- visionivy -> 정적 프런트 또는 :6000
-> Caddy :7443 -> LiveKit :7880
-> Caddy :8443 -> Meet :3000 또는 LiveKit :7880

내용을 제공하는 호스트는 HTTP 80 요청을 같은 이름의 HTTPS로 영구 리다이렉트합니다. TLS는 Caddy가 처리합니다. 홈페이지, API, 문서, 회사 사이트, VisionIvy에는 nosniff 및 strict-origin-when-cross-origin 헤더 설정이 있습니다.

점검 대상 확인 결과
Caddy 관리 API 127.0.0.1:2019/config/ 활성 설정 조회 성공. TLS 호스트 12개
활성 HTTP 서버 수신 설정 80, 443, 7443, 8443
Windows 서비스 LivekitDevCaddy, LivekitDevMeet, LivekitDevServer, LivekitDevFileShare 모두 Running / Automatic. 문서 사이트·VisionIvy 전용 Windows 서비스는 없음
작업 스케줄러 VisionIvy-Ensure Ready/Running. 스크립트 C:\Developments\VisionIvy\scripts\ensure_visionivy.ps1
Meet 127.0.0.1:3000/ HTTP 200
Overlord 127.0.0.1:3001/ HTTP 200
LiveKit 127.0.0.1:7880/ HTTP 200
CelloTutor 127.0.0.1:8081/healthz GET HTTP 200. HEAD는 405
FileShare 127.0.0.1:8090/share/api/health HTTP 200
Audiveris 127.0.0.1:8080/ HTTP 200 (악보 OMR 웹). /api/*는 404
VisionIvy 백엔드 127.0.0.1:6000/ping "pong"
공개 https://docs.dev.tictechtoeai.com/ HTTP 200, docs-site/dist 정적 파일
공개 https://tictechtoeai.com/ HTTP 200, 제목 ticTechtoeAI, Last-Modified 2026-09-15
공개 https://www.tictechtoeai.com/ HTTP 301 → https://tictechtoeai.com/
공개 https://sparklabsacademy.dev/.com, 각각의 www HTTP 301 → https://tictechtoeai.com/
공개 https://visionivy.sparklabsacademy.dev/ HTTP 200, 정적 프런트, Last-Modified 2026-09-15
공개 https://visionivy.sparklabsacademy.dev/ping HTTP 200 "pong", Server: granian
로컬 Astro http://localhost:4321/ 이 세션에서 HTTP 200 (::1 listen)
내용 제공 호스트 HTTP :80 모두 HTTPS로 301

위 결과는 이 머신에서 확인한 기록입니다. 외부 인터넷에서의 방화벽·영상 통화 성공을 보장하는 점검은 아닙니다. 위 DNS A 레코드는 모두 125.131.238.28로 확인했습니다.

경로 역할
Caddyfile 홈페이지, Meet, LiveKit, Overlord 및 proxyserver/*.caddy import
proxyserver/api.dev.tictechtoeai.com.caddy API 도메인의 경로별 프록시 및 법무 문서
proxyserver/docs.dev.tictechtoeai.com.caddy 문서 사이트 정적 파일 제공
proxyserver/tictechtoeai.com.caddy 회사 사이트 정적 파일. www는 apex로 301
proxyserver/sparklabsacademy.caddy sparklabsacademy.dev/.com 및 www → apex 301
proxyserver/visionivy.sparklabsacademy.dev.caddy VisionIvy 정적 프런트 + :6000
homepage/dist/ Caddy가 제공하는 정적 홈페이지 (dev.)
docs-site/dist/ Caddy가 제공하는 정적 문서 사이트
C:/Developments/tictechtoeai/dist/ Caddy가 제공하는 회사 사이트 정적 빌드
C:/Developments/VisionIvy/.web/build/client/ VisionIvy 정적 프런트
legal/ API 도메인에서 제공하는 법무 문서
docs-site/ Astro 문서 소스. 공개 반영은 npm run build
logs/api-proxy.log API 도메인 접근 로그
logs/docs-site.log 문서 도메인 접근 로그
logs/tictechtoeai.log 회사 사이트 접근 로그
logs/visionivy.log VisionIvy 접근 로그

설정이 바뀌면 이 문서의 원본 docs-site/public/downloads/caddy-services.md를 갱신하고 PDF와 Astro 페이지에도 반영합니다. 관련 운영 절차는 Windows 서비스 가이드Caddy 웹 서비스 등록을 참고합니다.