Русский (Russian)

Рабочий стол XFCE и TigerVNC на Linux VPS

2 min
VPS/VDS-хостинг

Некоторые задачи проще решать с графическим рабочим столом: запустить браузер, графический инструмент или десктопное приложение на удалённой машине. XFCE достаточно лёгкий для небольшого сервера, а TigerVNC позволяет увидеть его на вашем компьютере. В этом руководстве он настраивается на VPS Linux Infrawire так, что порт VNC никогда не открыт в Интернет: подключаться можно только через SSH-туннель.

📋 Требования

  • VPS с Ubuntu 24.04 или Debian 12 и доступом по SSH под root (в личном кабинете вы найдёте IP-адрес и пароль root вашего VPS).
  • Не менее 2 ГБ ОЗУ для комфортной работы стола.
  • SSH-клиент на вашем компьютере и VNC-клиент (RealVNC Viewer или TigerVNC Viewer).
  • Обычная учётная запись пользователя: не запускайте рабочий стол от root.

📦 Установка XFCE и TigerVNC

Обновите систему, затем установите рабочий стол и сервер. Пакет dbus-x11 избавляет от частой проблемы серого экрана.

Bash
apt update && apt upgrade -y apt install -y xfce4 xfce4-goodies tigervnc-standalone-server tigervnc-common dbus-x11

Создайте отдельного пользователя, если его ещё нет:

Bash
adduser USER usermod -aG sudo USER

🔑 Пароль VNC и сессия

Перейдите к этому пользователю и задайте пароль VNC (значимы не более 8 символов):

Bash
su - USER vncpasswd

На вопрос о пароле только для просмотра ответьте n. Затем укажите TigerVNC запускать XFCE:

Bash
mkdir -p ~/.vnc cat > ~/.vnc/xstartup <<'EOF' #!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS exec startxfce4 EOF chmod +x ~/.vnc/xstartup

Проверьте вручную, слушая только localhost:

Bash
vncserver :1 -localhost yes -geometry 1920x1080 -depth 24 vncserver -list vncserver -kill :1

⚙️ Автозапуск через systemd

Снова под root создайте юнит, запускающий сессию для вашего пользователя. Дисплей :1 соответствует TCP-порту 5901.

INI
1# /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
Bash
systemctl daemon-reload systemctl enable --now vncserver@1.service systemctl status vncserver@1.service

Для второго пользователя скопируйте юнит под другим именем, с этим пользователем и дисплеем :2 (порт 5902).

🔒 Подключение через SSH-туннель

Опция -localhost yes заставляет VNC слушать только 127.0.0.1, поэтому снаружи ничего недоступно. На своём компьютере откройте туннель:

Bash
ssh -N -L 5901:localhost:5901 USER@VPS_IP

Оставьте это окно открытым. В VNC-клиенте подключитесь к localhost:5901 и введите пароль VNC. Та же команда работает в Windows PowerShell и в Терминале macOS. Не открывайте порт 5901 ни в одном межсетевом экране.

✅ Проверка

На VPS убедитесь, что VNC слушает только петлевой адрес:

Bash
ss -tlnp | grep 5901 systemctl is-active vncserver@1.service

Вы должны увидеть 127.0.0.1:5901, а не 0.0.0.0:5901. На вашем компьютере при поднятом туннеле клиент должен показать рабочий стол XFCE.

🛠️ Устранение неполадок

Серый экран или нет рабочего стола. Проверьте, что ~/.vnc/xstartup исполняемый, что установлен dbus-x11, и прочитайте журнал командой cat ~/.vnc/*.log. Самая частая причина — отсутствие строки exec startxfce4.

«A VNC server is already running as :1». Остался устаревший файл блокировки. Выполните vncserver -kill :1, при необходимости удалите /tmp/.X1-lock и /tmp/.X11-unix/X1 и перезапустите службу.

Туннель отклоняет соединение. Вероятно, служба остановлена: проверьте systemctl status vncserver@1.service. Убедитесь также, что локальный порт 5901 на вашем компьютере не занят, или выберите другой, например -L 5999:localhost:5901.


🎉 Теперь ваш VPS предоставляет приватный рабочий стол XFCE, доступный только через ваш SSH-туннель.

Следите за последними предложениями, скидками и специальными акциями.

Смотреть акции

Мы используем файлы cookie

Аналитические cookie улучшают работу сайта. Данные не продаются третьим лицам. Подробнее в политике конфиденциальности.