Como configurar a Área de trabalho remota do Google Chrome para Linux no Compute Engine

Neste tutorial, mostramos como configurar o serviço de Área de trabalho remota do Google Chrome em uma instância de máquina virtual (VM, na sigla em inglês) do Debian Linux no Compute Engine. A Área de trabalho remota do Google Chrome permite que você acesse aplicativos remotamente com uma interface gráfica do usuário de um computador local ou dispositivo móvel. Para essa abordagem, você não precisa abrir portas de firewall e usa a Conta do Google para autenticação e autorização.

Para este tutorial, consideramos que você esteja familiarizado com a linha de comando do Linux e a instalação de pacotes Debian.

Para informações sobre outras opções para criar estações de trabalho virtuais, consulte Como criar uma estação de trabalho virtual.

Objetivos

  • Criar uma instância de VM headless (em inglês) do Compute Engine para executar a Área de trabalho remota do Google Chrome.
  • Instalar e configurar o serviço da Área de trabalho remota do Google Chrome na instância da VM.
  • Configurar um ambiente de área de trabalho do X Window System na instância de VM.
  • Conectar-se do computador local ao ambiente de área de trabalho na instância de VM.

Custos

Neste tutorial, há componentes faturáveis do Google Cloud, entre eles:

  • Compute Engine

Use a calculadora de preços para gerar uma estimativa de custo com base no uso previsto.

Antes de começar

  1. Faça login na sua conta do Google.

    Se você ainda não tiver uma, inscreva-se.

  2. No Console do Cloud, na página do seletor de projetos, selecione ou crie um projeto do Cloud.

    Acessar a página do seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud. Saiba como confirmar se a cobrança está ativada para o seu projeto.

Para este tutorial, você precisa usar o navegador Google Chrome no computador local. Caso ele ainda não tenha sido instalado, será possível fazê-lo na página inicial do Google Chrome.

Como criar uma instância do Compute Engine

Para a finalidade deste tutorial, o tipo de máquina padrão de uma vCPU (n1-standard-1) com o disco de inicialização do Debian Linux funciona bem, portanto, não é necessário alterar as configurações padrão.

  1. No Console do Cloud, acesse a página Instâncias de VM:

    Acessar a página Instâncias de VM

  2. Clique em Criar.

  3. Defina o nome da instância como crdhost.

  4. Se quiser, selecione uma região e uma zona próximas a você.

  5. Clique em Criar.

    A criação da instância leva alguns instantes.

  6. Após a criação da instância, conecte-se a ela clicando no botão SSH na lista:

    Criação de uma conexão SSH com a instância da VM.

Como instalar a Área de trabalho remota do Google Chrome na instância da VM

A próxima etapa é instalar a Área de trabalho remota do Google Chrome na instância da VM.

  1. Na janela SSH conectada à instância da VM, atualize os dados do gerenciador de pacotes e instale wget:

    sudo apt update
    sudo apt-get install --assume-yes wget
    
  2. Faça o download do pacote de instalação da área de trabalho remota do Google Chrome para Debian Linux:

    wget https://dl.google.com/linux/direct/chrome-remote-desktop_current_amd64.deb
    
  3. Instale o pacote e suas dependências:

    sudo dpkg --install chrome-remote-desktop_current_amd64.deb
    sudo apt install --assume-yes --fix-broken
    

Como instalar um ambiente de área de trabalho do X Windows System

Você precisa instalar um ambiente de área de trabalho do X Window System e um gerenciador de janelas para usar a Área de trabalho remota do Google Chrome. Veja a seguir as opções comuns:

  • Xfce. Este é um ambiente de área de trabalho leve e simples que funciona bem com conexões remotas em redes mais lentas.
  • Cinnamon (em inglês). Esse é um ambiente de área de trabalho tradicional mais completo que será mais familiar aos usuários de computadores desktop. No entanto, ele usa mais elementos gráficos e precisa de uma rede rápida para funcionar sem problemas.

É possível usar outros ambientes de área de trabalho, mas a Área de trabalho remota do Google Chrome não oferece suporte à aceleração de gráficos 3D. Se você escolher um ambiente de área de trabalho que use aceleração de gráficos 3D, será necessário desativar esse recurso ou o serviço de área de trabalho remota não será iniciado.

