- Flask 기반 웹 제어 패널 구현
- 토글 스위치로 RDP 자동 로그인 제어
- Tailscale IP 기반 접속 정보 표시
- Python venv 환경 사용
- systemd 서비스로 자동 실행
- PBS 자동 등록 스크립트 기획서 추가
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
106 lines
3.3 KiB
Bash
Executable File
106 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# RDP 자동 로그인 웹 제어 패널 설치 스크립트
|
|
|
|
set -e
|
|
|
|
echo "========================================="
|
|
echo "RDP 자동 로그인 웹 제어 패널 설치"
|
|
echo "========================================="
|
|
|
|
# 색상 정의
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# root 권한 확인
|
|
if [ "$EUID" -ne 0 ]; then
|
|
echo -e "${RED}이 스크립트는 root 권한으로 실행해야 합니다${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# 작업 디렉토리 설정
|
|
WORK_DIR="/root/proxmox-rdp-autosetup"
|
|
VENV_DIR="${WORK_DIR}/venv"
|
|
|
|
# Python3 및 pip 설치 확인
|
|
echo -e "${YELLOW}Python3 및 필요한 패키지 설치 중...${NC}"
|
|
apt-get update
|
|
apt-get install -y python3 python3-pip python3-venv
|
|
|
|
# 가상 환경 생성
|
|
echo -e "${YELLOW}Python 가상 환경 생성 중...${NC}"
|
|
cd ${WORK_DIR}
|
|
python3 -m venv ${VENV_DIR}
|
|
|
|
# 가상 환경 활성화 및 패키지 설치
|
|
echo -e "${YELLOW}Flask 및 관련 패키지 설치 중...${NC}"
|
|
source ${VENV_DIR}/bin/activate
|
|
pip install --upgrade pip
|
|
pip install -r ${WORK_DIR}/requirements.txt
|
|
|
|
# systemd 서비스 파일 복사
|
|
echo -e "${YELLOW}systemd 서비스 설정 중...${NC}"
|
|
cp /root/proxmox-rdp-autosetup/rdp-control-web.service /etc/systemd/system/
|
|
|
|
# systemd 데몬 리로드
|
|
systemctl daemon-reload
|
|
|
|
# 서비스 활성화 및 시작
|
|
echo -e "${YELLOW}웹 서비스 시작 중...${NC}"
|
|
systemctl enable rdp-control-web.service
|
|
systemctl start rdp-control-web.service
|
|
|
|
# 서비스 상태 확인
|
|
sleep 2
|
|
if systemctl is-active --quiet rdp-control-web.service; then
|
|
echo -e "${GREEN}✅ 웹 제어 패널이 성공적으로 설치되었습니다!${NC}"
|
|
echo ""
|
|
echo "========================================="
|
|
echo "접속 정보:"
|
|
echo "========================================="
|
|
|
|
# IP 주소 가져오기
|
|
IP=$(ip -4 addr show scope global | grep inet | head -1 | awk '{print $2}' | cut -d'/' -f1)
|
|
|
|
# Tailscale IP 확인
|
|
TAILSCALE_IP=""
|
|
if command -v tailscale &> /dev/null; then
|
|
TAILSCALE_IP=$(tailscale ip -4 2>/dev/null || echo "")
|
|
fi
|
|
|
|
echo "로컬 접속: http://${IP}:5000"
|
|
|
|
if [ -n "$TAILSCALE_IP" ]; then
|
|
echo "Tailscale 접속: http://${TAILSCALE_IP}:5000"
|
|
fi
|
|
|
|
echo ""
|
|
echo "========================================="
|
|
echo "서비스 관리 명령어:"
|
|
echo "========================================="
|
|
echo "상태 확인: systemctl status rdp-control-web"
|
|
echo "재시작: systemctl restart rdp-control-web"
|
|
echo "중지: systemctl stop rdp-control-web"
|
|
echo "로그 확인: journalctl -u rdp-control-web -f"
|
|
echo ""
|
|
else
|
|
echo -e "${RED}❌ 서비스 시작 실패${NC}"
|
|
echo "로그를 확인하려면 다음 명령어를 실행하세요:"
|
|
echo "journalctl -u rdp-control-web -n 50"
|
|
exit 1
|
|
fi
|
|
|
|
# 방화벽 설정 (ufw가 설치되어 있는 경우)
|
|
if command -v ufw &> /dev/null; then
|
|
echo -e "${YELLOW}방화벽 규칙 추가 중...${NC}"
|
|
ufw allow 5000/tcp
|
|
echo -e "${GREEN}✅ 포트 5000이 방화벽에 허용되었습니다${NC}"
|
|
fi
|
|
|
|
echo ""
|
|
echo -e "${GREEN}=========================================${NC}"
|
|
echo -e "${GREEN}설치 완료!${NC}"
|
|
echo -e "${GREEN}웹 브라우저에서 위 주소로 접속하세요${NC}"
|
|
echo -e "${GREEN}=========================================${NC}" |