카테고리 없음

크롬 VNC 용 노트북 서버 스크립트 (기록용)

siotMan 2025. 11. 14. 11:46

필자는 13년 전 구입한 gram 을 리눅스 서버로 사용하고 있다. 내장 그래픽 코어가 아까워서 크롬 렌더링을 시켜본다. 희망컨대 크론탭 스케줄에 그래픽 매크로도 추가할 수 있을듯

 

 

대충 이런 느낌이 나왔음

리눅스 서버 상 유틸리티 설치 스크립트

#!/usr/bin/env bash
# 리눅스 서버에 최소 GUI + VNC + Chromium 환경을 구성하는 스크립트
# i3-6100U 내장그래픽(HD 520)으로 브라우저 렌더링/디코딩/JS를 여기서 처리하고
# 윈도우에서는 VNC 클라이언트로 화면만 받아보는 구조.

set -e

########################################
# 0. 루트 권한 체크
########################################
if [ "$EUID" -ne 0 ]; then
  echo "이 스크립트는 root 권한으로 실행해야 합니다. (sudo 사용)"
  exit 1
fi

########################################
# 1. 패키지 리스트 업데이트
########################################
apt update

########################################
# 2. 최소 GUI + VNC + 크로미움 설치
#    - xorg        : X 서버 (GPU 가속, 디스플레이 서버)
#    - openbox     : 매우 가벼운 윈도우 매니저 (전체 데스크탑 대신)
#    - lightdm     : 로그인/세션 관리 (X 서버 자동 실행용)
#    - x11vnc      : 실행 중인 X 세션을 VNC로 내보내기
#    - chromium-browser 또는 chromium : 크로미움 브라우저
#    - mesa-utils, vainfo, intel-gpu-tools : GPU 동작 확인용
########################################
apt install -y \
  xorg \
  openbox \
  lightdm \
  x11vnc \
  mesa-utils \
  vainfo \
  intel-gpu-tools || true

# 배포판에 따라 chromium 패키지 이름이 다를 수 있음
# 우분투 최신: chromium-browser (snap)
# 데비안/일부: chromium
if apt-cache show chromium-browser >/dev/null 2>&1; then
  apt install -y chromium-browser
elif apt-cache show chromium >/dev/null 2>&1; then
  apt install -y chromium
else
  echo "chromium / chromium-browser 패키지를 찾을 수 없습니다. 나중에 수동 설치 필요."
fi

########################################
# 3. 기본 세션을 openbox로 설정
#    - 전체 데스크탑(XFCE, GNOME 등) 대신 openbox만 올려서 리소스 절약
########################################

# openbox autostart 디렉토리 생성
mkdir -p /etc/xdg/openbox
mkdir -p /etc/xdg/openbox/autostart.d

# 가장 단순한 openbox autostart 파일 생성
cat >/etc/xdg/openbox/autostart <<'EOF'
# openbox 세션 시작 시 자동 실행할 항목들
# 여기서 패널/배경/입맛에 맞는 프로그램을 추가할 수 있음.

# 예: 크로미움을 자동 실행하고 싶다면 아래 주석 해제
# chromium-browser --password-store=basic --no-default-browser-check &

EOF

########################################
# 4. lightdm이 기본으로 openbox 세션을 사용하도록 설정
#    - /usr/share/xsessions/openbox.desktop가 기본 존재함
#    - 아래 설정은 “로그인 시 openbox로 자동 로그인” 효과를 줄 수 있음
########################################

# 기본 좌석용 LightDM 설정 (간단한 자동 openbox 세션)
LIGHTDM_CONF=/etc/lightdm/lightdm.conf

if [ ! -f "$LIGHTDM_CONF" ]; then
  cat >"$LIGHTDM_CONF" <<'EOF'
[Seat:*]
user-session=openbox
EOF
else
  # 기존 파일에 user-session=openbox 추가 (단순 append)
  if ! grep -q "user-session=openbox" "$LIGHTDM_CONF"; then
    echo "" >> "$LIGHTDM_CONF"
    echo "[Seat:*]" >> "$LIGHTDM_CONF"
    echo "user-session=openbox" >> "$LIGHTDM_CONF"
  fi
fi

########################################
# 5. x11vnc용 비밀번호 설정
#    - /etc/x11vnc.pass에 암호를 저장
#    - 'changeme' 부분을 원하는 VNC 접속 비밀번호로 바꾸면 됨
########################################

VNC_PASS_FILE=/etc/x11vnc.pass

# 비밀번호를 하드코딩하기 싫으면, read -s로 입력 받아도 됨.
VNC_PASSWORD="changeme"  # <-- 나중에 직접 바꾸기

echo "x11vnc VNC 비밀번호를 설정합니다. (임시: $VNC_PASSWORD)"
x11vnc -storepasswd "$VNC_PASSWORD" "$VNC_PASS_FILE"
chmod 600 "$VNC_PASS_FILE"

