외부에서 집에 있는 Chromecast 연결을 위한 Chrome 원격 데스크톱 설정.

제목이 제대로 써 진 건가. 어째 나이가 먹어갈 수록 글 쓰는게 점점 더 어려워질까.

이 모든 삽질(살짝 꽃삽질의 범주를 넘어섰다)은, 기기 조작이 어려우신 어머니를 위해, 외부에서도 넷플릭스/유튜브를 틀어들이기 위해 시작됐다. (아.. 얼마나 효자인가.)

어머니께서 이런 일을 척척해주시면 좋겠지만, TV 의 외부입력 전환 정도가 한계인지라, 내가 집에 없을 때, 어떻게 이런 것들을 TV 로 보게 해드릴 수 있을까에 대해 생각해봤다.
처음엔 안드로이드 기기로 직접 접속을 해서 거기에서 조작을 하는 법을 생각했는데, 이게 그다지 쉽지가 않고, 집에 있는 기기를 조작해서 수신 상태로 만들어놔야 하는 번거로움이 있었다.
해당 방법을 사용하려면 TeamViewer, RemoDroid 등을 사용해야 하는데, 어느 하나 딱! 이거다! 하는게 없었다.

그 다음에 생각한게 서버를 이용하는 방법. 서버는 계속 돌고 있고, 꺼져있더라도 WOL 을 통해 필요하면 켤 수도 있다. 또, 때때로 GUI 를 사용하기 위해 DE 도 설치되어 있으므로, 이를 통해 구글 크롬을 실행한 뒤, 거기에서 원하는 조작을 해주면 될 듯 했다.

그래서 시행해본 첫번째 도전. 바로 VNC. 그러나 실패. 우여곡절 끝에 VNC 연결엔 성공을 했지만, 그렇게 연결된 VNC 에선 크롬 캐스트를 찾질 못했다. 왜 그런지 짐작도 가지 않는다. 뭔가 네트웍과 관련한 깊은(?) 속사정이 있는 듯.

그 다음에 눈에 들어온 방법은 RDP 였는데, 어쩐지 MS 기술이라 그리 확 땡기지 않았다. 그리고 찾은 대안이 Google 의 Remote Desktop 이니.. 99보 100보, 도긴개긴이랄까.

막연하게 검색을 해보면, 구글 원격 데스크톱을 쓰는 방법에 대해 이런 저런 방법들이 많이 나온다. 그런데, 그 대부분이 다소 예전 방법이고, 왜 그리 해야하는지에 대한 설명은 빠진게 많다. 게다가 지금은 굳이 하지 않아도 되는 작업도 있었다.

하여, 더 찾다보니 구글 클라우드에 올라있는 설명서가 눈에 들어왔고, 그 문서를 기본으로 사용법을 정리했다.


살짝 헷갈리는게, 어떤 작업은 서버에서 해야하고, 어떤 작업은 로컬에서 해야 한다. 구분을 잘해야 엉뚱한 실수를 하지 않게 된다.

가장 크고, 당연한 전제가 하나 있는데, ‘서버’로는 ssh 접속이 가능한 상황이어야만 한다.

서버 설정 #1

서버에 DE(Desktop Environment)가 전혀 설치되어 있지 않다면, DE 를 먼저 설치해줘야 한다.
DE 로는 Xfce4 를 선택했다.

sudo DEBIAN_FRONTEND=noninteractive apt install --assume-yes xfce4 desktop-base

DEBIAN_FRONTEND 에 대해서는 nixCraft 문서 참고. 간단하게 얘기하면, 아무 것도 묻지 말고 그냥 설치하라는 뜻이 된다. (확실하겐 모르겠다.)

크롬 원격 데스크톱에서 Xfce 를 사용하게끔 설정해준다.

sudo bash -c 'echo "exec /etc/X11/Xsession /usr/bin/xfce4-session" > /etc/chrome-remote-desktop-session'

구글 클라우드 문서에서 설치하라고 되어 있는 xscreensaver 는, 우분투 18.04 에선 이미 설치가 되어 있다.

또, lightdm 을 disable 하라고 하지만, 이것은 반대로 설치가 되어 있지 않기 때문에, disable 할 수도 없다.

마지막으로, 구글 크롬 브라우저를 설치한다.

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install google-chrome-stable_current_amd64.deb

이제 서버에서 GUI 를 돌릴 수 있는 환경이 완성됐다.

로컬(내 손에 있는 PC) 설정 #1

나중에 접속은 휴대기기(안드로이드/iOS)에서도 가능하지만, 설정은 PC 가 편하므로 PC의 크롬 브라우저에서 시행한다.

