[linux dev env] [우분투 서버] noVNC 접속

[우분투 서버] noVNC 접속

 

약 9년 전부터 우분투 서버에 어떻게 하면 가벼운 X윈도우 환경을 만들어
개발 머신 또는 운영 머신으로 이용할 것인가를 많이 연구를 해 왔었습니다.
 
그런데 이것이 결국 VM에도 동일하게 적용됨을 알았고,
UI가 있는 컨테이너도 동일하게 적용되더군요.
 
 
오늘은 우분투 서버에다 간단하게 기본적인 vncserver 와 noVNC를 설치하여
외부에서 웹브라우저로 해당 서버에 X윈도우 환경으로 접속할 수 있는
방법을 기술해 봅니다.
 
vncserver 는 tightvnc를 이용하고,
X윈도우 매니터는 xfce4를 이용해 보겠습니다.
 
a0105618_60c8b1dd7518a.png

 

우선 간단한 기본 우분투 서버에 다음과 같은 패키지를 설치해 봅니다.
 
sudo apt install -y \
        xfce4 xfce4-goodies \
        tightvncserver novnc websockify \
        python3-numpy \
        build-essential \
        net-tools \
        curl git \
        software-properties-common
 
우분투 데스크탑 NoVNC를 위한 설치를 다시 해보니,
다음과 같이 설치하는 것이 제일 적은
자원을 사용했습니다.
 
sudo apt install \
tigervnc-standalone-server tigervnc-xorg-extension \
        novnc websockify 
 
 
 
a0105618_60c8b23ab7e3e.png

 

약 288MB 정도의 패키지가 설치되는 군요. 그래도 서버 버전에 이정도 추가해서 가벼운 윈도우 환경을 구축하다니
나름 만족스럽습니다.
 
다시 적은 자원을 차지하게끔 설치하니 88MB 정도만 설치 하더군요.
 
 
a0105618_60c8b278a4a88.png

 

설치를 진행하다 디폴트 디스플레이 매니저는 gdm3 기본으로 하였습니다.
 
다음은 최초로 vncserver (tightvnc server)를 실행시켜 접속 암호를 만들어 줍니다.
View Only 암호를 별도 생성할 수도 있습니다.
 
a0105618_60c8b2e5c4e0b.png

 

홈 디렉터리에서 vncserver 명령을 내리면 됩니다.
혹시 암호를 까먹었다면 ~/.vnc/passwd 를 지우고 다시 실행시키면 새롭게 생성할 수 있습니다.
 
a0105618_60c8b524e0ffa.png

 

vncserver -kill :1
하면 해당 서버가 죽습니다.
 
시작도 그렇고 :1 이라고 표현되는 것은 DISPLAY=:1 과 같은 의미이구요,
VNC 입장에서는 5900 + :1 인 5901 로 서비스가 된다고 생각하시면 됩니다.
 
최초 암호 생성 후에는 위와 같이 kill 해 주시기 바랍니다.
 
그 다음 vnc 가 실행되면서 xfce4 매니저가 뜨게 하기 위하여,
 
a0105618_60c8b617b4c73.png

 

 
~/.vnc/xstartup 파일에
 
#!/usr/bin/env bash
xrdb $HOME/.Xresources
startxfce4 &
 
우분투 테스크탑의 경우, 해당 그놈 데스크탑을 그대로 이용하면 되므로,
#!/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
실행 권한을 줍니다.
 
a0105618_60c8b6e72816c.png

 

다시 vncserver 를 띄웁니다.
역시 :1 로 실행됩니다.
 
만약 tightvnc 대신 tigervnc-standalone-server 패키지를 설치했다면,
위의 vncserver를 돌릴 때 기본적으로 localhost 접근만 가능하게 됩니다.
이 경우, 다른 서버에서도 접속할 수 있게 하려면,
 
vncserver -localhost no
 
라고 실행하면 됩니다.
 