Xfce

  1. Na janela SSH conectada à instância da VM, instale o ambiente de área de trabalho Xfce e os componentes básicos da área de trabalho:

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

    O parâmetro DEBIAN_FRONTEND=noninteractive suprime um prompt para configurar um layout de um teclado que seria conectado diretamente à instância de VM.

  2. Configure a Área de trabalho remota do Google Chrome para usar o Xfce por padrão:

    sudo bash -c 'echo "exec /etc/X11/Xsession /usr/bin/xfce4-session" > /etc/chrome-remote-desktop-session'
    
  3. O mecanismo de bloqueio de tela padrão do Xfce é o Light Locker, que não funciona com a Área de trabalho remota do Google Chrome. Ele exibe uma tela em branco e não pode ser desbloqueado. Portanto, instale o XScreenSaver como alternativa:

    sudo apt install --assume-yes xscreensaver
    
  4. Como opção, instale o pacote completo de aplicativos de área de trabalho Linux, incluindo o navegador Firefox, o pacote de aplicativos de escritório do LibreOffice e o visualizador de PDF Evince:

    sudo apt install --assume-yes task-xfce-desktop
    

Cinnamon

  1. Na janela SSH conectada à instância de VM, instale o ambiente de área de trabalho Cinnamon e os componentes básicos da área de trabalho:

    sudo DEBIAN_FRONTEND=noninteractive \
        apt install --assume-yes cinnamon-core desktop-base
    

    O parâmetro DEBIAN_FRONTEND=noninteractive suprime um prompt para configurar um layout de um teclado que seria conectado diretamente à instância de VM.

  2. Configure a sessão da Área de trabalho remota do Google Chrome para usar o Cinnamon no modo 2D por padrão, que não usa aceleração de gráficos 3D:

    sudo bash -c 'echo "exec /etc/X11/Xsession /usr/bin/cinnamon-session-cinnamon2d" > /etc/chrome-remote-desktop-session'
    
  3. Como opção, instale o pacote completo de aplicativos de área de trabalho Linux, incluindo o navegador Firefox, o pacote de aplicativos de escritório LibreOffice e o leitor de PDF Evince:

    sudo apt install --assume-yes task-cinnamon-desktop
    

Independentemente do ambiente de área de trabalho instalado, siga estas etapas para concluir o processo de instalação:

  1. Desative o serviço do gerenciador de exibição na instância. Não há nenhuma tela conectada à instância, portanto, o serviço do gerenciador de exibição não será iniciado.

    sudo systemctl disable lightdm.service
    
  2. Como opção, instale o navegador Google Chrome na instância:

    wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    
    sudo dpkg --install google-chrome-stable_current_amd64.deb
    sudo apt install --assume-yes --fix-broken
    

Como configurar e iniciar o serviço de Área de trabalho remota do Google Chrome

Para iniciar o servidor de área de trabalho remota, você precisa ter uma chave de autorização para a Conta do Google. Você usará essa conta para se conectar ao servidor:

  1. Na janela SSH conectada à instância de VM, adicione sua conta de usuário ao grupo chrome-remote-desktop do Linux e saia.

    sudo usermod -a -G chrome-remote-desktop $USER
    logout
    
  2. No Console do Cloud, reconecte-se à instância clicando no botão SSH.

  3. No computador local, usando o navegador Chrome, acesse a página de configuração de linha de comando da Área de trabalho remota do Google Chrome:

    https://remotedesktop.google.com/headless

  4. Se você ainda não estiver conectado, faça login com uma Conta do Google. Essa é a conta que será usada para autorizar o acesso remoto.

  5. Na página Configurar outro computador, clique em Começar.

  6. Na página Fazer o download e instalar a Área de trabalho remota do Google Chrome, clique em Avançar.

  7. Clique em Autorizar.

    Você precisa permitir que a Área de trabalho remota do Google Chrome acesse sua conta. Se você aprovar, a página exibirá uma linha de comando para o Debian Linux parecida com esta:

    DISPLAY= /opt/google/chrome-remote-desktop/start-host \
        --code="4/xxxxxxxxxxxxxxxxxxxxxxxx" \
        --redirect-url="https://remotedesktop.google.com/_/oauthredirect" \
        --name=
    

    Use esse comando para configurar e iniciar o serviço da Área de trabalho remota do Google Chrome na instância da VM, vinculando-o à sua Conta do Google usando o código de autorização.

  8. Copie o comando para a janela SSH que está conectada à sua instância e, em seguida, execute o comando.

  9. Quando for solicitado um nome para o computador, digite o nome da instância (crdhost).

  10. Quando solicitado, digite um PIN de seis dígitos. Esse número será usado para autorização extra quando você se conectar mais tarde.

Como conectar-se à instância de VM

