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:
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:
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:
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:
su - emanuel
Agora sim, vamos criar uma senha:
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:
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
Agora edite-o usando nano:
nano .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:
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.
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:
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:
systemctl daemon-reload
Agora inicie o vncserver. Ele inicia o servidor na porta 5901:
service vncserver start
Verifique se tudo esta funcionando:
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:
netstat -nlp | grep vnc
O servidor VNC também pode ser iniciado chamando o script diretamente:
/etc/init.d/vncserver start
Para parar vncserver:
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:
sudo apt-get install xtightvncviewer
Agora, conecte-se ao servidor VNC remoto usando o comando vncviewer:
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