자, 이제는 vnc를 돌리는 준비를 해 봅니다.
결론적으로 https 로 돌리기 위하여 self-signed 인증서를 /usr/share/novnc 폴더에 self.pem 이름으로 다음과 같이 만들어 줍니다.
 
a0105618_60c8b745bf464.png

 

 
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 인증서를 적용하셔도 됩니다.
 
마지막으로,
 
a0105618_60c8b8b15e5a6.png

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 
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
 
으로 외부 브라우져에서 접속하면 됩니다.
 
 
a0105618_60c8b99bce096.png

 

위와 같은 noVNC 창이 나오고, 여기에서 가운데 Connect 를 누르면,
 
a0105618_60c8b9b446d68.png

 

암호를 묻는데 이것은, vncserver 최초 실행하여 지정한 암호를 넣으면 됩니다.
 
a0105618_60c8b94b77d19.png

 

그러면 위와 같이 어느 브라우저에서건 해당 서버의 X윈도우 환경으로 들어가는 것을 확인 하실 수 있습니다.
 
해상도는 자동으로 변경되지 않는데, 이것은 
a0105618_60c8ba13e4e93.png

 

/etc/alternatives/vncserver 에서 
$geometry를 수정하고 vncserver 를 재기동하면 됩니다.
 
xfce 에 대한 자세한 설정은 다음블로그를 참고하시면 됩니다.
 
 
어느 분께는 도움이 되셨기를..
 

[출처] http://egloos.zum.com/mcchae/v/11389162

 

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
37 [C/C++ 일반] XOR 연산을 이용한 암호화, 복호화 졸리운_곰 2024.03.11 409
36 [C/C++] Window 비주얼 스튜디오 포코(POCO) 라이브러리 적용 졸리운_곰 2023.12.05 263
35 [C/C++] C++ 프로그래밍에 요긴한 라이브러리 7종 file 졸리운_곰 2023.12.04 340
34 [리눅스 일반] ffmpeg에서 m4a 파일을 mp3 파일로 변환할때 생기는 오류에 관하여 file 졸리운_곰 2022.11.11 275
33 [C/C++ 언어일반] C/C++ 스마트 포인터 관련 file 졸리운_곰 2022.11.06 258
32 [C++] 템플릿(template) 사용법 & 예제 총정리 file 졸리운_곰 2022.10.31 342
31 [C/C++] A list of open source C++ libraries 졸리운_곰 2022.10.03 373
30 [C/C++ 타 언어간 인터페이스] SWIG 요약 정리 졸리운_곰 2022.07.29 334
29 [C/C++ 에서 다른 언어간 연계/호출] Making C++ Talk to Other Languages with SWIG file 졸리운_곰 2022.07.18 370
28 [C/C++] C++ Basic Input/Output 졸리운_곰 2021.11.06 386
27 [C/C++] Console Input/Output Functions in C file 졸리운_곰 2021.11.05 375
26 [C/C++ 프로그래밍] CMake 예제 졸리운_곰 2021.11.04 226
25 C/C++의 만년, 패키지 매니저 file 졸리운_곰 2021.11.04 277
24 [Linux] [C/C++] CMake를 이용한 패키지 빌드 file 졸리운_곰 2020.11.08 297
23 자바(Java) instanceof 사용방법 졸리운_곰 2020.10.29 328
22 Fun with YouTube Data API v3 (Public Data) and Kigs Framework file 졸리운_곰 2020.07.19 314
21 Kigs Framework Introduction (8/8) - Data Driven Application file 졸리운_곰 2020.07.18 302
20 Kigs Framework Introduction (7/8) - Lua Binding 졸리운_곰 2020.03.23 337
19 Kigs Framework Introduction (6/8) - Signal, Slot, Notification file 졸리운_곰 2020.02.28 321
18 Kigs Framework Introduction (5/8) - CoreItem file 졸리운_곰 2020.02.28 322
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED