본문 바로가기

환경구성

Synology NAS 에 Kasm-Desktop (VDI)구성하기

반응형

오랜만에 포스팅입니다:)

잠자고 있던 NAS에 docker streaming 서비스인 Kasm-ubuntu-desktop을 구성한 후기를 남기려 합니다.

쉽진 않았습니다 ㅎㅎ;;

 

우선, 기본이 되는 kasm docker 이미지는 아래에 링크에서 받았습니다.

https://hub.docker.com/r/kasmweb/ubuntu-bionic-desktop

 

Docker

 

hub.docker.com

현재까지도 업데이트되고 있는 이미지 입니다!

 

구성은 아래와 같은 순서로 진행했습니다.

1. Dockerfile, docker-compose 파일구성 (필요한 package, volume, password, port 설정)

2. NPM으로 도메인 및 SSL적용

3. 한글입력 설정

 


1. Dockerfile, docker-compose 파일구성

기본이 되는 kasmweb/ubuntu-bionic-desktop 을 가지고서 필요한 패키지를 apt로 설치후, build 합니다.

아래는 build에 사용한 Dockerfile 입니다.

FROM kasmweb/ubuntu-bionic-desktop:1.10.0-rolling
USER root

ENV HOME /home/kasm-default-profile
ENV STARTUPDIR /dockerstartup
ENV INST_SCRIPTS $STARTUPDIR/install
WORKDIR $HOME

######### Customize Container Here ###########
RUN  apt-get update \
    && apt-get install -y openjdk-8-jdk \
    && add-apt-repository ppa:maarten-fonville/android-studio \
    && apt -y update \
    && apt-get update \
    && apt-get install -y android-studio

RUN apt-get install -y sudo \
    && echo "root:password" | chpasswd \
    && echo 'kasm-user ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers \
    && rm -rf /var/lib/apt/list/*

RUN apt-get install -y uim
######### End Customizations ###########

RUN chown 1000:0 $HOME
RUN $STARTUPDIR/set_user_permission.sh $HOME

ENV HOME /home/kasm-user
WORKDIR $HOME
RUN mkdir -p $HOME && chown -R 1000:0 $HOME

USER 1000

저는 Android Studio가 필요해서 Android Studio 설치후, sudo 설정, 한글입력을 위한 uim 패키지를 apt로 설치했습니다.

 

그 다음, docker-compose 파일을 아래와 같이 작성했습니다.

version: "2.23.3"
services:
  ubuntu-desktop:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: ubuntu-desktop
    shm_size: '8gb'
    environment:
      - VNC_PW=password
      - TZ=Asia/Seoul
    ports:
      - 6901:6901
    volumes:
      - type: volume
        source: data
        target: /opt
      - type: volume
        source: home
        target: /home
    #restart: unless-stopped
volumes:
  data:
  home:

docker-compose파일 구성을 보면, 앞에서 작성한 Dockerfile을 불러와 build를 진행하는데,

공유메모리로 8gb를 할당하고,

유저접속을 위한 password를 설정하고, 접근포트설정과 volume을 구성한 것을 볼 수 있습니다.

이 때, volume은 apt 패키지가 설치된 /opt경로와 사용자 데이터를 보관하는 /home 디렉토리를 volume으로 구성하여 저장하고 있는 것을 확인하실 수 있습니다.

 

사실 sudo설정은 잘 안됐습니다,, ㅎㅎ;;

하지만, docker exec -it 명령어로 docker 내부로 진입해서 얼마든지 root권한을 획득할 수 있기 때문에 굳이 애쓰진 않았습니다.

kasm docker 이미지에 root 계정으로 로그인은 아래 명령어를 사용해 접근합니다.

$ docker exec -it --user root 76075b9d4513 bash

 

이렇게 docker설정파일 구성을 끝났습니다!

$ docker-compose build
$ docker-compose up -d

위 명령어로 build후, 실행하여 http://localhost:6901 에 접속해봅니다. 

 

위와 같이 계정정보를 묻는다면, container 실행은 성공한겁니다!

id: kasm_user

passwd: {docker-compose파일에 명시한 password}

를 입력후, 진행해봅니다.


2. NPM으로 도메인 및 SSL적용

1의 과정을 무사히 마쳤다면 이미 사용을 할 수 있지만, 도메인으로 접근하지 못하는 점과 https로 접근하지 못하는 점이 아쉽기 때문에 도메인과 SSL을 적용해봅니다.

SSL을 적용하지 않은 공인ip를 통해서 접근하면 아래와 같은 경고가 나옵니다.

우리는 SSL을 적용할것이기 때문에 위와 같은 경고가 나와선 안되겠습니다.

 

NPM으로 이동해 위와 같이 설정합니다.

Details 탭:

프로토콜은 https로 설정하고 block common exploits와 websockets support를 활성화니다.

 

SSL 탭:

인증서 생성후, Force SSL과 HTTP/2 Support를 활성화합니다.

 

Advanced 탭:

kasm-desktop은 NPM 추가설정을 해야만 안정적으로 https로 접근할 수 있습니다.

아래의 설정을 복사해 Custom Nginx Configuration 에 붙여넣습니다.

location / {
proxy_set_header Authorization $http_authorization;
proxy_pass_header Authorization;
proxy_pass https://192.168.0.3:6901;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}

완료후, 저장합니다.


3. 한글입력 설정

설치한 uim 패키지로 한글설정을 마친후, docker를 재실행합니다.

구성한 kasm-desktop으로 로그인 후, 아래의 명령어를 입력해 uim 패키지를 실행합니다.

$ uim-pref-gtk

Specify default IM를 체크 후,

Default input method를 "Byeoru"로 지정합니다.

 

Global key bindings 1으로 이동해 기존에 있던 전환키 세팅을 지웁니다.

[Global] on/off 모두 지웁니다.

 

Byeory key bindings 1으로 이동해 

[Byeory] on/off를 "한/영" 키로 세팅합니다.

 

이제 Kasm-Desktop으로 어디서든 접속해 ubuntu를 이용할 수 있게 되었습니다:)

이상으로 포스팅을 마치겠습니다!

반응형