DOCS/journey/troubleshooting/250915_hardcoded_url_removal.md
happybell80 0252dd1a7f fix: 51123 서버 IP 주소 업데이트 (성수 이전)
192.168.219.45 → 192.168.0.100 일괄 변경

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 11:52:26 +09:00

6.4 KiB

하드코딩 URL 제거 작업

최초 작성: 2025-09-15

최종 수정: 2025-09-23

작성자: 51123 서버 관리자

정정 사항 (문서 vs 코드 불일치)

  • ROBEING_HOST 변수명은 실제 코드에서 사용되지 않음. robeing-gateway는 ROBEING_DEFAULT_HOST/ROBEING_DEFAULT_PORT를 사용함 (2025-09-23 기준).
  • SLACK_CALLBACK_URL, GMAIL_CALLBACK_URL은 코드에 없음. auth-server는 SLACK_REDIRECT_URI, GOOGLE_REDIRECT_URI, GOOGLE_PASSPORT_REDIRECT_URI를 사용함.
  • FRONTEND_URL은 코드에서 직접 사용하지 않음. 프론트는 VITE_AUTH_SERVER_URL을 사용하고, CORS 도메인은 코드에 상수로 정의되어 있음.

발견된 하드코딩 현황

auth-server (2025-09-23 현재)

app/providers/slack.py

  • Line 79, 187, 189: http://localhost:3000 여전히 존재
  • Line 158, 165, 177: http://localhost:3000/login?error= 여전히 존재
  • Line 94: https://auth.ro-being.com/auth/slack/login/callback (확인 필요)
  • Line 203: https://auth.ro-being.com/auth/slack/login/callback (확인 필요)

app/providers/gmail_passport.py

  • Line 54: postgresql://robeings:robeings@192.168.0.100:5432/main_db
  • Line 26: https://auth.ro-being.com/auth/gmail/passport/callback

app/providers/gmail.py

  • Line 23: https://auth.ro-being.com/auth/gmail/callback

app/main.py

  • Line 28-32: http://localhost:3000, 5173, 5174, 8000, 10508

frontend-customer (2025-09-23 현재)

src/contexts/auth-context.tsx

  • Line 23: https://auth.ro-being.com (기본값) 여전히 존재
  • Line 80: https://auth.ro-being.com/auth/verify 여전히 존재

src/components/skills-items-panel.tsx

  • Line 361: https://auth.ro-being.com/auth/gmail/passport
  • Line 432: https://auth.ro-being.com/auth/slack/passport/install

rb8001 (2025-09-23 현재)

app/core/config.py

  • Line 35-36: postgresql://postgres:postgres@localhost 기본값으로 존재
  • Line 15: LUNCH_WORLDCUP_CHANNEL_ID 추가됨 (환경변수 지원)

app/commands/skill_commands.py

  • 하드코딩: localhost:8502, localhost:8505 URL (확인 필요)

app/skills/email_integration.py

  • Line 37: http://192.168.0.100:9000/api/slack/mapping/{slack_id}
  • Line 253: http://localhost:8001/api/llm/extract (콜백 URL)
  • Line 17-18: localhost:8501, localhost:9024 (기본값)

app/memory/embedding_client.py

  • 임베딩 서비스 URL 하드코딩

app/core/emotion/base.py

  • Line 13: http://localhost:8015 (SKILL_EMBEDDING_URL 기본값)

app/brain/state_client.py

  • Line 17: http://localhost:8507 (STATE_SERVICE_URL 기본값)

robeing-gateway (2025-09-23 현재)

app/main.py

  • root 엔드포인트 제거됨 (보안 개선)
  • Line 205: 환경변수 사용 (robeing_info['host'], robeing_info['port'])
  • Line 552: ROBEING_DEFAULT_HOST, ROBEING_DEFAULT_PORT 환경변수 사용 개선됨
  • Line 605: ROBEING_DEFAULT_HOST, ROBEING_DEFAULT_PORT 환경변수 사용 개선됨
  • 하드코딩된 IP 대부분 제거됨

