🖥️ s1.byunc.com 서버 구성 보고서

서버 IP: 192.168.0.126  |  도메인: s1.byunc.com  |  최종 업데이트: 2026-05-26

1. 서버 개요

서버 주소
192.168.0.126
도메인
s1.byunc.com
웹서버
nginx 1.22.1 (HTTPS)
SSL
Let's Encrypt (Certbot)
컨테이너 엔진
Docker + Docker Compose
주요 서비스
SteVe OCPP / EV Dashboard
ℹ️
HTTP(80)로 접속하면 자동으로 HTTPS(443)로 리다이렉트됩니다. 루트(/)는 /steve/로 리다이렉트됩니다.

2. nginx URL 라우팅 구조

설정 파일: /etc/nginx/conf.d/s1.byunc.com.conf

경로프록시 대상설명
https://s1.byunc.com/ /steve/ (302 리다이렉트) 루트 접속 시 자동 이동
https://s1.byunc.com/steve/ 192.168.0.126:8180 SteVe OCPP 관리 시스템
https://s1.byunc.com/steve/websocket 192.168.0.126:8180 (WS) OCPP 충전기 WebSocket 연결 전용
https://s1.byunc.com/dashboard 192.168.0.126:8000 EV 충전 대시보드 (FastAPI)
https://s1.byunc.com/api/ 192.168.0.126:8000 EV 충전 REST API
https://s1.byunc.com/health 192.168.0.126:8000 헬스체크 엔드포인트

3. SteVe — OCPP 중앙 관리 시스템

SteVe (SteckdosenVerwaltung)
오픈소스 OCPP 1.2 / 1.5 / 1.6 중앙 시스템  운영중

접속 정보

접속 URL
관리자 아이디
admin
관리자 비밀번호
1234
내부 포트
8180 (HTTP), 8443 (HTTPS)
컨텍스트 경로
/steve
Jetty 버전
12.1.7

주요 기능

  • 충전기 관리 — ChargeBox 등록, 상태 조회, 원격 제어 (시작/중지)
  • 사용자 관리 — OCPP 태그(RFID) 등록/관리, 사용 이력
  • 거래 내역 — 충전 트랜잭션 로그, 미터값 기록
  • OCPP 운영 — 1.2/1.5/1.6 SOAP · JSON-over-WebSocket 지원
  • 예약 — 충전기 예약 관리
  • Swagger UI/steve/manager/swagger-ui/index.html

컨테이너 구성

컨테이너이미지포트역할
steve-app-1steve-app (빌드)8180, 8445Spring Boot + Jetty 앱
steve-db-1mariadb:10.11.163307→3306MariaDB 데이터베이스

소스 경로

/root/steve/steve/          # 프로젝트 루트
├── src/main/java/...
│   └── config/JettyConfiguration.java  # HTTP compliance 설정 (중요!)
├── src/main/resources/
│   └── application-docker.properties   # DB/포트/인증 설정
└── docker-compose.yml
⚠️
중요: 컨테이너 시작 시 Maven으로 소스를 직접 빌드합니다. 첫 시작에 3~5분 소요됩니다.

4. EV Dashboard — 충전 모니터링 대시보드

📊
EV Charging Dashboard (FastAPI)
EV 충전기 실시간 모니터링 및 REST API  운영중

접속 정보

대시보드 URL
API URL
s1.byunc.com/api/
내부 포트
8000 (FastAPI/uvicorn)
DB
PostgreSQL 16 (ev-postgres)
Cache
Redis (ev-redis:6375)
OCPP 프록시
ev-proxy (9002/9003)

주요 기능

  • 실시간 충전 현황 — 충전기 상태, 충전량, 전력 모니터링
  • 충전 이력 조회 — 날짜/충전기별 상세 로그
  • REST API/api/ 경로로 외부 연동 가능
  • OCPP 프록시 — ev-proxy 컨테이너로 충전기 통신 중계
  • 시뮬레이터/simulator.html (내부 접근)

컨테이너 구성

컨테이너이미지포트역할
ev-apiev-charging-backend-api8000FastAPI 메인 앱
ev-proxyev-charging-backend-proxy9002, 9003OCPP 프록시 서버
ev-postgrespostgres:16-alpine5432PostgreSQL DB
ev-redisredis:7-alpine6375→6379Redis 캐시

소스 경로

