Como configurar o Xfce via servidor remoto Ubuntu e acessá-lo via VNC

como-configurar-o-xfce-via-servidor-remoto-ubuntu-e-acessa-lo-via-vnc

Hoje em dia muitos servidores dispensam ambientes gráficos. No entanto, as vezes precisamos executar alguma aplicação no servidor. Desta forma, é necessário manter tal aplicativo sendo executado por um tempo para fazermos testes para os usuários finais. Neste tutorial saiba como configurar o Xfce no servidor remoto usando o Ubuntu, claro você pode usar outros ambientes como KDE, GNOME, Mate, etc.

Instalando o ambiente de trabalho e o servidor VNC no Ubuntu

Xfce é um desktop leve e ideal para uso em um servidor remoto. Primeiro instale os pacotes xfce e o servidor tightvnc. Como estamos falando de um servidor que esta sendo usado em produção, então é importante atualizar o cache dos pacotes, o sistema e só depois seguir os passos abaixo:

Terminal
sudo apt update
sudo apt install xfce4 xfce4-goodies tightvncserver

Observe que isso só irá instalar os pacotes e não vai iniciar nada. Assim, vale lembrar que o cenário atual é um servidor sem ambiente gráfico. Então vamos lá, começaremos o vncserver com configurações específicas por conta própria, mais adiante neste guia.

Para evitar erros, ou caso aconteça alguma parada no gerenciador de pacotes vamos executar o comando abaixo. Este comando vai garantir que a instalação anterior esteja com as dependências de maneira satisfatórias:

Terminal
sudo dpkg --configure -a

Criando um usuário no VNC em nosso servidor Ubuntu

A próxima coisa a fazer é criar um usuário unix que será usado durante as sessões vnc. O nome de usuário pode ser qualquer coisa. Use o comando adduser, lembre-se que os comandos devem ser sempre executados como root:

Terminal
adduser emanuel

Configurando a “senha vnc” para o usuário

O servidor vnc mantém uma senha separada usada para fazer login no servidor VNC via cliente VNC. Essa senha difere da senha de usuário do Unix. Ela é configurada usando o comando vncpasswd, veja abaixo como fazer, mas primeiro vamos mudar para o usuário emanuel que criamos na etapa anterior:

Terminal
su - emanuel

Agora sim, vamos criar uma senha:

Terminal
vncpasswd

Observe que o arquivo passwd não existia e foi criado conforme as saídas do terminal geradas para você. Se você já tiver executado o comando vncserver anteriormente, então teria criado os arquivos. Quando você executa o vncserver pela primeira vez, ele cria um script de inicialização padrão.

No entanto, não precisamos executar o comando vncserver. Ele deve ser iniciado automaticamente usando scripts de inicialização.

Criando o script xstartup

O próximo arquivo importante é o script xstartup. Ele contém instruções sobre quais aplicativos X devem ser iniciados. Neste caso, o ambiente de trabalho é a aplicação X que temos de iniciar.

Primeiro faça um backup do arquivo se ele já existir:

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

Agora edite-o usando nano:

Terminal
nano .vnc/xstartup
Nota: Isso está no diretório pessoal do usuário vnc, ou seja /home/emanuel/.vnc/xstartup

Digite as seguintes linhas no script xstartup:

#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

O comando startxfce4 irá iniciar o desktop xfce. Salve o arquivo e feche-o.

Torne o arquivo xstartup executável. Isso é necessário para que o vncserver possa executar este arquivo, para isso execute os comandos abaixo:

Terminal
chmod +x ~/.vnc/xstartup

Criando arquivo do serviço VNC

O próximo passo é criar um arquivo de serviço VNC para que possamos iniciar o servidor VNC usando o comando service e não precisar executar o comando vncserver todas às vezes que formos usar o serviço.

Certifique-se de digitar o nome de utilizador correto na variável USER. Este é o usuário que o servidor VNC vai usar para iniciar a sessão da área de trabalho.

Terminal
sudo nano /etc/init.d/vncserver

Cole o seguinte script, lembre-se de alterar pelo usuário que você criou!

#!/bin/bash
PATH="$PATH:/usr/bin/"
export USER="emanuel"
DISPLAY="1"
DEPTH="16"
GEOMETRY="1024x768"
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
. /lib/lsb/init-functions
case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;
stop)
log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
;;
restart)
$0 stop
$0 start
;;
esac
exit 0]

Salve o arquivo e feche-o. Vamos agora torná-lo executável:

Terminal
chmod +x /etc/init.d/vncserver

Iniciando o serviço

É hora de executar o vncserver e testar. Primeiro recarregue systemctl para que ele possa usar o script de inicialização vncserver:

Terminal
systemctl daemon-reload

Agora inicie o vncserver. Ele inicia o servidor na porta 5901:

Terminal
service vncserver start

Verifique se tudo esta funcionando:

Terminal
service vncserver status
cat ~/.vnc/*.pid
ps -ef | grep tightvnc

Verifique as portas abertas do servidor VNC. Você precisa do número de porta correto ao usar o cliente VNC:

Terminal
netstat -nlp | grep vnc

O servidor VNC também pode ser iniciado chamando o script diretamente:

Terminal
/etc/init.d/vncserver start

Para parar vncserver:

Terminal
service vncserver stop

Instalando o cliente vncviewer na área de trabalho

Agora que temos o servidor vnc funcionando com o ambiente de desktop gui, é hora de instalar um cliente vnc e acessar o desktop remoto.

Instale o xtightvncviewer no Ubuntu, para isso execute os comandos abaixo:

Terminal
sudo apt-get install xtightvncviewer

Agora, conecte-se ao servidor VNC remoto usando o comando vncviewer:

Terminal
vncviewer -quality 5 -encodings "copyrect tight hextile zlib corre rre raw" -compresslevel 5 IPADDR:5901

Usamos codificações de baixa qualidade e compressão para comprimir os dados de imagem sendo transferidos afim de torná-los mais rápidos. Usar outros visualizadores do VNC como o KRDC pode ser mais lento, mas use o que gostar mais.

Referências: Tightvnc e Digital Ocean