Caddy 서비스 현황
점검: 2026-09-16 KST (2026-09-15 GCP VM 이전 반영) 실행 중인 Caddy의 관리 API(
127.0.0.1:2019/config/), Windows 서비스, 로컬 포트, 공개 HTTPS를 확인한 시점별 기록입니다. 자동 갱신되는 상태판은 아닙니다.
한눈에 보기
Section titled “한눈에 보기”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에 없음).
홈페이지와 파일 공유
Section titled “홈페이지와 파일 공유”도메인: 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와 LiveKit
Section titled “Meet와 LiveKit”도메인: 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 |
7443은 화상통화 UI가 아니라 LiveKit 연결용입니다. LiveKit의 미디어 포트는 이 HTTP 프록시 표와 별도로 관리합니다.
현재 활성 설정에는 Flutter /videocall/* 전용 정적 파일 경로가 없습니다. 이 주소도 Meet의 기본 프록시로 전달됩니다. 초기 데모 문서의 Flutter 배포 설명과 현재 설정을 구분해야 합니다.
API와 법무 문서
Section titled “API와 법무 문서”도메인: 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.htmlCelloTutor 개인정보처리방침은 홈페이지 빌드 폴더와 분리되어 있습니다.
: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개입니다.
Operation Overlord
Section titled “Operation Overlord”overlord.dev.tictechtoeai.com의 모든 요청은 127.0.0.1:3001로 전달됩니다. 설정 주석에는 Vite 개발 서버로 기록되어 있습니다. 로컬 :3001 응답 제목은 Operation Overlord: The Turning Point입니다.
문서 사이트
Section titled “문서 사이트”도메인: docs.dev.tictechtoeai.com, HTTPS 443.
| 요청 경로 | 처리 방식 | 연결 대상 |
|---|---|---|
| 모든 경로 | 정적 파일 제공 | C:/Developments/LivekitDev/docs-site/dist |
- 공개 화면: 문서 홈, Caddy 서비스 현황
- DNS A 레코드:
docs.dev.tictechtoeai.com→125.131.238.28 - 설정 파일:
proxyserver/docs.dev.tictechtoeai.com.caddy(루트Caddyfile의proxyserver/*.caddyimport로 활성) - 접근 로그:
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
Section titled “회사 사이트 tictechtoeai.com”도메인: 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 A125.131.238.28TTL 300.www는 CNAMEtictechtoeai.com.TTL 300. A가 아니라 CNAME인 이유는 회선 IP가 DHCP(임대 2시간)라 IP가 바뀌면 apex만 고치면 따라오게 하기 위함입니다. dev.tictechtoeai.comA 레코드는 건드리지 않습니다. 루트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 별칭
Section titled “sparklabsacademy 별칭”sparklabsacademy.dev, sparklabsacademy.com과 각각의 www는 내용을 내지 않고 https://tictechtoeai.com{uri}로 301 이동합니다. HTTP도 같은 목적지입니다.
GCP VM에서는 한 벌의 Astro 빌드(bearnie)로 세 도메인을 동시에 서비스하고 있었습니다. Astro site는 하나뿐이라 canonical·sitemap이 한 주소로만 박힙니다. 같은 문서를 여러 주소로 그대로 내보내면 검색엔진에 중복으로 잡히므로, 내용은 apex 한 곳에서만 냅니다. VM의 Caddyfile도 sparklabsacademy.com을 tictechtoeai.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
Section titled “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.dev→125.131.238.28TTL 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-Ensure가 C:\Developments\VisionIvy\scripts\ensure_visionivy.ps1을 부팅 시와 5분 주기로 실행합니다. 백엔드가 꺼지면 /ping과 /_event/*는 502가 되고, 정적 화면은 그대로 열립니다.
프런트 다시 빌드:
cd /d C:\Developments\VisionIvy.venv\Scripts\reflex.exe export --frontend-only --no-zip공통 연결 흐름
Section titled “공통 연결 흐름”외부 사용자 -> 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 헤더 설정이 있습니다.
이번 점검 결과
Section titled “이번 점검 결과”| 점검 대상 | 확인 결과 |
|---|---|
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로 확인했습니다.
설정 파일과 문서 사이트 위치
Section titled “설정 파일과 문서 사이트 위치”| 경로 | 역할 |
|---|---|
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 웹 서비스 등록을 참고합니다.