Para se conectar à instância de VM, use o aplicativo da Web Área de trabalho remota do Google Chrome.

  1. No computador local, acesse o site Área de trabalho remota do Google Chrome.

  2. Clique em Acesso remoto.

  3. Se você ainda não estiver conectado ao Google, faça login com a mesma Conta do Google usada para configurar o serviço Área de trabalho remota do Google Chrome.

    A nova instância de VM será exibida na lista Dispositivos remotos.Lista de dispositivos remotos disponíveis para conexão.

  4. Clique no nome da instância da área de trabalho remota.

  5. Quando solicitado, digite o PIN que você criou anteriormente e conecte-se clicando no botão de seta para baixo.

    Agora você está conectado ao ambiente de área de trabalho na instância remota do Compute Engine.

Se você tiver instalado a área de trabalho do Xfce, na primeira vez que se conectar, você será solicitado a configurar os painéis da área de trabalho. Clique em Usar configuração padrão para ver a barra de tarefas padrão na parte superior e o painel de inicialização rápida na parte inferior.

Área de trabalho do Xfce com a barra de tarefas e o painel de inicialização rápida.

Como melhorar a experiência da área de trabalho remota

Nesta seção, apresentamos instruções para alterar as configurações a fim de melhorar a experiência da área de trabalho remota.

Ativar sincronização da área de transferência

A sincronização da área de transferência permite que o conteúdo da área de transferência seja compartilhado entre as máquinas locais e remotas. Se esse recurso ainda não estiver ativado, faça o seguinte:

  1. Abra o painel Opções da sessão usando o botão na lateral da janela.
  2. Na seção Ativar sincronização da área de transferência, clique em Iniciar.
  3. Clique em Permitir.

Instalar o app Área de trabalho remota do Google Chrome

O app Área de trabalho remota do Google Chrome oferece uma experiência de janela separada e permite que mais atalhos do teclado sejam usados no sistema remoto. Se esse app não estiver instalado, faça o seguinte:

  1. Abra o painel Opções da sessão usando o botão na lateral da janela.
  2. Na seção Instalar aplicativo, clique em Iniciar.
  3. Clique em Instalar.

    A sessão da área de trabalho remota é reaberta em uma janela separada.

É possível mover qualquer sessão da área de trabalho remota de uma guia do Chrome para a janela do app clicando no ícone Abrir com na barra de URL.

Desativar animações e efeitos no Cinnamon

A área de trabalho do Cinnamon usa vários recursos gráficos e animações, como menus e janelas semitransparentes que aparecem e desaparecem gradualmente. Como essas animações levam mais tempo para serem renderizadas em uma conexão remota, isso pode fazer a interface do usuário parecer lenta.

Para desativar esses efeitos:

  1. Na área de trabalho do Cinnamon, selecione Menu > Preferences > Effects.

    Como definir as preferências da área de trabalho no Cinnamon.

  2. Desative cada um dos efeitos:

    Como desativar os efeitos de animação no Cinnamon.

Desativar protetores de tela, telas de bloqueio e senhas

Como você está acessando a área de trabalho de um computador remoto, normalmente não é necessário usar um protetor de tela ou um bloqueador de tela.

Xfce

  1. No menu Applications, selecione Settings > Screensaver.
  2. Defina Mode como Disable Screen Saver.

    Como desativar o protetor de tela no Xfce.

Cinnamon

  1. Na área de trabalho, selecione Menu > Preferences > Screensaver.
  2. Na guia Settings, defina Delay como Never e desative as duas configurações de bloqueio:

    Caixa de diálogo de configurações de efeitos no Cinnamon.

A conta de usuário criada pelo Compute Engine não tem uma senha, e a maioria dos app de bloqueio de tela não pode desbloquear telas de usuários que não têm uma senha. No entanto, mesmo quando os protetores de tela estão desativados, ainda é possível bloquear a tela no menu Applications.

Para evitar o bloqueio na área de trabalho remota, é possível definir uma senha para o usuário:

  1. Conecte-se à instância usando SSH, como você fez quando configurou a instância pela primeira vez.
  2. Crie uma senha para o usuário:

    sudo passwd $(whoami)
    

    Essa senha é necessária apenas para desbloquear a tela.

Aumentar a resolução da área de trabalho

Se você tiver um monitor de resolução ultra-alta, poderá achar que o tamanho máximo da área de trabalho remota padrão de 1600 x 1200 é muito pequeno. Se esse for o caso, é possível aumentá-lo para a resolução do seu monitor.

  1. Use SSH para se conectar à instância.
  2. Defina a variável de ambiente CHROME_REMOTE_DESKTOP_DEFAULT_DESKTOP_SIZES para incluir a resolução do seu monitor:

    echo "export CHROME_REMOTE_DESKTOP_DEFAULT_DESKTOP_SIZES=1600x1200,3840x2560" \
        >> ~/.profile
    
  3. Reinicie o serviço:

    sudo systemctl restart chrome-remote-desktop
    

