pve9-repo-fix/RDP/RDP_TOGGLE_API.md
thug0bin c6919abf1c Add RDP Toggle API with venv support
RDP 관련 파일들을 RDP 폴더로 정리하고 API 시스템 추가

주요 변경사항:
- FastAPI 기반 RDP/Shell 모드 전환 API 서버 추가
- venv 환경을 사용하는 자동 설치 스크립트
- requirements.txt로 패키지 의존성 관리
- systemd 서비스로 자동 시작 설정
- CORS 지원으로 외부 프론트엔드 연동 가능
- 실시간 상태 모니터링 API
- 웹 기반 컨트롤 패널 포함

파일 구성:
- rdp-toggle-api.py: FastAPI REST API 서버
- install-rdp-api.sh: venv 환경 자동 설치
- requirements.txt: Python 패키지 의존성
- rdp-toggle-web.html: 웹 컨트롤 패널
- README.md: 사용 가이드

API 기능:
- GET /status: 현재 모드 확인
- POST /toggle: RDP/Shell 모드 전환
- GET /config: 설정 확인
- PUT /config: 설정 업데이트

리액트 프론트엔드에서 토글로 화면 모드 제어 가능

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-17 09:14:41 +09:00

3.3 KiB

RDP Toggle API Documentation

개요

Proxmox VE 호스트에서 RDP/Shell 모드를 API로 전환할 수 있는 시스템입니다.

구성 요소

1. rdp-toggle-api.py

  • FastAPI 기반 REST API 서버
  • 포트: 8080
  • RDP/Shell 모드 전환 제어

2. rdp-toggle-web.html

  • 웹 기반 컨트롤 패널
  • 실시간 상태 모니터링
  • 설정 변경 인터페이스

3. install-rdp-api.sh

  • 자동 설치 스크립트
  • systemd 서비스 설정

API 엔드포인트

GET /status

현재 상태 확인

curl http://localhost:8080/status

POST /toggle

모드 전환 (rdp/shell)

# RDP 모드로 전환
curl -X POST http://localhost:8080/toggle \
  -H 'Content-Type: application/json' \
  -d '{"mode":"rdp"}'

# Shell 모드로 전환  
curl -X POST http://localhost:8080/toggle \
  -H 'Content-Type: application/json' \
  -d '{"mode":"shell"}'

GET /config

현재 설정 확인

curl http://localhost:8080/config

PUT /config

설정 업데이트

curl -X PUT http://localhost:8080/config \
  -H 'Content-Type: application/json' \
  -d '{
    "rdp_server": "192.168.0.229",
    "rdp_username": "0bin",
    "rdp_password": "trajet6640"
  }'

테스트 환경 설정

RDP 서버 정보

  • 서버 주소: 192.168.0.229
  • 사용자명: 0bin
  • 비밀번호: trajet6640
  • 로컬 사용자: rdpuser

설치 방법

# 1. 설치 스크립트 실행
chmod +x install-rdp-api.sh
./install-rdp-api.sh

# 2. 서비스 상태 확인
systemctl status rdp-toggle-api

# 3. 웹 인터페이스 접속
# 브라우저에서 http://[PROXMOX_IP]:8080 접속

사용 시나리오

1. 초기 설정

# RDP 설정 구성
curl -X PUT http://localhost:8080/config \
  -H 'Content-Type: application/json' \
  -d '{
    "rdp_server": "192.168.0.229",
    "rdp_username": "0bin",
    "rdp_password": "trajet6640"
  }'

2. RDP 모드 활성화

curl -X POST http://localhost:8080/toggle \
  -H 'Content-Type: application/json' \
  -d '{"mode":"rdp"}'

3. Shell 모드로 복귀

curl -X POST http://localhost:8080/toggle \
  -H 'Content-Type: application/json' \
  -d '{"mode":"shell"}'

동작 원리

RDP 모드 활성화 시

  1. getty@tty1 자동 로그인 설정
  2. X Window System 자동 시작
  3. FreeRDP3 전체화면 실행
  4. RDP 연결 자동 수립

Shell 모드 활성화 시

  1. RDP 프로세스 종료
  2. X Window 종료
  3. 자동 로그인 해제
  4. 일반 TTY 로그인 화면 복원

상태 파일

  • 상태 저장: /var/lib/rdp-toggle/state.json
  • 설정 저장: /var/lib/rdp-toggle/config.json

문제 해결

API 서버가 시작되지 않을 때

# 로그 확인
journalctl -u rdp-toggle-api -f

# Python 패키지 재설치
pip3 install --upgrade fastapi uvicorn

RDP 연결이 실패할 때

# 현재 상태 확인
curl http://localhost:8080/status

# RDP 프로세스 확인
ps aux | grep xfreerdp3

Shell 모드로 전환이 안 될 때

# 수동으로 RDP 종료
pkill -u rdpuser
systemctl restart getty@tty1

보안 고려사항

  • API는 기본적으로 모든 IP에서 접근 가능 (0.0.0.0:8080)
  • 프로덕션 환경에서는 방화벽 설정 권장
  • 비밀번호는 평문으로 저장됨 (향후 암호화 필요)