Files
SPipe/SERVER_SETUP.md
T
bjkim1 21ebb16fb7 SPipe 데모 v2 (2026-10-30) 서버 배포본
- SPipe_server_2026-10-30.zip 내용을 풀어서 등록 (압축 파일은 올리지 않음)
- README에 데모 v2 서버 업데이트 순서 추가, 저장소에 없는 문서 목차 정리
- 패치내역을 docs/로 이동, _worklog.md 추가
- 임시 파일(backend/temp.*)과 API 키가 든 파일은 제외
2026-10-30 11:00:46 +09:00

94 lines
4.5 KiB
Markdown

# SPipe 사내 서버 설치 안내
다른 Windows PC를 SPipe 서버로 쓰기 위한 절차입니다. 사내 사용자는 브라우저에서 `http://<서버 IP>:8080` 으로 접속합니다.
- 웹 화면: 서버의 8080 포트 (사내망에 공개)
- 해석 API: 서버 내부 127.0.0.1:8000 (외부 비공개, 웹 서버가 `/api` 요청만 전달)
## 1. 준비물
| 항목 | 버전 / 비고 |
|---|---|
| Windows x64 PC | 해석 엔진 `64bit/epanet2.dll` 사용 |
| Node.js | 24.x (검증 버전 24.14.1) |
| Python | 3.12 64비트 (검증 버전 3.12.10), Python Launcher(`py`) 포함 |
| 인터넷 | 최초 패키지 설치, 배경지도·주소 검색 |
## 2. 설치 (최초 1회)
전달받은 `SPipe_server_*.zip`을 `C:\SPipe`에 압축 해제한 뒤 PowerShell에서 실행합니다. 경로는 원하는 위치로 바꿔도 됩니다.
```powershell
cd C:\SPipe
npm.cmd ci
py -3.12 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r backend\requirements.txt
.\.venv\Scripts\python.exe -m pip check
Copy-Item .env.example .env.local
notepad .env.local
npm.cmd test
npm.cmd run build
```
`.env.local`에는 브이월드 API 키와 카카오 JavaScript 키를 넣습니다. 키는 저장소·압축 파일에 들어 있지 않으니 담당자에게 따로 받습니다. 키를 넣지 않으면 브이월드 배경지도와 주소 검색만 동작하지 않고, 키를 바꾼 뒤에는 다시 빌드(`npm.cmd run build` 또는 `start-lan.ps1 -Rebuild`)해야 반영됩니다.
`npm test`가 모두 통과하고 빌드가 성공하면 다음 단계로 넘어갑니다.
## 3. 방화벽 (관리자 PowerShell, 최초 1회)
같은 사내 서브넷에서만 8080 포트 접속을 허용합니다. 회사 네트워크가 "공용"으로 잡혀 있어도 적용되도록 세 프로필을 모두 지정합니다.
```powershell
New-NetFirewallRule -DisplayName "SPipe 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow -Profile Domain,Private,Public -RemoteAddress LocalSubnet
```
다른 층·지사 등 서브넷이 다른 곳에서도 접속해야 하면 `LocalSubnet` 대신 사내 IP 대역(예: `10.0.0.0/8`)을 넣습니다. 8000 포트는 열지 않습니다.
## 4. 실행
```powershell
cd C:\SPipe
powershell -ExecutionPolicy Bypass -File .\start-lan.ps1
```
화면에 표시되는 `http://<서버 IP>:8080` 주소를 사내에 공유합니다. 창을 닫거나 Ctrl+C를 누르면 웹·API 서버가 함께 종료됩니다.
재부팅 후 자동으로 켜려면 작업 스케줄러에 "로그온 시" 트리거로 위 명령을 등록합니다.
## 5. 카카오 주소 검색 도메인 등록
주소 검색은 카카오 JavaScript 키를 쓰며, **등록된 주소에서만 동작합니다.** 카카오 개발자 콘솔 → 앱 → 플랫폼 키 → JavaScript 키 → "JavaScript SDK 도메인"에 서버 주소를 추가합니다.
- 예: `http://10.12.30.5:8080` (서버의 실제 IP)
- 서버 PC에서 직접 열 경우: `http://localhost:8080`
서버 IP가 바뀌면 이 등록도 바꿔야 하므로, 서버 PC는 고정 IP를 받아 두는 것을 권장합니다.
## 6. 업데이트
새 zip을 받으면 서버를 끄고(Ctrl+C), `C:\SPipe`에 덮어써 압축을 푼 뒤 실행합니다. `.venv`, `node_modules` 폴더는 지우지 않아도 됩니다.
```powershell
cd C:\SPipe
npm.cmd ci
.\.venv\Scripts\python.exe -m pip install -r backend\requirements.txt
powershell -ExecutionPolicy Bypass -File .\start-lan.ps1 -Rebuild
```
`start-lan.ps1`은 `dist` 폴더가 있으면 기존 빌드를 그대로 씁니다. 코드를 받은 뒤에는 반드시 `-Rebuild`를 붙입니다.
## 7. 사용자 안내 사항
- 작업 내용 자동 저장은 각자의 브라우저에만 남습니다. 서버에 저장되지 않으므로 INP와 결과물은 파일로 보관합니다.
- 배경지도·주소 검색·표고 조회는 외부 인터넷이 필요합니다.
- `.net` 내보내기는 지원하지 않습니다. `.inp`로 저장합니다.
- 로그인 기능이 없어 사내망의 누구나 접속할 수 있습니다.
## 8. 알려진 보류 항목 (2026-10-15 점검)
- `vite preview`는 상시 운영용 서버가 아닙니다. 사용자가 늘면 nginx 구성(`deploy/`)으로 옮깁니다.
- API 업로드 의존성(python-multipart 0.0.20, Starlette 0.47.3)에 알려진 보안 문제가 있어 수정 버전으로 갱신이 예정되어 있습니다. 갱신 전까지는 사내망에서만 운영합니다.