−25%

no Windows com pagamento anual, até 31/10. Ver planos

EQVPS
Começar

Como instalar um desktop num VPS Linux e conectar pela Área de Trabalho Remota (XFCE + xrdp)

Um desktop gráfico num VPS com Ubuntu 24.04, aberto com o app comum de Área de Trabalho Remota: XFCE e xrdp, os dois padrões que estragam tudo (sessão errada, sem TLS) e uma configuração em que a porta 3389 nunca fica exposta à internet. Com espaço em disco e RAM por sessão medidos.

Um servidor Linux não tem tela, e na maior parte do tempo não precisa de uma. Às vezes precisa: um navegador que tem de sair do endereço do próprio servidor, uma ferramenta só com interface gráfica ou um desktop que você deixa rodando e retoma de qualquer computador. Este guia adiciona ao Ubuntu 24.04 o desktop leve XFCE e o xrdp, para abri-lo com o mesmo app de Área de Trabalho Remota que você usaria num servidor Windows.

Testamos cada passo na nossa imagem do Ubuntu 24.04. Dois padrões estragaram a primeira tentativa, e corrigimos os dois abaixo. Você vai precisar de um usuário normal com sudo; o guia de configuração do Ubuntu cria um. Nos exemplos, ele se chama deploy.

1. Instale o XFCE e o xrdp

sudo apt update
sudo apt install -y xfce4 xfce4-goodies xrdp

No nosso servidor de 2 GB isso levou cerca de quatro minutos e meio e ocupou 1,7 GB de disco (2,7 GB usados antes, 4,4 GB depois). Instala o xrdp 0.9.24, que já inicia e escuta na porta 3389.

2. Faça o xrdp iniciar o XFCE, não o GNOME

Entre com o usuário que vai usar o desktop e rode:

echo xfce4-session > ~/.xsession

Sem esse arquivo, nosso primeiro login iniciou o GNOME em vez do XFCE, e a sessão caiu na hora com "Oh no! Something has gone wrong". Os pacotes do passo 1 também instalam o gerenciador de sessão do GNOME, e o Ubuntu o deixa como padrão. Com o ~/.xsession no lugar, o xrdp inicia o XFCE.

3. Deixe o xrdp usar TLS

O xrdp roda com o próprio usuário xrdp, e esse usuário não consegue ler a chave privada do servidor. Nossa primeira conexão funcionou, mas o /var/log/xrdp.log mostrou por que não dava para confiar nela:

Cannot read private key file /etc/xrdp/key.pem: Permission denied
Non-TLS connection established from ::ffff:127.0.0.1

Sem a chave, o xrdp volta para a criptografia RDP antiga em vez de TLS. Dê acesso a ele e reinicie:

sudo adduser xrdp ssl-cert
sudo systemctl restart xrdp

A conexão seguinte apareceu no nosso log como TLS connection established ... TLSv1.3. Você pode conferir a sua do mesmo jeito:

sudo grep -E "TLS connection|Non-TLS" /var/log/xrdp.log | tail -2

4. Mantenha a porta 3389 fora da internet

Depois de instalado, o xrdp escuta em todos os endereços. Ao contrário do Windows, o xrdp não tem Network Level Authentication, então qualquer um que alcance a porta ganha uma tela de login para tentar senhas. Faça-o escutar só no próprio servidor:

sudo sed -i 's|^port=3389$|port=tcp://127.0.0.1:3389|' /etc/xrdp/xrdp.ini
sudo systemctl restart xrdp
ss -ltn | grep 3389

A última linha deve mostrar 127.0.0.1:3389. No nosso teste, uma conexão direta ao endereço do servidor na 3389 passou a ser recusada, e o túnel do passo seguinte continuou funcionando.

5. Conecte pelo SSH

No seu computador, abra um túnel. No Windows, o PowerShell tem o mesmo comando ssh:

ssh -L 13389:localhost:3389 deploy@YOUR.SERVER.IP

Num plano NAT, acrescente -p e a porta SSH pessoal do painel. Deixe essa janela aberta. Depois aponte o app de Área de Trabalho Remota para localhost:13389 e entre como deploy com a senha desse usuário:

  • Windows: Conexão de Área de Trabalho Remota (mstsc).
  • macOS: o Windows App, da App Store.
  • Linux: Remmina, ou xfreerdp /v:localhost:13389 /u:deploy.

A porta local é 13389 e não 3389 porque a 3389 pode já estar ocupada no seu computador pela própria Área de Trabalho Remota dele. Na primeira vez, o app avisa sobre um certificado que não reconhece. É o certificado autoassinado do servidor, e a conexão já vai criptografada dentro do SSH.

6. O que você ganha

Você ganha um desktop XFCE com painel, gerenciador de arquivos e terminal. No nosso servidor, uma sessão somou cerca de 360 MB de RAM: 388 MB usados antes de conectar e 747 MB durante a sessão.

Fechar a janela da Área de Trabalho Remota não encerra a sessão. No nosso teste, um comando longo continuou rodando depois que desconectamos. Ao conectar de novo, o xrdp nos devolveu à mesma sessão (reconnected session ... display :10 no log dele). Para encerrar a sessão de verdade, use Log Out no menu do XFCE.

Qual plano

O desktop precisa mais de RAM do que de CPU. O Micro (2 vCPU, 2 GB, 25 GB, $5/mês) roda o XFCE e ferramentas leves com folga. Se pretende deixar um navegador aberto na sessão, escolha o Small, com 4 vCPU e 4 GB por $8/mês. Os dois são planos NAT, e aqui isso não atrapalha: a Área de Trabalho Remota passa pela sua porta SSH.

Se o que você precisa mesmo é de software Windows, um VPS Windows roda direto, e o Windows-Small começa em $11/mês. O Ubuntu 24.04 está na página do Ubuntu VPS e em todos os planos Linux em VPS. O pagamento é em USDT, USDC ou ETH nas redes Base, Ethereum ou Polygon.

Perguntas frequentes

Posso conectar com o app normal de Área de Trabalho Remota do Windows?

Sim. O xrdp fala o protocolo RDP, então funcionam a Conexão de Área de Trabalho Remota do Windows, o Windows App no macOS e o Remmina ou o xfreerdp no Linux. Você conecta ao localhost por um túnel SSH em vez do endereço do servidor.

Funciona num plano NAT?

Sim. A conexão RDP passa por dentro do SSH, e o SSH é justamente a única porta que um plano NAT redireciona para o seu servidor. É a configuração que este guia recomenda em qualquer plano, porque a porta 3389 fica fechada para a internet.

Quanta RAM o desktop usa?

No nosso servidor de teste, uma sessão do XFCE somou cerca de 360 MB: a memória usada foi de 388 MB para 747 MB. O plano Micro de 2 GB basta para o desktop e ferramentas leves. Se for usar um navegador na sessão, 4 GB é mais confortável.

Aparece uma tela preta ou "Oh no! Something has gone wrong". O que houve?

O xrdp iniciou o GNOME em vez do XFCE. Os pacotes do passo 1 também instalam o gerenciador de sessão do GNOME, e o Ubuntu o define como padrão do sistema. Crie ~/.xsession com xfce4-session para o usuário que entra e conecte de novo.

Posso entrar por RDP como root?

O xrdp permite por padrão (AllowRootLogin=true em /etc/xrdp/sesman.ini), mas use um usuário normal com sudo. Para bloquear o root, defina AllowRootLogin=false e reinicie o xrdp.

Comentários

Nenhum comentário ainda. Seja o primeiro.

Deixe um comentário

Os comentários são moderados antes de aparecerem.