Escolher um ambiente de área de trabalho diferente

Na seção anterior, você definiu um ambiente padrão de área de trabalho no arquivo /etc/chrome-remote-desktop-session. Também é possível escolher um ambiente de área de trabalho diferente (se estiver instalado) especificando-o no arquivo de configuração .chrome-remote-desktop-session no diretório principal:

Xfce

echo "exec /usr/bin/xfce4-session" > ~/.chrome-remote-desktop-session

Cinnamon

echo "exec /usr/bin/cinnamon-session-cinnamon2d" > ~/.chrome-remote-desktop-session

Depois de fazer essa alteração, reinicie o serviço para que a alteração entre em vigor:

sudo systemctl restart chrome-remote-desktop

Como mencionado anteriormente, a Área de trabalho remota do Google Chrome não é compatível com a aceleração de gráficos 3D. Portanto, para ambientes de área de trabalho que usam esses recursos, você precisa desativar os gráficos 3D, ou a sessão não será iniciada.

Como automatizar o processo de instalação

Quando você precisa configurar várias máquinas com a Área de trabalho remota do Google Chrome, as etapas de instalação manual podem se tornar repetitivas. Use um script de inicialização personalizado para automatizar esse processo por meio do seguinte procedimento:

  1. No Console do Cloud, acesse a página Instâncias de VM:

    Acessar a página Instâncias de VM

  2. Clique em Criar instância.

  3. Defina o nome da instância como crdhost-autoinstall.

  4. Se quiser, selecione uma região e uma zona próximas a você.

  5. Copie o script de shell a seguir e cole-o na caixa de texto Automação/Script de inicialização:

    #!/bin/bash -x
    #
    # Startup script to install Chrome remote desktop and a desktop environment.
    #
    # See environmental variables at then end of the script for configuration
    #
    
    function install_desktop_env {
      PACKAGES="desktop-base xscreensaver"
    
      if [[ "$INSTALL_XFCE" != "yes" && "$INSTALL_CINNAMON" != "yes" ]] ; then
        # neither XFCE nor cinnamon specified; install both
        INSTALL_XFCE=yes
        INSTALL_CINNAMON=yes
      fi
    
      if [[ "$INSTALL_XFCE" = "yes" ]] ; then
        PACKAGES="$PACKAGES xfce4"
        echo "exec xfce4-session" > /etc/chrome-remote-desktop-session
        [[ "$INSTALL_FULL_DESKTOP" = "yes" ]] && \
          PACKAGES="$PACKAGES task-xfce-desktop"
      fi
    
      if [[ "$INSTALL_CINNAMON" = "yes" ]] ; then
        PACKAGES="$PACKAGES cinnamon-core"
        echo "exec cinnamon-session-cinnamon2d" > /etc/chrome-remote-desktop-session
        [[ "$INSTALL_FULL_DESKTOP" = "yes" ]] && \
          PACKAGES="$PACKAGES task-cinnamon-desktop"
      fi
    
      DEBIAN_FRONTEND=noninteractive \
        apt-get install --assume-yes $PACKAGES $EXTRA_PACKAGES
    
      systemctl disable lightdm.service
    }
    
    function download_and_install { # args URL FILENAME
      curl -L -o "$2" "$1"
      dpkg --install "$2"
      apt-get install --assume-yes --fix-broken
    }
    
    function is_installed {  # args PACKAGE_NAME
      dpkg-query --list "$1" | grep -q "^ii" 2>/dev/null
      return $?
    }
    
    # Configure the following environmental variables as required:
    INSTALL_XFCE=yes
    INSTALL_CINNAMON=yes
    INSTALL_CHROME=yes
    INSTALL_FULL_DESKTOP=yes
    
    # Any additional packages that should be installed on startup can be added here
    EXTRA_PACKAGES="less bzip2 zip unzip"
    
    apt-get update
    
    ! is_installed chrome-remote-desktop && \
      download_and_install \
        https://dl.google.com/linux/direct/chrome-remote-desktop_current_amd64.deb \
        /tmp/chrome-remote-desktop_current_amd64.deb
    
    install_desktop_env
    
    [[ "$INSTALL_CHROME" = "yes" ]] && \
      ! is_installed google-chrome-stable && \
      download_and_install \
        https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \
        /tmp/google-chrome-stable_current_amd64.deb
    
    echo "Chrome remote desktop installation completed"
    

    Esse script executa as seguintes tarefas sempre que a máquina é reinicializada:

    • Se o pacote de área de trabalho remota não estiver instalado:
      • Faz o download e instala o pacote Área de trabalho remota do Google Chrome.
      • Instala os pacotes dependentes.
    • Instala os ambientes de área de trabalho do Xfce ou Cinnamon, dependendo das configurações de script.
    • Se a opção de ambiente de área de trabalho completa estiver ativada, os pacotes necessários serão instalados.
    • Se a opção do navegador Chrome estiver ativada e não estiver instalada:
      • Faz o download e instala o pacote Área de trabalho remota do Google Chrome.
      • Instala os pacotes dependentes.
  6. Clique em Criar.

    Leva alguns instantes para criar sua instância e, na primeira execução com todas as opções ativadas, o script pode levar até dez minutos para concluir a instalação.

  7. Para monitorar o progresso, conecte-se à instância de VM usando SSH e, no terminal da instância, execute o seguinte comando:

    sudo journalctl -o cat -f _SYSTEMD_UNIT=google-startup-scripts.service
    

    Este comando mostra a saída do script de inicialização. Quando o script for concluído, você verá o seguinte:

    INFO startup-script: Chrome remote desktop installation completed
    INFO startup-script: Return code 0.
    INFO Finished running startup scripts.
    

Esse script apenas instala os pacotes necessários. Você ainda precisa configurar o serviço de área de trabalho remota para o usuário, conforme descrito anteriormente.

Há várias maneiras de especificar um script de inicialização ao criar uma nova instância de VM:

  • Cole-o no Console do Cloud (conforme mostrado anteriormente).
  • Armazene-o como um arquivo em uma máquina local e use a sinalização --metadata-from-file ao criar a instância com a ferramenta de linha de comando gcloud.
  • Armazene-o em um bucket do Cloud Storage e especifique o URL para o objeto, no console ou na ferramenta gcloud.

Para mais informações sobre os métodos alternativos de configuração do script de inicialização, consulte Como executar scripts de inicialização na documentação do Compute Engine.

Solução de problemas

Verificar o status do serviço de Área de trabalho remota do Google Chrome

Se o serviço Área de trabalho remota do Google Chrome deixar de responder, será possível verificar o status dele usando o SSH para conectar-se à instância e executando o seguinte comando:

sudo systemctl status chrome-remote-desktop

Se o serviço estiver em execução, você verá a saída que inclui o estado active:

chrome-remote-desktop.service - LSB: Chrome Remote Desktop service
    Loaded: loaded (/etc/init.d/chrome-remote-desktop; generated; vendor preset: enabled)
    Active: active (exited) since DATE_TIME, ELAPSED_TIME

Para reiniciar o serviço, use o seguinte comando na janela do SSH:

sudo systemctl restart chrome-remote-desktop

Conseguir informações de registro e erro

A Área de trabalho remota do Google Chrome grava informações de registro em arquivos com nomes correspondentes ao seguinte padrão:

/tmp/chrome_remote_desktop_DATE_TIME_*

É possível verificar esses arquivos de registro em busca de mensagens de erro.

Reativar o serviço

Se você tiver desativado por engano as conexões com a instância remota no app cliente, será possível reconfigurar o serviço e reativá-lo seguindo as instruções em Como configurar e iniciar o serviço Área de trabalho remota do Google Chrome.

Como fazer a limpeza

Para evitar que os recursos usados neste tutorial sejam cobrados na conta do Google Cloud Platform:

Como excluir o projeto

O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.

Para excluir o projeto:

  1. No Console do Cloud, acesse a página Gerenciar recursos:

    Acessar a página "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

Excluir a instância do Compute Engine

Como alternativa à exclusão do projeto inteiro, é possível excluir a instância de VM criada para este tutorial:

  1. No Console do Cloud, acesse a página Instâncias de VM:

    Acessar a página Instâncias de VM

  2. Marque a caixa de seleção ao lado do nome da instância que você criou anteriormente (crdhost).

  3. Clique no botão Excluir na parte superior da página:

    Como excluir a instância da VM.

    A exclusão da instância leva alguns instantes.

Desautorizar a Área de trabalho remota do Google Chrome para a instância

Se você não quiser mais se conectar à instância de VM, desative-a e remova a instância da lista Dispositivos remotos.

  1. No computador local, acesse o site da lista de dispositivos remotos da Área de trabalho remota do Google Chrome (Beta).

  2. Clique em ao lado do nome da instância:

    Desativando o dispositivo remoto no Chrome.

  3. Clique em OK para confirmar se a conexão do dispositivo remoto precisa ser desativada.

A seguir