/root/steve/ev-charging-backend/
├── app/                # FastAPI 소스
├── docker-compose.yml
├── Dockerfile
├── Dockerfile.proxy
└── .env               # DB 접속정보 (비공개)
⚠️
주의: 서버 재부팅 후 ev-api가 DB 준비 전에 시작되면 uvicorn이 종료될 수 있습니다. 아래 재시작 방법 참고.

5. 서비스 재시작 방법

⚡ SteVe 재시작
1
디렉토리 이동
cd /root/steve/steve
2
컨테이너 재시작 빌드 포함 3~5분 소요
docker compose restart app
# 또는 완전 재빌드:
docker compose up -d --build app
3
시작 확인
docker logs steve-app-1 -f
# "Started SteveApplication" 로그 확인 시 정상
📊 EV Dashboard 재시작
1
디렉토리 이동
cd /root/steve/ev-charging-backend
2
API 서버 재시작
docker compose restart api
3
시작 확인
docker logs ev-api --tail 20
# "Application startup complete." 확인
🔧 nginx 재시작
# 설정 문법 검사 후 리로드
nginx -t && systemctl reload nginx

# 완전 재시작 (필요 시)
systemctl restart nginx

# 설정 파일 위치
/etc/nginx/conf.d/s1.byunc.com.conf
🩺 상태 확인 명령어
# 전체 컨테이너 상태
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

# nginx 상태
systemctl status nginx

# SteVe 로그 실시간
docker logs steve-app-1 -f --tail 50

# EV API 로그
docker logs ev-api --tail 50

# 접속 테스트
curl -s -o /dev/null -w "%{http_code}" https://s1.byunc.com/steve/
curl -s -o /dev/null -w "%{http_code}" https://s1.byunc.com/dashboard

6. 트러블슈팅

🚨 /steve/ 접속 시 HTTP 400 Bad Request

Jetty 12의 strict HTTP compliance가 중복 Host 헤더를 거부하는 현상

해결됨 (2026-05-26): JettyConfiguration.java 추가로 HttpCompliance.RFC7230_LEGACY 적용 완료. 파일 위치: /root/steve/steve/src/main/java/de/rwth/idsg/steve/config/JettyConfiguration.java
# 재발 시 steve 컨테이너 재빌드
cd /root/steve/steve && docker compose up -d --build app

🚨 /dashboard 접속 불가 (ev-api 중단)

서버 재부팅 후 PostgreSQL 준비 전에 ev-api가 시작되면 uvicorn 프로세스가 종료됨

# 확인
docker logs ev-api --tail 20
# "CannotConnectNowError" 또는 "Application startup failed" 시

# 해결
cd /root/steve/ev-charging-backend && docker compose restart api

🚨 nginx SSL 인증서 갱신

# 인증서 갱신 (Certbot 자동 갱신)
certbot renew --dry-run
certbot renew
systemctl reload nginx

# 인증서 만료일 확인
certbot certificates

7. 서버 전체 컨테이너 목록

컨테이너명용도외부 포트
steve-app-1⚡ SteVe OCPP 관리 시스템8180, 8445
steve-db-1SteVe MariaDB3307
ev-api📊 EV 충전 대시보드 API8000
ev-proxyOCPP 프록시9002, 9003
ev-postgresEV API PostgreSQL5432
ev-redisEV API Redis6375
ev-dashboardEV 대시보드 (별도)8001
gitea🐙 Git 서버 (gitea.byunc.com)8832, 2224
codium💻 VS Code Server8443
nextcloud☁️ 파일 클라우드8081
open-webui🤖 OpenWebUI (AI)3233
n8n_n8n_1⚙️ n8n 자동화5678
immich_server📷 사진 관리2283
jupyter-lab📓 Jupyter Lab8888
metabase📈 Metabase BI3000
vaultwarden🔑 비밀번호 관리8055
homarr🏠 홈 대시보드7575
portainer🐳 Docker 관리 UI9000, 9443
drawio📐 다이어그램 툴8044, 8444
stirling-pdf📄 PDF 도구8084
penpot-*🎨 UI 디자인 도구9001
trilium-notes📝 노트 앱8066
flowise_*🔀 AI 플로우 빌더3001
comfyui-cpu🎨 ComfyUI (이미지 AI)8188
whisper_*🎙️ 음성인식 (Whisper)8800
perplexica_*🔍 AI 검색3011