약 9년 전부터 우분투 서버에 어떻게 하면 가벼운 X윈도우 환경을 만들어
sudo apt install -y \
xfce4 xfce4-goodies \
tightvncserver novnc websockify \
python3-numpy \
build-essential \
net-tools \
curl git \
software-properties-common
약 288MB 정도의 패키지가 설치되는 군요. 그래도 서버 버전에 이정도 추가해서 가벼운 윈도우 환경을 구축하다니
나름 만족스럽습니다.
그 다음 vnc 가 실행되면서 xfce4 매니저가 뜨게 하기 위하여,
#!/usr/bin/env bash
xrdb $HOME/.Xresources
startxfce4 &
개발 머신 또는 운영 머신으로 이용할 것인가를 많이 연구를 해 왔었습니다.
그런데 이것이 결국 VM에도 동일하게 적용됨을 알았고,
UI가 있는 컨테이너도 동일하게 적용되더군요.
오늘은 우분투 서버에다 간단하게 기본적인 vncserver 와 noVNC를 설치하여
외부에서 웹브라우저로 해당 서버에 X윈도우 환경으로 접속할 수 있는
방법을 기술해 봅니다.
vncserver 는 tightvnc를 이용하고,
X윈도우 매니터는 xfce4를 이용해 보겠습니다.
우선 간단한 기본 우분투 서버에 다음과 같은 패키지를 설치해 봅니다.
우분투 데스크탑 NoVNC를 위한 설치를 다시 해보니,
다음과 같이 설치하는 것이 제일 적은
자원을 사용했습니다.
sudo apt install \
tigervnc-standalone-server tigervnc-xorg-extension \
novnc websockify
다시 적은 자원을 차지하게끔 설치하니 88MB 정도만 설치 하더군요.
설치를 진행하다 디폴트 디스플레이 매니저는 gdm3 기본으로 하였습니다.
다음은 최초로 vncserver (tightvnc server)를 실행시켜 접속 암호를 만들어 줍니다.
View Only 암호를 별도 생성할 수도 있습니다.
홈 디렉터리에서 vncserver 명령을 내리면 됩니다.
혹시 암호를 까먹었다면 ~/.vnc/passwd 를 지우고 다시 실행시키면 새롭게 생성할 수 있습니다.
vncserver -kill :1
하면 해당 서버가 죽습니다.
시작도 그렇고 :1 이라고 표현되는 것은 DISPLAY=:1 과 같은 의미이구요,
VNC 입장에서는 5900 + :1 인 5901 로 서비스가 된다고 생각하시면 됩니다.
최초 암호 생성 후에는 위와 같이 kill 해 주시기 바랍니다.
~/.vnc/xstartup 파일에
우분투 테스크탑의 경우, 해당 그놈 데스크탑을 그대로 이용하면 되므로,
#!/bin/sh
# Start Gnome 3 Desktop
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &
dbus-launch --exit-with-session gnome-session &
의 내용을 넣고,
chmod +x ~/.vnc/xstartup
실행 권한을 줍니다.
다시 vncserver 를 띄웁니다.
역시 :1 로 실행됩니다.
만약 tightvnc 대신 tigervnc-standalone-server 패키지를 설치했다면,
위의 vncserver를 돌릴 때 기본적으로 localhost 접근만 가능하게 됩니다.
이 경우, 다른 서버에서도 접속할 수 있게 하려면,
vncserver -localhost no
라고 실행하면 됩니다.
자, 이제는 vnc를 돌리는 준비를 해 봅니다.
결론적으로 https 로 돌리기 위하여 self-signed 인증서를 /usr/share/novnc 폴더에 self.pem 이름으로 다음과 같이 만들어 줍니다.
cd /usr/share/novnc; sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout self.pem -out self.pem -days 365
질문에는 대충 넣어도 됩니다.
Self-signing이 싫으시면 Let's Encrypt 인증서를 적용하셔도 됩니다.
마지막으로,
cd /usr/share/novnc; ./utils/launch.sh --vnc localhost:5901 --ssl-only
명령으로 novnc를 띄워,
외부에서
https://서버주소:6080/vnc.html
로 접속하면 경고창이 나오는데 무시하고 계속하면 됩니다.
재미있는 사실은 --vnc 에서 내부망에 있는 다른 호스트도 지정할 수 있다는 사실입니다.
이런 경우에는 기존에 돌고 있는 기본 6080 포트 대신 다른 포트를 지정해서 돌아야 하는데,
cd /usr/share/novnc; ./utils/launch.sh --vnc 192.168.35.103:5900 --listen 6081
와 같이 실행합니다. 대신 외부에서도
https://서버주소:6081/vnc.html
으로 외부 브라우져에서 접속하면 됩니다.
위와 같은 noVNC 창이 나오고, 여기에서 가운데 Connect 를 누르면,
암호를 묻는데 이것은, vncserver 최초 실행하여 지정한 암호를 넣으면 됩니다.
그러면 위와 같이 어느 브라우저에서건 해당 서버의 X윈도우 환경으로 들어가는 것을 확인 하실 수 있습니다.
해상도는 자동으로 변경되지 않는데, 이것은
/etc/alternatives/vncserver 에서
$geometry를 수정하고 vncserver 를 재기동하면 됩니다.
xfce 에 대한 자세한 설정은 다음블로그를 참고하시면 됩니다.
어느 분께는 도움이 되셨기를..