# VM 106 (claude) — VNC + XFCE 원격 데스크톱 셋업 기록 > Ubuntu 26.04 LTS / Proxmox VM 106 / RTX 5050 GPU 패스스루(연산 전용) 환경에서 > 헤드리스(모니터 없음) 원격 데스크톱을 구성한 전체 과정과 함정 정리. > 용도: 크롬으로 웹 제어 + 디스코드 화면공유 (Javis 연동) --- ## 1. 최종 구성 요약 | 항목 | 값 | |---|---| | VM | 106 (claude), IP `192.168.10.9` | | OS | Ubuntu 26.04 LTS (resolute) | | GPU | RTX 5050 패스스루, 연산 전용 (no x-vga), CUDA 13.2, driver 595.71.05 | | VNC 서버 | TigerVNC 1.15.0, 포트 `5901` | | 데스크톱 | XFCE | | 자동 시작 | `~/start-vnc.sh` + systemd user service + linger | | 접속 | VNC 뷰어로 `192.168.10.9:5901` (RDP 아님 / mstsc 안 됨) | --- ## 2. 접속 정보 - **프로토콜**: VNC (RDP 아님 — 윈도우 mstsc로는 접속 불가) - **주소**: `192.168.10.9:5901` - **VNC 뷰어**: TigerVNC Viewer / RealVNC Viewer / MobaXterm 내장 VNC - **비밀번호**: `vncpasswd`로 설정한 8자 (VNC는 비번 8자 제한) --- ## 3. 핵심 함정 (이게 제일 중요) ### 3-1. RDP(gnome-remote-desktop)는 포기 → VNC로 전환 - 시스템 모드 `grdctl --system`에서 자격증명 키링 저장 실패 (TPM 없음 → GKeyFile 폴백 깨짐) - `Credentials are not set, denying client` 로 접속 거부 → TigerVNC로 전환 ### 3-2. GPU 패스스루 환경 → render/video 그룹 필수 - `claude` 사용자가 `render`, `video` 그룹에 없으면 Xvnc가 `/dev/dri` 접근 실패로 X 서버 즉시 크래시 - 증상: `libEGL warning: failed to open /dev/dri/card0: Permission denied`, `X connection to :1 broken` - 해결: `sudo usermod -aG render,video claude` (그룹 추가 후 재로그인/재부팅 필요) ### 3-3. startxfce4 대신 xfce4-session 직접 호출 - `startxfce4`는 X 서버가 이미 떠 있으면 그냥 종료됨 → xstartup에서 `xfce4-session` 직접 호출 ### 3-4. 메뉴/패널이 비면 → RENDER 확장 켜기 + XDG 환경변수 - `-extension RENDER`를 넣으면 XFCE 메뉴/패널이 공백으로 나옴 → 이 환경에선 RENDER 켜는 게 정답 - systemd 서비스 환경엔 `XDG_DATA_DIRS`, `XDG_CONFIG_DIRS`를 명시 ### 3-5. 설정 손상 시 초기화 - `mv ~/.config/xfce4 ~/.config/xfce4.broken && mv ~/.cache/xfce4 ~/.cache/xfce4.broken` 후 재시작 ### 3-6. systemctl --user는 XDG_RUNTIME_DIR 필요 - `export XDG_RUNTIME_DIR=/run/user/$(id -u)` --- ## 4. 설치 패키지 ```bash sudo apt install -y tigervnc-standalone-server tigervnc-common sudo apt install -y xfce4 xfce4-goodies dbus-x11 sudo apt install -y fonts-noto-cjk fonts-noto-cjk-extra fonts-nanum cd /tmp && wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo apt install -y ./google-chrome-stable_current_amd64.deb ``` --- ## 5. 자동 시작 (`~/start-vnc.sh`) ```bash #!/bin/bash export DISPLAY=:1 export XDG_RUNTIME_DIR=/run/user/$(id -u) export HOME=/home/claude export XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop export XDG_CONFIG_DIRS=/etc/xdg pkill -9 -u $(id -u) Xvnc 2>/dev/null sleep 2 # 주의: -extension RENDER 넣지 말 것 (메뉴/패널이 안 그려짐) /usr/bin/Xvnc :1 -geometry 1920x1080 -depth 24 -rfbport 5901 \ -rfbauth $HOME/.config/tigervnc/passwd -SecurityTypes VncAuth -localhost no & sleep 5 exec dbus-launch --exit-with-session xfce4-session ``` systemd user service + linger로 부팅 시 자동 시작. --- ## 6. Javis 연동 시 핵심 포인트 - 봇/브릿지는 디스플레이 **:1** 에서 동작하는 X 화면을 사용합니다 (`VNC_DISPLAY=:1`). - 크롬 제어: `DISPLAY=:1 google-chrome --password-store=basic --no-first-run` - 화면 송출(셀프봇/스크린샷)은 ffmpeg `x11grab`으로 `:1`을 캡처합니다. - noVNC를 쓰려면: `websockify --web=/usr/share/novnc 6080 localhost:5901` 후 `.env`의 `NOVNC_URL=http://192.168.10.9:6080/vnc.html`.