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>
3.3 KiB
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 모드 활성화 시
- getty@tty1 자동 로그인 설정
- X Window System 자동 시작
- FreeRDP3 전체화면 실행
- RDP 연결 자동 수립
Shell 모드 활성화 시
- RDP 프로세스 종료
- X Window 종료
- 자동 로그인 해제
- 일반 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)
- 프로덕션 환경에서는 방화벽 설정 권장
- 비밀번호는 평문으로 저장됨 (향후 암호화 필요)