서비스 포트 맵
외부로 열리는 것은 하나뿐입니다
AI 스택에서 호스트의 80 / 443 을 잡는 것은 plantpulse-proxy(nginx) 하나입니다.
채팅 화면도, 관리 콘솔도, 각 API 도 전부 이 프록시를 거쳐 들어갑니다.
2026-08 이전에는 AI Chat Web 이 80:8080 으로 직접 발행했습니다. 지금은 발행하지 않고
컨테이너 안에서만(expose: 8080) 열립니다. 노출 지점을 하나로 모아 방화벽·감사·TLS 를
한 군데서 처리하기 위해서입니다. 옛 문서를 보고 앱 컨테이너의 80 을 찾고 있었다면
프록시를 보세요.
호스트 이름으로 갈라집니다
프록시는 Host 헤더를 보고 뒷단을 고릅니다. 그래서 DNS 에 아래 이름들을 프록시 IP 로
걸어 두어야 각 서비스에 닿습니다.
| 호스트 | 뒷단 | 무엇 |
|---|---|---|
| 그 외 전부 (기본) | copliot-web:8080 | AI Chat Web — 채팅 화면 |
admin.* | admin-web:80 | 관리 콘솔 |
llm.* | litellm-proxy:4000 | LLM 게이트웨이 (OpenAI 호환) |
rag.* | rag-api:7115 | RAG 검색 API |
timeseries.* | insight-api:8970 | 시계열 인사이트 API |
parser.* | document-understanding-api:7120 | 문서 파싱 API |
vision.* | vision-api:7130 | 비전 API |
프록시는 443 도 듣지만, 앞단에 별도 로드밸런서·리버스 프록시를 두는 배포에서는 거기서
TLS 가 끊기고 프록시에는 평문으로 들어옵니다. 앞단 종료를 무시하도록 설정하면 무한
리다이렉트가 납니다. 어느 형태인지 먼저 확인하십시오.
LAN 에 직접 열리는 포트
프록시를 거치지 않고 호스트에 그대로 발행되는 포트입니다. 127.0.0.1 바인딩이 아니라
모든 인터페이스에 열립니다 — 사내망 밖에서 닿지 않도록 방화벽으로 막으십시오.
| 포트 | 서비스 | 왜 열려 있나 |
|---|---|---|
| 80 / 443 | plantpulse-proxy | 유일한 사용자 접점 |
| 4000 | LiteLLM | LLM 게이트웨이 직결 (llm.* 로도 접근 가능) |
| 7115 | RAG API | MCP 클라이언트(Claude Desktop 등) 직결용 |
| 8970 | TimeSeries Insight API | MCP 클라이언트 직결용 |
| 9080 | 관리 콘솔 (admin-web) | 운영자용. admin.* 로도 접근 가능 |
| 7474 | Neo4j Browser | 그래프 DB 관리 UI |
| 7687 | Neo4j Bolt | 그래프 DB 쿼리 프로토콜 |
프로필을 켜야 뜨는 것
기본 기동에는 포함되지 않고, 해당 compose 프로필로 올릴 때만 뜹니다.
| 포트 | 서비스 | 프로필 |
|---|---|---|
| 6006 | Arize Phoenix — 트레이스 UI | observability |
| 5000 | 로컬 이미지 레지스트리 | registry |
| 5080 | 레지스트리 관리 UI | registry |
| 9090 | 구 Copilot Web | archived |
2026-07 개편 때 기본 스택에서 빠졌을 뿐, observability 프로필로 되살릴 수 있습니다.
관리 콘솔에서도 프록시를 통해 볼 수 있습니다. 같은 개편으로 빠진 Langflow(7860)·
Jupyter(3500)는 정말 제거되어 되살릴 수 없습니다.
내부 전용 (발행하지 않음)
compose 네트워크 안에서 서비스 이름으로만 닿습니다. 호스트에서 nc -z 로 찔러도 응답이
없는 것이 정상입니다.
| 서비스 | 내부 주소 | 역할 |
|---|---|---|
| AI Chat Web | copliot-web:8080 | 채팅 화면 (프록시 기본 뒷단) |
| 관리 콘솔 백엔드 | admin-api | 인증 정본. admin-web 의 nginx 가 넘긴다 |
| 문서 파싱 API | document-understanding-api:7120 | parser.* 뒷단 |
| 비전 API | vision-api:7130 | vision.* 뒷단 |
| LightRAG | lightrag:9621 | RAG 엔진. 문서 관리 WebUI(/webui) |
| Qdrant | qdrant:6333 | 벡터 DB |
| Docling | docling-serve:5001 | 문서 변환 |
| vLLM (생성) | vllm-llm:8000 | 로컬 LLM 추론 |
| vLLM (임베딩) | vllm-emb:8000 | 임베딩 |
| vLLM (리랭크) | vllm-rerank:8000 | 리랭킹 |
| 시계열 추론 | timeseries-inference:8980 | 인사이트 모델 서빙 |
| DCGM Exporter | dcgm-exporter | GPU 메트릭 |
plantpulse-mcp-server(50000)와 plantpulse-ontology(8888)는 독립 서비스로 존재하지
않습니다. MCP·온톨로지 도구는 플랫폼 server-web 통합 MCP(/api/v5/mcp, api_key 인증)가
제공합니다.
플랫폼에서 빌려 쓰는 것
PostgreSQL(5432) · Cassandra(9042) · Redis/Valkey(6379) · MinIO(9000/9001)는 AI 스택이 띄우지 않습니다. PlantPulse 플랫폼 설치본을 공용으로 씁니다. 이 포트들의 방화벽·계정은 플랫폼 쪽 보안 설정을 따릅니다.
포트 상태 확인
전체 상태 확인
cd /home/kopens/plantpulse-ai/bin
./status.sh
health.sh 는 각 서비스의 헬스 엔드포인트까지 찔러 봅니다. 컨테이너가 떠 있는 것과
실제로 응답하는 것은 다르므로, 장애 조사에서는 이쪽을 쓰십시오.
개별 포트 확인
# 특정 포트 리스닝 확인
nc -z 127.0.0.1 <포트> && echo "OK" || echo "DOWN"
# 포트 사용 프로세스 확인
ss -tlnp | grep <포트>
방화벽에 열 것
| 대상 | 열 포트 |
|---|---|
| 전체 사용자 | 80 / 443 (프록시) |
| 운영자 (사내망) | 9080 관리 콘솔, 7474 Neo4j Browser |
| MCP 클라이언트 (사내망) | 7115 RAG, 8970 TimeSeries |
그 밖의 포트는 사내망 안에서도 열 이유가 없습니다. 데이터베이스 포트(5432 · 9042 · 6333 · 6379 · 7687 · 9000)는 어떤 경우에도 외부에 노출하지 마십시오.