구글 크롬을 열고, 다음 주소로 이동한다.

https://remotedesktop.google.com/headless

여기서 ‘다른 컴퓨터 설정’ 이라는 항목이 보인다. ‘다른 컴퓨터’는, ‘서버’를 말한다.
‘시작’을 누른다.

이제, 먼저 서버에 ‘크롬 원격 데스크톱 기능’을 가능하게 해주는 프로그램을 설치해야 한다.
다음 프로그램을 받아야 하는데, 이건 현 컴퓨터(로컬)이 아닌 서버에서 받은 후 설치해야 한다.

서버 설정 #2

서버로 ssh 접속을 한 뒤, 파일을 받고 설치한다.

wget https://dl.google.com/linux/direct/chrome-remote-desktop_current_amd64.deb
sudo dpkg -i chrome-remote-desktop_current_amd64.deb
sudo apt install -f

설치가 끝났으면, 다시 로컬로.

로컬(내 손에 있는 PC) 설정 #2

‘승인’을 누르면, 구글 계정으로 로그인하는 창이 뜬다. 원하는 ID 로 로그인한다.
그 결과, 다음과 비슷한 화면이 나온다. (굳이 안보이게 처리를 할 필요가 있는지는..?)

아무튼, 다음과 유사한 명령어가 나오는데, 이걸 서버에서 실행해야 한다.

서버 설정 #3

위 명령을 복사하여 서버에서 실행한다.

$ DISPLAY= /opt/google/chrome-remote-desktop/start-host --code="4/xxxxxxxxxxxxxx" --redirect-url="https://remotedesktop.google.com/_/oauthredirect" --name=$(hostname)
Enter a PIN of at least six digits: 
Enter the same PIN again: 
~~~~ 어쩌고 저쩌고 ~~~~

위 코드는 몇 분간만 유효하므로, 가능한한 빨리 서버에서 실행해야지, 안 그러면 작업을 다시 해야 한다.
위 내용처럼, 저 명령을 넣으면 (나중에 접속할 때 필요한) PIN 을 묻는다. 적절히 입력하고 나면 모든 설정은 끝이 난다.


이제, 접속을 하려고 하는 컴퓨터(또는 휴대기기)에서, https://remotedesktop.google.com/ 으로 이동한다. 안드로이드/iOS 용으로는 전용 프로그램이 따로 있고, 구글 크롬 브라우저로는 확장프로그램(근데 그냥 PWA 다.)도 있다.

이제 접속하고자 하는 컴퓨터를 선택하고, PIN을 입력하라는 문구가 뜨면 아까 설정한 비밀번호를 넣어주면 된다.

서버 데스크탑 설정(원격 데스크톱 환경 개선)

이 부분은 원문을 따라하는게 더 좋겠다. (난 굳이 이 설정을 해놓을 필요가 없어서 하지 않았다.)

그리고 마지막 하나 더.

서버 설정 마지막.

그냥 이대로 놔둬도 별 무리는 없다.

나는, 이 서비스를 그리 자주 이용할 계획은 없다. 가끔만 사용할 생각인데, 그를 위해 원격이 언제나 가능하도록 해놓을 필요가 있나?? 하는 생각이 들었다. 해킹의 가능성은 크지 않다고 보지만, 그래도 여지는 남겨두지 않는 편이 좋지 않을까?

따라서, chrome-remote-desktop.service 를 자동으로 시작하지 않게끔 설정한다.

sudo systemctl disable chrome-remote-desktop.service
chrome-remote-desktop.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable chrome-remote-desktop

이러고 나서 재부팅하면, chrome-remote-desktop.service 는 자동 실행되지 않는다.

sudo systemctl status chrome-remote-desktop.service 
● chrome-remote-desktop.service - LSB: Chrome Remote Desktop service
   Loaded: loaded (/etc/init.d/chrome-remote-desktop; generated)
   Active: inactive (dead)
     Docs: man:systemd-sysv-generator(8)

당연히, 이 상태에서는 원격 접속이 불가능하다.

접속을 하고 싶다면, ssh 로 먼저 접근한 뒤, 서비스를 수동으로 실행시켜준다.

sudo systemctl start chrome-remote-desktop.service

끝!

이제 접속하여 크롬 브라우저를 열고, 넷플리스든, 유튜브등 열고, Chromecast 로 날려주는 일만 남았다.
아아~~ 구글에 종속된 내 인생이여..

안녕하세요. 글 남겨주셔서 고맙습니다.