Files
goldenChart/docs/exdev-subdomain-setup.md
2026-06-17 21:49:15 +09:00

133 lines
3.9 KiB
Markdown

# exdev.co.kr 서브도메인 분리 — stock / chatbot
| 서비스 | URL |
|--------|-----|
| **GoldenChart** | https://stock.exdev.co.kr |
| **Chatbot** | https://chatbot.exdev.co.kr/chatbot/* |
| **Legacy apex** | https://exdev.co.kr → stock 또는 chatbot으로 301 |
## 1. DNS (Gabia 등)
| 호스트 | 타입 | 값 |
|--------|------|-----|
| `stock` | A | 서버 공인 IP |
| `chatbot` | A | 서버 공인 IP |
## 2. SSL 인증서 (exAIChatbot2.0 서버)
```bash
cd /path/to/exAIChatbot2.0
# env: STOCK_DOMAIN, CHATBOT_DOMAIN (env.exdev 참고)
bash scripts/exdev/obtain-cert-exdev.sh # exdev + stock + chatbot SAN
bash scripts/exdev/start-https-caddy.sh
```
Caddyfile: `docker/caddy/Caddyfile.exdev`
## 3. GoldenChart
서버 `.env`:
```env
GC_DESKTOP_APP_PUBLIC_BASE_URL=https://stock.exdev.co.kr
GC_MOBILE_APP_PUBLIC_BASE_URL=https://stock.exdev.co.kr
```
Desktop updater / Jenkins:
```bash
export DESKTOP_UPDATE_BASE_URL=https://stock.exdev.co.kr/desktop/updates
```
검증:
```bash
curl -sS https://stock.exdev.co.kr/ | head
DESKTOP_UPDATE_BASE_URL=https://stock.exdev.co.kr/desktop/updates ./scripts/verify-desktop-updater-endpoint.sh
```
## 4. Chatbot
`.env` (env.exdev):
```env
PUBLIC_BASE_URL=https://chatbot.exdev.co.kr
CHATBOT_DOMAIN=chatbot.exdev.co.kr
```
카카오 스킬 URL 예:
- Q&A: `https://chatbot.exdev.co.kr/chatbot/kakao/skill`
- 챗봇홈: `https://chatbot.exdev.co.kr/chatbot/app/`
검증:
```bash
curl -sS https://chatbot.exdev.co.kr/chatbot/health
curl -sS https://chatbot.exdev.co.kr/chatbot/app/ | head
```
## 5. SSH / git remote
서버 SSH·배포 스크립트의 `REMOTE_HOST=exdev.co.kr`**그대로** 둡니다 (서버 내부·스크립트용).
## 6. 서버(Mac Studio) 안에서 브라우저·데스크톱 앱 접속
원격에서는 `https://stock.exdev.co.kr` 이 정상이어도, **서버 본체 브라우저**는 공인 IP로 다시 들어오는 **NAT hairpin** 이 막혀 `stock` 서브도메인만 타임아웃될 수 있습니다.
| URL | 서버 내부 (hosts 미설정) | 조치 후 |
|-----|--------------------------|---------|
| `http://exdev.co.kr` | ✅ (`/etc/hosts` → 127.0.0.1) | — |
| `https://exdev.co.kr` | ✅ (Caddy가 직접 프록시) | — |
| `https://stock.exdev.co.kr` | ❌ 타임아웃 | hosts에 `stock` 추가 |
**1회 설정 (서버 콘솔 또는 SSH에서 sudo):**
```bash
sudo bash /path/to/goldenChart/scripts/setup-server-local-hosts.sh
```
또는 서버 바탕화면 `Setup-GoldenChart-Hosts.command` 더블클릭 → 관리자 암호 입력.
추가되는 항목:
```text
127.0.0.1 exdev.co.kr
127.0.0.1 stock.exdev.co.kr
127.0.0.1 chatbot.exdev.co.kr
```
**검증:**
```bash
curl -sS -o /dev/null -w "stock %{http_code}\n" https://stock.exdev.co.kr/
curl -sS https://stock.exdev.co.kr/desktop/updates/latest.json | head
```
**데스크톱 앱 자동 업데이트:** 기본 엔드포인트는 `stock.exdev.co.kr` 이므로 위 hosts 설정이 필요합니다.
신규 빌드부터는 `https://exdev.co.kr/desktop/updates/latest.json`**두 번째 fallback** 으로 포함합니다 (`desktop/src-tauri/tauri.conf.json`).
**주의:** `networksetup -setdnsservers Ethernet 127.0.0.1` 처럼 DNS를 127.0.0.1 로 바꾸지 마세요 (로컬 DNS 서버가 없으면 전체 DNS가 깨집니다). 복구: `networksetup -setdnsservers Ethernet Empty`
## 7. SSH / git remote (로컬 Mac)
**로컬 Mac에서 `git push` 시 `Could not resolve hostname exdev.co.kr`**
일부 네트워크(회사·VPN·ISP)에서는 apex `exdev.co.kr` DNS만 실패하고 `stock.exdev.co.kr` 은 정상입니다.
같은 서버이므로 **git remote 만** 서브도메인으로 바꿉니다:
```bash
git remote set-url origin ssh://aidev@stock.exdev.co.kr/Volumes/ADATA/git/goldenChart.git
git push origin main
```
또는 `/etc/hosts``125.244.198.119 exdev.co.kr` 추가.
`~/.ssh/config` 예:
```
Host exdev exdev.co.kr stock.exdev.co.kr
HostName stock.exdev.co.kr
User aidev
```