플랫폼 공용 도메인
multi-saas-kit은 제품 사이트 도메인과 설치된 플랫폼 도메인을 분리해서 운영할 수 있습니다. 또한 플랫폼 Dev Tools는 1차 서브도메인 = 공개 랜딩 / .devtools. prefix = 운영자 어드민의 2-서브도메인 패턴을 따릅니다.
왜 도메인 체계가 중요한가
| 이유 | 설명 |
|---|---|
| 보안 분리 | 어드민 도구는 일반 사용자에게 노출되면 안 됨 — 별도 prefix로 접근 경로 분리 |
| 랜딩 홍보성 | 1차 서브도메인은 마케팅 랜딩으로 SEO/공개 목적에 사용 |
| 일관성 | 새 Dev Tool 추가 시 규칙이 명확해 혼란 없음 |
| 자체 호스팅 가능 | 고객사가 ${ROOT_DOMAIN}만 바꾸면 동일 체계 재현 가능 |
도메인 계층 구조
codebase.how (1) 제품 포털 — 판매/홍보
├── docs.codebase.how (2) 플랫폼 문서 (이 사이트)
├── store.codebase.how (3) 플러그인 스토어
│
├── devtools.codebase.how (4) Dev Tools 허브 (진입점)
│
│ ─── Dev Tools 2-서브도메인 패턴 ───
│
├── ai-core.codebase.how 랜딩(공개) │
│ └── ai-core.devtools.codebase.how 어드민(운영자) │ AI Core Dashboard
├── db.codebase.how 랜딩(공개) │
│ └── db.devtools.codebase.how 어드민(운영자) │ pgAdmin
├── redis.codebase.how 랜딩(공개) │
│ └── redis.devtools.codebase.how 어드민(운영자) │ RedisInsight
├── monitor.codebase.how 랜딩(공개) │
│ └── monitor.devtools.codebase.how 어드민(운영자) │ Grafana LGTM
│
│ ─── 플랫폼 AI 서비스 ───
│
├── llm.codebase.how LLM Gateway (LiteLLM)
├── speech.codebase.how Speech API (TTS/STT)
└── chorus.codebase.how Chorus orchestration
도메인 분류
| 구분 | 예시 | 공개 여부 | 설명 |
|---|---|---|---|
| 제품 포털 | codebase.how | 🌐 공개 | 판매/홍보/문의 |
| 포털 스토어 | store.codebase.how | 🌐 공개 | 플러그인 스토어 |
| 플랫폼 문서 | docs.codebase.how | 🌐 공개 | 설치된 플랫폼 공용 문서 |
| Dev Tools 허브 | devtools.codebase.how | 🌐 공개 | 모든 도구의 단일 진입점 (카드형 랜딩) |
| Dev Tools 랜딩 | ai-core/db/redis/monitor.codebase.how | 🌐 공개 | 각 도구 소개 랜딩 (hub Nginx vhost) |
| Dev Tools 어드민 | *.devtools.codebase.how | 🔒 제한 | 실제 운영자 콘솔 (Tailscale/IP 제한 필수) |
| 플랫폼 AI 서비스 | llm/speech/chorus.codebase.how | 🔐 API 키 | API 엔드포인트 |
| 프로젝트 도메인 | quant.how, apis.how 등 | 🌐 공개 | 각 workspace 프로젝트 서비스 |
2-서브도메인 패턴 상세
원칙: {tool}.codebase.how은 공개 랜딩, {tool}.devtools.codebase.how는 운영자 어드민.
| 도구 | 랜딩 (공개) | 어드민 (.devtools. prefix) | 어드민 포트 |
|---|---|---|---|
| AI Core | ai-core.codebase.how | ai-core.devtools.codebase.how | 7000 |
| pgAdmin | db.codebase.how | db.devtools.codebase.how | 7050 |
| RedisInsight | redis.codebase.how | redis.devtools.codebase.how | 7051 |
| Monitoring | monitor.codebase.how | monitor.devtools.codebase.how | 7060 |
| Hub | devtools.codebase.how | — (자체가 진입점) | 7001 |
구현 구조
- 랜딩 4종: 모두
msk-hub컨테이너(7001)가 단일 Nginx로 Host 헤더 기반 vhost 분기 - 어드민 5종: NPM Proxy Host가 각 서비스 포트로 직접 포워드
NPM Proxy Host
├── ai-core.codebase.how → host:7001 (hub Nginx → landings/ai-core)
├── db.codebase.how → host:7001 (hub Nginx → landings/db)
├── redis.codebase.how → host:7001 (hub Nginx → landings/redis)
├── monitor.codebase.how → host:7001 (hub Nginx → landings/monitor)
├── devtools.codebase.how → host:7001 (hub Nginx default)
│
├── ai-core.devtools.codebase.how → host:7000 (Laravel Filament /platform)
├── db.devtools.codebase.how → host:7050 (pgAdmin)
├── redis.devtools.codebase.how → host:7051 (RedisInsight)
└── monitor.devtools.codebase.how → host:7060 (Grafana)
설정 (.env)
플랫폼 공용 도메인은 루트 .env 에서 중앙 관리합니다.
# 루트 도메인
ROOT_DOMAIN=codebase.how
# 제품 포털
PORTAL_WEB_URL=https://codebase.how
PORTAL_STORE_URL=https://store.codebase.how
PRODUCT_SUPPORT_EMAIL=support@codebase.how
# 플랫폼 공용
PLATFORM_BASE_DOMAIN=codebase.how
PLATFORM_DOCS_URL=https://docs.codebase.how
# Dev Tools 허브
PLATFORM_DEVTOOLS_URL=https://devtools.codebase.how
# Dev Tools 랜딩 (1차 서브도메인, 공개)
PLATFORM_AI_CORE_URL=https://ai-core.codebase.how
PLATFORM_DB_URL=https://db.codebase.how
PLATFORM_REDIS_URL=https://redis.codebase.how
PLATFORM_MONITOR_URL=https://monitor.codebase.how
# Dev Tools 어드민 (.devtools. prefix, 운영자 전용)
PLATFORM_AI_CORE_ADMIN_URL=https://ai-core.devtools.codebase.how
PLATFORM_DB_ADMIN_URL=https://db.devtools.codebase.how
PLATFORM_REDIS_ADMIN_URL=https://redis.devtools.codebase.how
PLATFORM_MONITOR_ADMIN_URL=https://monitor.devtools.codebase.how
# 플랫폼 AI 서비스
LLM_DOMAIN=llm.codebase.how
SPEECH_DOMAIN=speech.codebase.how
CHORUS_DOMAIN=chorus.codebase.how
# 포트 (7000번대 대역)
DEVTOOLS_AI_CORE_PORT=7000
DEVTOOLS_HUB_PORT=7001
PLATFORM_DOCS_PORT=7002
DEVTOOLS_PGADMIN_PORT=7050
DEVTOOLS_REDIS_INSIGHT_PORT=7051
DEVTOOLS_MONITORING_GRAFANA_PORT=7060
DEVTOOLS_MONITORING_PROMETHEUS_PORT=7061
구 환경변수 호환
PLATFORM_DASHBOARD_URL은 PLATFORM_AI_CORE_ADMIN_URL로 대체되었습니다. 과도기에는 두 변수를 모두 설정해 두세요.