대충 원리는..
Proxy와 Remote Client를 이용해 접속할 컴퓨터로 rdp 접속. 이 접속 내용을 guacamole protocol로 tomcat 서버에 뿌리고, web에서 접근 가능한 방식. 나의 경우는 nginx로 proxy도 사용했으니까
web 접속 - nginx proxy - guacamole tomcat 접근 - guacamole이 rdp 접속
이렇게 되는 것 같다. 복잡하기도 해라.
구성은 docker로 할지, 아니면 쌩으로 설치할지, 또 VM은 code-server가 있는 곳에서 할지, 다른 곳에서 할지 고민을 조금 했다. 그런데 GCP 특성상 가격이 [싼 것 2개 < 싼 것 스펙 2배짜리 VM 1개]처럼 되기 때문에 그냥 E2-medium 2개를 쓰기로 했고, 그러면 굳이 여러 프로그램을 올릴 필요가 없기 때문에 docker의 사용 여부에 대해서도 고민을 하게 되었다.
결론만 말하자면 vm에 검색 전용으로만 ubuntu desktop gui를 올려서 guacamole로 접속하고자 한다. (개발은 code-server가 올라가 있는 곳에서만.)
1. Guacamole 설치
Script로 설치
guacamole을 사용하기 위해선 mysql도 설치해야 하고, 이것저것 설정 건들 게 많다. 다른 사람들이 docker를 쓰는 것만 봐도 3개 정도의 container를 사용한다.
복잡한 과정 대신, 아래 링크의 shell을 이용할 것이다.
https://github.com/MysticRyuujin/guac-install
wget https://git.io/fxZq5 -O guac-install.sh
chmod +x guac-install.sh
sudo ./guac-install.sh
2단계 인증 없애기
cd /etc/guacamole/extensions/
# ls를 입력해서
# guacamole-auth-totp-x.x.0.jar를 찾고, 삭제할 것.
sudo rm -f guacamole-auth-totp-x.x.0.jar
# guacamole 재시작
sudo service guacd restart
# ubuntu reboot
sudo reboot
3. Reverse Proxy 설정
외부 domain에서 guacamole로 접속할 수 있게 해 보자.
Nginx 설치 및 config 설정
아래 명령어로 nginx를 설치하고, nginx 설정으로 들어가서 수정할 것을 수정하자.
sudo apt-get install nginx
sudo vim /etc/nginx/sites-available/default
nginx config에서는 location 부분을 다음와 같이 수정하면 된다. 만약 domain이 있다면 listen 부분을 삭제하고 server_name부분에 domain을 작성하면 되고, 없다면 내버려 두면 된다.
server{
# domain이 없다면 원래 있던 것을 내버려 둠
listen...
#domain이 있다면 다 지우고 다음과 같이 설정
server_name YOUR_DOMAIN;
# location 설정으로 proxy 설정
location / {
proxy_pass http://localhost:8080;
#proxy_pass http://naver.com;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
nginx를 재시작한다.
sudo service nginx restart
4. Ubuntu에 desktop GUI 설치 및 설정
xrdp 설치
guacamole에서 rdp를 사용해서 접속하기 때문에 rdp가 필요하다. ubuntu용 rdp인 xrdp를 설치한다.
sudo apt-get update
sudo apt-get install -y xrdp
sudo service xrdp restart
desktop GUI 설치
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ubuntu-desktop
계정의 ID, password 설정
# 현재 계정 찾고
id
# 해당 계정의 비밀번호 설정
sudo passwd CURRENT_ID
5. Guacamole 접속 및 설정
Guacamole 접속
domain은 IP/guacamole로 접속하면 된다. 내 IP가 1.2.3.4면 1.2.3.4/guacamole로 접속하면 된다는 말.
기본 ID/PW는 guacadmin, guacadmin이다.
접속하고, 사용자를 추가하자. 유의할 점, 사용자 추가 시 모든 권한 할당해 주어야 한다.
Guacamole Connection 설정
거의 다 왔다. 이제 guacamole이 어떻게 rdp를 할 건지 설정하면 된다.
Edit Connection에서는 RDP를 택한다.
Network의 Hostname에는 접속할 IP(GCP VM의 external IP), port는 3389, username은 앞에서 설정한 id, pw로 하면 된다.
추가적으로 display : resize method = reconnect로 하면 된다.
접속 된다!
6. SSL 설정
진짜 끝이다. code-server에서 설정했던 것 처럼 certbot을 이용해 ssl 설정을 할 것이다. 아래 명령어를 입력하면 되고, 잘 읽고 하라는 대로 하면 된다.
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --nginx
7. Ubuntu 설정
크롬 설치
아래 명령어를 입력해서 설치한다.
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install ./google-chrome-stable_current_amd64.deb
한글 입력 설정
sudo apt install fcitx-hangul
바탕화면 바로가기 설정
sudo apt install gnome-tweak-tool
gnome-tweaks
먼저 위 명령어로 gnome-tweaks를 설치한다. 이후 gnome-tweaks 실행, extensions - Desktiop icons를 활성화.
이후 /usr/share/applications를 들어가면 .desktop 파일들이 많다. 여기 있는 파일들을 바탕화면으로 복사한다.
바탕화면으로 복사한 .desktop 파일 우클릭 - properties - permissions - execute Allow executing file as program 체크. 이후 .desktop 파일 우클릭 - always launching 클릭.
'DevOps > Environment Set Up' 카테고리의 다른 글
[GCP Tutorial] Windows RDP through WEB using guacamole + code-server (feat. GCP) (0) | 2022.09.27 |
---|---|
[Node.js Tutorial] Install NVM & typescript-express-starter on Ubuntu (0) | 2022.09.20 |
[Java Tutorial] Ubuntu Java 개발환경 세팅 (0) | 2022.08.17 |
[GCP Tutorial] Window Gaming Server + Graphics Card using RDP (feat. GCP) (0) | 2022.07.22 |
[GCP Tutorial] GCP + Code Server (0) | 2022.06.20 |