Files
HM_project_Viewer_Board/README.md
T
2026-04-07 15:15:15 +09:00

5.4 KiB

인트라넷 게시판 초보자 가이드

이 프로젝트는 WSL2 Ubuntu + VS Code 환경에서 실행하는 사내 게시판입니다. 중요한 점은, WSL2에서는 앱을 0.0.0.0:8010으로 띄워도 다른 PC가 곧바로 WSL 주소로 접속되지 않을 수 있다는 점입니다.

즉, 내부망 공유를 하려면 아래 2가지가 모두 필요합니다.

  1. WSL 안에서 FastAPI 서버 실행
  2. Windows가 8010 요청을 받아 WSL의 8010으로 전달하도록 설정

1. 이번에 정리된 내용

  • 앱은 main.py 에서 0.0.0.0:8010으로 실행됨
  • 데이터는 data.db에 저장됨
  • WSL2 내부망 공유용 보조 스크립트를 scripts/ 폴더에 추가함
  • Windows portproxy와 방화벽 규칙 설정용 PowerShell 스크립트를 추가함

2. 폴더 구조

my-intranet-app/
├── main.py
├── requirements.txt
├── data.db
├── static/
├── templates/
│   └── index.html
└── scripts/
    ├── run_server.sh
    ├── show_access_info.sh
    ├── setup_windows_portproxy.ps1
    └── remove_windows_portproxy.ps1

3. 왜 다른 PC에서 접속이 안 되었는가

당신의 현재 환경은 WSL2입니다.

WSL2는 Windows 안에 있는 별도 가상 네트워크를 사용합니다. 그래서 아래처럼 동작할 수 있습니다.

  • 내 PC 브라우저에서 http://127.0.0.1:8010 접속: 됨
  • 다른 PC에서 http://WSL-IP:8010 접속: 안 될 수 있음

이럴 때는 다른 PC가 Windows 호스트 IP:8010 으로 접속하고, Windows가 그 요청을 WSL 앱으로 넘겨줘야 합니다.

4. 처음 한 번만 할 설정

프로젝트 폴더로 이동:

cd /home/b17301/my-intranet-app

가상환경 생성:

python3 -m venv .venv

가상환경 활성화:

source .venv/bin/activate

라이브러리 설치:

pip install -r requirements.txt

5. WSL에서 서버 실행

아래 명령으로 실행:

./scripts/run_server.sh

또는 기존처럼:

source .venv/bin/activate
python main.py

내 PC 테스트 주소:

http://127.0.0.1:8010

중요:

  • 이제 서버는 reload=False로 실행되므로, 예전처럼 자동 재시작 로그가 반복해서 나오지 않습니다.
  • 코드를 수정한 뒤 반영하려면 서버를 Ctrl + C로 끄고 다시 ./scripts/run_server.sh를 실행하면 됩니다.

6. 현재 WSL 쪽 주소 확인

아래 명령 실행:

./scripts/show_access_info.sh

현재 값은 실행 시점마다 달라질 수 있습니다.

  • WSL 내부 IP: ./scripts/show_access_info.sh 실행 결과를 확인
  • Windows와 연결된 주소 추정값: ./scripts/show_access_info.sh 실행 결과를 확인

하지만 다른 PC가 접속할 때는 보통 WSL 내부 IP가 아니라 Windows 호스트 IP를 사용해야 합니다.

7. 가장 중요한 설정: Windows 포트 전달

다음 작업은 Windows PowerShell을 관리자 권한으로 열어서 실행해야 합니다.

가장 쉬운 방법은 PowerShell에서 아래 명령을 실행하는 것입니다.

& "\\wsl$\Ubuntu\home\b17301\my-intranet-app\scripts\setup_windows_portproxy.ps1" -Port 8010

만약 CMD 창만 사용하고 있다면 아래 명령을 그대로 실행하면 됩니다.

"\\wsl$\Ubuntu\home\b17301\my-intranet-app\scripts\setup_windows_portproxy.cmd"

이 스크립트가 하는 일:

  • Windows의 0.0.0.0:8010 수신
  • 들어온 요청을 현재 WSL IP:8010 으로 전달
  • Windows 방화벽에서 TCP 8010 허용

8. 다른 PC에서 접속할 주소

다른 PC 브라우저에서는 아래처럼 접속합니다.

http://Windows호스트IP:8010

예를 들어 Windows PC의 실제 사내 IP가 192.168.0.25 라면:

http://192.168.0.25:8010

여기서 중요한 점:

  • WSL 주소를 다른 PC에 알려주면 안 될 수 있음
  • 다른 PC에는 반드시 Windows IP를 알려주는 쪽이 안전함

9. WSL IP가 바뀌면 어떻게 하나

WSL을 재시작하면 내부 IP가 바뀔 수 있습니다. 그럴 때는 아래 순서로 다시 맞추면 됩니다.

  1. WSL에서 ./scripts/show_access_info.sh 실행
  2. 새 WSL IP 확인
  3. 관리자 PowerShell에서 다시 실행
.\setup_windows_portproxy.ps1 -Port 8010

10. 접속 확인 순서

  1. WSL에서 ./scripts/run_server.sh 실행
  2. 내 PC 브라우저에서 http://127.0.0.1:8010 확인
  3. Windows 관리자 PowerShell에서 setup_windows_portproxy.ps1 실행
  4. 다른 PC에서 http://Windows호스트IP:8010 접속

11. 안 되면 확인할 것

  1. 서버가 실제로 실행 중인지 확인
lsof -i :8010
  1. 다른 프로그램이 8010을 이미 사용 중인지 확인
  2. Windows 방화벽 규칙이 생겼는지 확인
  3. 회사 네트워크에서 사설 포트 접근이 막히지 않았는지 확인
  4. WSL IP가 바뀌었는지 확인

12. 제거가 필요할 때

관리자 PowerShell에서:

& "\\wsl$\Ubuntu\home\b17301\my-intranet-app\scripts\remove_windows_portproxy.ps1" -Port 8010

또는 CMD에서는:

"\\wsl$\Ubuntu\home\b17301\my-intranet-app\scripts\remove_windows_portproxy.cmd" 8010

13. 초보자용 한 줄 요약

이 프로젝트는 이제 코드 문제는 해결되어 있고, 내부망 공유의 핵심은 Windows IP:8010 -> WSL 8010 연결을 Windows에서 열어주는 것입니다.