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

160 lines
3.3 KiB
Markdown

# 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
현재 상태 확인
```bash
curl http://localhost:8080/status
```
### POST /toggle
모드 전환 (rdp/shell)
```bash
# 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
현재 설정 확인
```bash
curl http://localhost:8080/config
```
### PUT /config
설정 업데이트
```bash
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
## 설치 방법
```bash
# 1. 설치 스크립트 실행
chmod +x install-rdp-api.sh
./install-rdp-api.sh
# 2. 서비스 상태 확인
systemctl status rdp-toggle-api
# 3. 웹 인터페이스 접속
# 브라우저에서 http://[PROXMOX_IP]:8080 접속
```
## 사용 시나리오
### 1. 초기 설정
```bash
# 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 모드 활성화
```bash
curl -X POST http://localhost:8080/toggle \
-H 'Content-Type: application/json' \
-d '{"mode":"rdp"}'
```
### 3. Shell 모드로 복귀
```bash
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 서버가 시작되지 않을 때
```bash
# 로그 확인
journalctl -u rdp-toggle-api -f
# Python 패키지 재설치
pip3 install --upgrade fastapi uvicorn
```
### RDP 연결이 실패할 때
```bash
# 현재 상태 확인
curl http://localhost:8080/status
# RDP 프로세스 확인
ps aux | grep xfreerdp3
```
### Shell 모드로 전환이 안 될 때
```bash
# 수동으로 RDP 종료
pkill -u rdpuser
systemctl restart getty@tty1
```
## 보안 고려사항
- API는 기본적으로 모든 IP에서 접근 가능 (0.0.0.0:8080)
- 프로덕션 환경에서는 방화벽 설정 권장
- 비밀번호는 평문으로 저장됨 (향후 암호화 필요)