Algumas tarefas são mais fáceis com um ambiente gráfico: abrir um navegador, uma ferramenta com interface ou uma aplicação de desktop numa máquina remota. O XFCE é leve o bastante para um servidor pequeno, e o TigerVNC permite vê-lo a partir do seu próprio computador. Este guia configura-o num VPS Linux Infrawire sem nunca expor a porta VNC à Internet: só se acede por um túnel SSH.
📋 Pré-requisitos
- Um VPS com Ubuntu 24.04 ou Debian 12 e acesso SSH root (na sua área de cliente encontra o IP e a senha root do VPS).
- Pelo menos 2 GB de RAM para um ambiente confortável.
- Um cliente SSH no seu computador e um visualizador VNC (RealVNC Viewer ou TigerVNC Viewer).
- Uma conta de utilizador normal: não execute o ambiente gráfico como root.
📦 Instalar o XFCE e o TigerVNC
Atualize o sistema e depois instale o ambiente e o servidor. O dbus-x11 evita um problema frequente de ecrã cinzento.
Bashapt update && apt upgrade -y apt install -y xfce4 xfce4-goodies tigervnc-standalone-server tigervnc-common dbus-x11
Crie um utilizador dedicado se ainda não tiver um:
Bashadduser USER usermod -aG sudo USER
🔑 Definir a senha VNC e a sessão
Mude para esse utilizador e defina a senha VNC (no máximo 8 caracteres são significativos):
Bashsu - USER vncpasswd
Responda n à pergunta sobre a senha só de leitura. Depois indique ao TigerVNC que inicie o XFCE:
Bashmkdir -p ~/.vnc cat > ~/.vnc/xstartup <<'EOF' #!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS exec startxfce4 EOF chmod +x ~/.vnc/xstartup
Teste à mão, escutando apenas em localhost:
Bashvncserver :1 -localhost yes -geometry 1920x1080 -depth 24 vncserver -list vncserver -kill :1
⚙️ Arranque automático com systemd
De volta como root, crie uma unidade que execute a sessão do seu utilizador. O display :1 corresponde à porta TCP 5901.
INI1# /etc/systemd/system/vncserver@.service 2[Unit] 3Description=TigerVNC server on display %i 4After=network.target 5 6[Service] 7Type=forking 8User=USER 9Group=USER 10WorkingDirectory=/home/USER 11PIDFile=/home/USER/.vnc/%H:%i.pid 12ExecStartPre=-/usr/bin/vncserver -kill :%i 13ExecStart=/usr/bin/vncserver :%i -localhost yes -geometry 1920x1080 -depth 24 14ExecStop=/usr/bin/vncserver -kill :%i 15 16[Install] 17WantedBy=multi-user.target
Bashsystemctl daemon-reload systemctl enable --now vncserver@1.service systemctl status vncserver@1.service
Para um segundo utilizador, copie a unidade com outro nome, com esse utilizador e o display :2 (porta 5902).
🔒 Ligar através de um túnel SSH
A opção -localhost yes faz o VNC escutar apenas em 127.0.0.1, pelo que nada é acessível de fora. No seu próprio computador, abra um túnel:
Bashssh -N -L 5901:localhost:5901 USER@VPS_IP
Deixe essa janela aberta. No seu visualizador VNC, ligue-se a localhost:5901 e introduza a senha VNC. O mesmo comando funciona no PowerShell do Windows e no Terminal do macOS. Não abra a porta 5901 em nenhuma firewall.
✅ Verificação
No VPS, confirme que o VNC escuta apenas no endereço de loopback:
Bashss -tlnp | grep 5901 systemctl is-active vncserver@1.service
Deve ver 127.0.0.1:5901 e não 0.0.0.0:5901. No seu computador, o visualizador deve mostrar o ambiente XFCE com o túnel ativo.
🛠️ Solução de problemas
Ecrã cinzento ou sem ambiente gráfico. Verifique se ~/.vnc/xstartup é executável, se o dbus-x11 está instalado e leia o registo com cat ~/.vnc/*.log. A falta da linha exec startxfce4 é a causa mais comum.
"A VNC server is already running as :1". Resta um bloqueio antigo. Execute vncserver -kill :1, remova /tmp/.X1-lock e /tmp/.X11-unix/X1 se persistirem e reinicie o serviço.
O túnel recusa a ligação. O serviço provavelmente está parado: verifique systemctl status vncserver@1.service. Confirme também que a porta local 5901 não está já em uso no seu computador, ou escolha outra como -L 5999:localhost:5901.
🎉 O seu VPS já oferece um ambiente XFCE privado, acessível apenas pelo seu túnel SSH.