########################################
# 6. x11vnc systemd 서비스 생성
#    - 디스플레이 :0 (lightdm가 띄운 X) 를 VNC로 공유
#    - 포트 5900 사용
########################################

cat >/etc/systemd/system/x11vnc.service <<'EOF'
[Unit]
Description=Start x11vnc at startup.
After=display-manager.service
Requires=display-manager.service

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc \
  -auth guess \
  -forever \
  -loop \
  -noxdamage \
  -repeat \
  -rfbauth /etc/x11vnc.pass \
  -rfbport 5900 \
  -shared

[Install]
WantedBy=multi-user.target
EOF

########################################
# 7. 서비스 enable + 시작
########################################
systemctl daemon-reload
systemctl enable lightdm
systemctl enable x11vnc

systemctl restart lightdm
systemctl restart x11vnc

########################################
# 8. 안내 메시지
########################################
IP_ADDR=$(hostname -I 2>/dev/null | awk '{print $1}')

echo "==============================================="
echo "구성이 완료되었습니다."
echo
echo "1) 서버가 부팅되면:"
echo "   - lightdm + Xorg + openbox가 자동으로 올라갑니다."
echo "   - x11vnc가 디스플레이 :0 을 TCP 포트 5900으로 내보냅니다."
echo
echo "2) 윈도우에서:"
echo "   - VNC 클라이언트(예: TightVNC, UltraVNC, RealVNC 등)를 실행하고"
echo "   - 호스트: ${IP_ADDR}:5900"
echo "   - 비밀번호: (아까 설정한 VNC 비밀번호, 기본 changeme)"
echo "   로 접속하면, 서버에서 돌아가는 openbox 데스크탑 화면이 보입니다."
echo
echo "3) VNC 화면 안에서 터미널을 열고 chromium을 실행하면,"
echo "   - JS, 렌더링, WebGL, 비디오 디코딩은 서버(i3-6100U + HD520)가 처리하고"
echo "   - 윈도우 PC는 화면 스트림만 받아보는 구조가 됩니다."
echo
echo "※ 보안상:"
echo "   - 반드시 방화벽/라우터에서 5900 포트를 내부망에서만 열어두고,"
echo "   - VNC 비밀번호(changeme)는 꼭 변경하세요."
echo "==============================================="

 

윈도우 VNC 클라이언트

RealVNC 뷰어를 사용했다.

 

삭제용 스크립트

#!/usr/bin/env bash
# 리눅스 서버에서 GUI + openbox + lightdm + x11vnc + chromium 환경을
# 모두 깨끗하게 제거하는 스크립트

set -e

########################################
# 0. 루트 권한 체크
########################################
if [ "$EUID" -ne 0 ]; then
  echo "이 스크립트는 root 권한으로 실행해야 합니다. (sudo 사용)"
  exit 1
fi


########################################
# 1. 실행 중인 서비스 종료 + 비활성화
########################################
echo "[1/6] 서비스 중지 및 비활성화"

systemctl stop x11vnc.service 2>/dev/null || true
systemctl stop lightdm.service 2>/dev/null || true

systemctl disable x11vnc.service 2>/dev/null || true
systemctl disable lightdm.service 2>/dev/null || true


########################################
# 2. systemd 서비스 파일 제거
########################################
echo "[2/6] 서비스 파일 제거"

rm -f /etc/systemd/system/x11vnc.service
systemctl daemon-reload


########################################
# 3. 설치한 패키지 제거
########################################
echo "[3/6] 패키지 제거"

apt remove -y \
  x11vnc \
  lightdm \
  openbox \
  xorg \
  mesa-utils \
  vainfo \
  intel-gpu-tools \
  chromium-browser \
  chromium 2>/dev/null || true

# 필요 없다면 autoremove로 의존성도 함께 제거
apt autoremove -y


########################################
# 4. 생성된 설정 파일 제거
########################################
echo "[4/6] 설정 파일 제거"

# VNC 패스워드 파일
rm -f /etc/x11vnc.pass

# lightdm 설정
rm -f /etc/lightdm/lightdm.conf

# openbox autostart 설정
rm -f /etc/xdg/openbox/autostart

# openbox 자동 실행 스크립트 디렉토리
rm -rf /etc/xdg/openbox/autostart.d


########################################
# 5. 캐시/잔여 파일 삭제
########################################
echo "[5/6] 캐시 및 잔여 구성 정리"

apt clean
rm -rf /var/cache/* 2>/dev/null || true


########################################
# 6. 완료 메시지
########################################
echo "==============================================="
echo "모든 GUI + openbox + VNC + Chromium 구성 요소를 제거했습니다."
echo
echo "이제 서버는 pure CLI 상태로 돌아갔습니다."
echo "불필요한 디스플레이 서버(lightdm), Xorg, VNC 모두 제거되었습니다."
echo "==============================================="