app/database.py

  • Line 20: postgresql+asyncpg://postgres:postgres@localhost:5432/main_db
  • Line 24: 192.168.219.52 (DEFAULT_ROBEING_HOST로 환경변수화됨)

robeing-monitor

app/core/config.py

  • DB 및 서비스 URL 다수 하드코딩

app/api/monitor.py

  • rb10508_micro 등 localhost URL 배열

app/api/items.py

  • https://auth.ro-being.com 포함

docker-compose.yml

  • DB 호스트 192.168.0.100

skill-email

main.py

  • Monitor 기본값: http://localhost:9024

services/api_credentials_provider.py

  • Monitor URL 하드코딩

skill-slack

app/core/config.py

  • LLM_GATEWAY_URL, STATE_SERVICE_URL, MEMORY_SERVICE_URL localhost

services/slack_data_client_impl.py

  • rb10408, rb10409, rb10410 localhost 매핑

워크플로우/배포문서

  • redis://localhost:6379

skill-publish

app/config.py

  • Squarespace, 뉴스 URL 하드코딩

services/

  • 외부 서비스 URL 하드코딩

Dockerfile/docker-compose.yml

  • 헬스체크: http://localhost:8511

frontend-base

backend/main.py, backend/admin_routes.py

  • CORS 허용 도메인 및 헬스체크 대상에 http://localhost:*, http://172.17.0.1:* 고정

rb10508_micro

app/api/endpoints.py

  • DB 접속: host='192.168.0.100', port=5432, user='robeings' 하드코딩

skill-embedding

http_embedding_function.py / 테스트/컴포즈

  • 기본 URL 및 헬스체크: http://localhost:8515 하드코딩

nginx-infra

server-nginx-default

  • proxy_pass에 http://localhost:*, http://192.168.219.52:* 다수 고정

실제 사용되는 환경변수 (2025-09-23 업데이트)

  • VITE_AUTH_SERVER_URL (frontend-customer)
  • DATABASE_URL (여러 서비스 공통)
  • ROBEING_DEFAULT_HOST, ROBEING_DEFAULT_PORT (robeing-gateway) 변수명 변경됨
  • MONITOR_URL (robeing-gateway)
  • SLACK_REDIRECT_URI, GOOGLE_REDIRECT_URI, GOOGLE_PASSPORT_REDIRECT_URI (auth-server)
  • SKILL_EMAIL_URL, SKILL_NEWS_URL, SKILL_SLACK_URL, SKILL_EMBEDDING_URL, STATE_SERVICE_URL (rb8001 및 관련 스킬)
  • LUNCH_WORLDCUP_CHANNEL_ID (rb8001) 신규 추가

진행 상황 (2025-09-23)

완료된 작업

  • robeing-gateway: Pydantic v2 마이그레이션 완료
  • robeing-gateway: 하드코딩된 IP 대부분 환경변수로 대체
  • robeing-gateway: root 엔드포인트 제거 (보안 개선)
  • rb8001: LUNCH_WORLDCUP_CHANNEL_ID 환경변수 추가

미완료 항목

  • ⚠️ auth-server: localhost:3000 하드코딩 여전히 존재
  • ⚠️ frontend-customer: auth.ro-being.com 하드코딩 존재 (기본값)
  • ⚠️ 각 skill 서비스들의 localhost URL 확인 필요

교체 가이드 (요약)

  • 코드 상수에 직접 박힌 URL/IP/포트를 전부 환경변수로 치환한다. 이미 존재하는 키를 우선 사용하고, 미존재 시 새 키를 정의한다.
  • robeing-gateway Stats 프록시는 MONITOR_URL만 참조하도록 통일하고(현재 304행), Slack 프록시 대상도 환경변수 또는 DB의 robeing_url을 사용한다.
  • auth-server의 모든 리다이렉트/콜백 URL은 *_REDIRECT_URI 계열 변수만 사용한다. http://localhost:3000로의 에러 리다이렉트는 state의 redirect_uri 또는 별도 FRONTEND_ORIGIN 변수로 대체한다.
  • CORS 허용 도메인과 헬스체크 대상은 코드 상수 대신 ENV(.env, compose, workflow)에서 주입하고 코드의 하드코딩을 제거한다.