본문 바로가기
💻 개발/졸업과제

docker에서 ubuntu에 noVNC 설치하기 (AWS EC2)

by 컴쏘 2023. 7. 2.

이번엔 local이 아닌 AWS EC2에서 시도해보자

 

1. 해당 EC2 실행

 

    전에 설정했던 EC2와 다른 점 (이건 사실상 관련이 없음)

그냥 해본 것...(필요 없을 것 같다.)

2. PuTTY로 local에서 접속하기 (탄력적 IP가 아니기 때문에 ip는 다시 시작하면 바뀌게 된다.)

 

3. ubuntu에 docker 설치하기

 

    1) root 권한으로 변경

sudo su

    Ubuntu 에 Docker 설치 (참고 블로그)

 

    2) 우분투 시스템 패키지 업데이트 

apt-get update

    3) 필요한 패키지 설치 

apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

    4) Docker의 공식 GPG키 추가 

curl -fsSL <https://download.docker.com/linux/ubuntu/gpg> | sudo apt-key add -

    5) Docker의 공식 apt 저장소 추가 

add-apt-repository "deb [arch=amd64] <https://download.docker.com/linux/ubuntu> $(lsb_release -cs) stable"

    6) 시스템 패키지 업데이트

apt-get update 

    7) Docker 설치

apt-get install docker-ce docker-ce-cli containerd.io

    8) docker 설치 확인

        docker 실행 상태 확인

sudo systemctl status docker

4. docker에서 ubuntu 다운받기

docker pull ubuntu

5. docker 이미지를 Container 파일로 생성 및 실행 (이때 port 번호도 부여하기)

docker run -it -p 5080:5080 --name mynovnc ubuntu

6. docker 우분투 업데이트 

apt-get update

7. noVNC 설치 및 관련 설정들 (꽤 오래걸림)

apt install xfce4-goodies tightvncserver novnc websockify python3-numpy build-essential net-tools curl git software-properties-common -y

8. vncserver 실행

vncserver

명령을 실행하여 VNC 액세스 암호를 설정하고 초기 구성 파일을 만들고 VNC 서버 인스턴스를 시작하는 단계이다.

암호는 6~8자 사이여야 합니다. 8자 이상의 암호는 자동으로 잘린다.

 

오류 발생 (거의 처음 실행할 때는 오류가 항상 난다.)

추측 : 환경 변수를 설정하지 않았기 때문에 발생

 

해결과정

1) 현재 사용자의 이름을 환경 변수에 추가하기

echo "export USER=$USER" >> ~/.bashrc

2) source 명령어 실행

source 명령어는 설정 파일을 로드할 때 리부팅 없이 즉시 적용하기 위해 사용하는 명령어

source ~/.bashrc

다시 시도

잘 실행 된다.

 

암호 설정해주기

+) bashrc 란?

쉘의 개념, bashrc의 개념

 

+) source 명령어

source 명령어와 bash에 대해 알아보자

 

9. 포트 5901에서 실행 중인 VNC 서버 인스턴스 중지

vncserver -kill :1

VNC 서버 구성 방식을 변경할 예정

10. xstartup 파일을 수정하기 전에 원본을 백업

mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

11. 새 xstartup 파일을 만들고 nano와 같은 텍스트 편집기에서 열기

nano ~/.vnc/xstartup

nano가 없다고 하면 nano를 설치해주기

apt-get install nano

다시 시도하면 이렇게 창이 새로 열린다.

12. 다음 파일에 내용 추가

#!/bin/sh

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
x-window-manager &

exec /usr/bin/startxfce4 &

# 아래 내용 추가 하였음 

#!/bin/sh
autocutsel -fork
xrdb $HOME/.Xresources
xsetroot -solid grey
export XKL_XMODMAP_DISABLE=1
export XDG_CURRENT_DESKTOP="GNOME-Flashback:Unity"
export XDG_MENU_PREFIX="gnome-flashback-"
unset DBUS_SESSION_BUS_ADDRESS
gnome-session --session=gnome-flashback-metacity --disable-acceleration-check --debug &

13. 파일을 실행 가능하게 만들기

chmod +x ~/.vnc/xstartup

VNC 서버가 새로운 시작 파일을 제대로 사용할 수 있도록 하는 것

14. 다시 vncserver 실행

구성이 완료되면 로컬 컴퓨터에서 VNC 서버에 연결할 준비가 된 것이다.

 

15. 그다음 (무슨 설정인지는 모르겠음)

cd /etc/ssl ; openssl req -x509 -nodes -newkey rsa:2048 -keyout novnc.pem -out novnc.pem -days 365

뭔지 몰라서 그냥 적었음..

16. ?? 설정

chmod 644 novnc.pem

17. 연결하기 

websockify -D --web=/usr/share/novnc/ --cert=/etc/ssl/novnc.pem 5080 localhost:5901

18. 추가 확인 (websockify라는 프로세스 정보를 찾는 명령어)

ps -ef | grep websockify 
  • ps -ef : 프로세스 확인
  • grep [WORD] : WORD를 찾아라 (여기서는 websockify)

ps -ef | grep websockify : ps -ef 명령어로 나온 출력물을 가지고 websockify 를 찾는다. (이때 |(파이프)가 두 명령어 사이를 연결)

19. 접속

포트 열려있는지 확인

netstat -lnp

https://[novnc가 설치된 서버의 ip 주소]:5080/vnc.html

https://[해당 EC2의 퍼블릭 IPv4 주소]:5080/vnc.html

그래도 접속이 안된다면…

 

해당 EC2의 보안 그룹 이름 알기 >>> [EC2]-[보안 그룹]-[인바운드 규칙 편집]

포트 번호 5080 추가해주기

 

해결 - 연결이 된다.

접속 가능

깨달은 점

필요한 ip는 각각의 이미지 서버의 ip가 아닌 이런 이미지들을 담고 있는 제일 밖의 서버 ip이다.


바로 전 글 'docker에서 ubuntu에 noVNC 설치하기' 에서의 참고 자료와 동일합니다.