Установка Gnome 3, XFCE и VNC на headless‑сервер (Ubuntu 14.10)
Важно: оригинальная инструкция рассчитана на чистую установку Ubuntu 14.10. Эта версия устарела — рассмотрите обновление до поддерживаемой версии перед развёртыванием в продакшн. Все команды предполагают, что вы выполняете их от root; используйте sudo -i или sudo -s при необходимости.
Внимание: протокол VNC по умолчанию не шифрует трафик и учётные данные. Всегда используйте SSH-туннель или VPN для защиты соединения, если доступ осуществляется через ненадёжные сети.
Что будет установлено
- Ubuntu 14.10 (как в исходном примере)
- Gnome 3.14 (через PPA)
- XFCE (как лёгкая среда рабочего стола)
- vnc4server (VNC сервер)
Кому полезно: системным администраторам и разработчикам, которым нужен удалённый GUI на сервере без физического монитора.
1. Установка зависимостей и добавление PPA Gnome
Сначала установите помощник для работы с PPA:
apt-get install software-properties-common
Добавьте PPA с тестовой веткой Gnome:
add-apt-repository ppa:gnome3-team/gnome3-staging
При появлении приглашения нажмите ENTER для продолжения.

Загрузите ключи и обновите списки пакетов:
apt-get update
Обновите установленные пакеты:
apt-get upgrade
2. Установка XFCE, Gnome-компонентов и VNC
Установите базовые пакеты рабочего стола и браузер (пример):
apt-get install gnome-core xfce4 firefox
Подтвердите установку, затем установите VNC сервер:
apt-get install vnc4server
Запустите vncserver для первоначальной настройки пароля:
vncserver
Если увидите запрос о view-only password — ответьте «n», чтобы получить полноуправляемую сессию.
Завершите сеанс VNC для последующей настройки:
vncserver -kill :1
3. Настройка файла запуска X (xstartup)
Сделайте резервную копию оригинального xstartup и очистите его:
cp ~/.vnc/xstartup ~/.vnc/xstartup.bak
> ~/.vnc/xstartup
Откройте файл в редакторе (например, vi):
vi ~/.vnc/xstartup
Вставьте следующий контент (этот же блок сохранён ниже для удобного копирования):
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
Сделайте файл исполняемым:
chmod +x xstartup
4. Инициализатор vncserver и конфигурация автозапуска
Создайте скрипт запуска VNC сервера в /etc/init.d (пример скрипта приведён ниже — сохраните как /etc/init.d/vncserver):
#!/bin/bash
unset VNCSERVERARGS
VNCSERVERS=""
[ -f /etc/vncserver/vncservers.conf ] && . /etc/vncserver/vncservers.conf
prog=$"VNC server"
start() {
. /lib/lsb/init-functions
REQ_USER=$2
echo -n $"Starting $prog: "
ulimit -S -c 0 >/dev/null 2>&1
RETVAL=0
for display in ${VNCSERVERS}
do
export USER="${display##*:}"
if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
echo -n "${display} "
unset BASH_ENV ENV
DISP="${display%%:*}"
export VNCUSERARGS="${VNCSERVERARGS[${DISP}]}"
su ${USER} -c "cd ~${USER} && [ -f .vnc/passwd ] && vncserver :${DISP} ${VNCUSERARGS}"
fi
done
}
stop() {
. /lib/lsb/init-functions
REQ_USER=$2
echo -n $"Shutting down VNCServer: "
for display in ${VNCSERVERS}
do
export USER="${display##*:}"
if test -z "${REQ_USER}" -o "${REQ_USER}" == ${USER} ; then
echo -n "${display} "
unset BASH_ENV ENV
export USER="${display##*:}"
su ${USER} -c "vncserver -kill :${display%%:*}" >/dev/null 2>&1
fi
done
echo -e "\n"
echo "VNCServer Stopped"
}
case "$1" in
start)
start $@
;;
stop)
stop $@
;;
restart|reload)
stop $@
sleep 3
start $@
;;
condrestart)
if [ -f /var/lock/subsys/vncserver ]; then
stop $@
sleep 3
start $@
fi
;;
status)
status Xvnc
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
exit 1
esacСделайте скрипт исполняемым:
chmod +x /etc/init.d/vncserver
Создайте директорию конфигурации и файл /etc/vncserver/vncservers.conf, в котором укажите дисплеи и пользователей. Пример:
mkdir -p /etc/vncserver
vi /etc/vncserver/vncservers.conf
Вставьте:
VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1024x768"Совет безопасности: лучше не запускать VNC от root. Создайте отдельного системного или обычного пользователя, например vncuser, и укажите его: VNCSERVERS=”1:vncuser”.
Добавьте автозапуск сервиса:
update-rc.d vncserver defaults
Перезагрузите сервер:
rebootПосле загрузки подключитесь с любого VNC-клиента к адресу

Введите VNC‑пароль при запросе.

Если всё настроено правильно, вы увидите рабочий стол удалённого сервера.

Альтернативные подходы
- Использовать x11vnc для подключения к уже запущенной X‑сессии вместо создания новой виртуальной сессии.
- Использовать TigerVNC или TightVNC вместо vnc4server — они имеют разные возможности и производительность.
- Рассмотреть RDP (xrdp) как альтернативу VNC, если нужен более сжатый поток и лучшая совместимость с Windows‑клиентами.
Когда этот способ не подходит
- Если требуется зашифрованное соединение из коробки — VNC сам по себе не подходит без туннеля.
- На серверах с критичными для безопасности данными лучше использовать VPN/SSH и ограничить доступ по IP.
- Если нужна аппаратная графика (GPU) и аппаратное ускорение — виртуальные сессии VNC могут быть ограничены.
Рекомендации по безопасности (жёсткое усиление)
- Никогда не открывайте порт 5901 напрямую в интернет. Используйте SSH‑туннель: ssh -L 5901:localhost:5901 user@server.
- Создайте отдельного пользователя для VNC, не используйте root.
- Разрешения файлов: .vnc/passwd должны быть доступны только владельцу.
- Ограничьте доступ по iptables/ufw к порту VNC (локальные сети или VPN только).
- Рассмотрите использование stunnel или VPN для шифрования трафика VNC.
Проверка и устранение неполадок
- Нет соединения: проверьте, запущен ли vncserver и слушает ли порт 5901 (netstat -tlnp | grep 5901).
- Чёрный экран/мёртвый X: проверьте ~/.vnc/*.log на ошибки X-сессии.
- Правильный рабочий стол не загружается: убедитесь, что в xstartup указан старт нужной среды (startxfce4 или gnome-session).
Роль‑ориентированные чек‑листы
Для администратора перед развёртыванием:
- Создать резервную копию системы.
- Обновить ОС или выбрать поддерживаемую версию Ubuntu.
- Создать отдельного пользователя для VNC.
- Настроить брандмауэр и SSH.
Для разработчика/пользователя:
- Сгенерировать и сохранить VNC‑пароль.
- Убедиться, что клиент VNC настроен на SSH‑туннель или подключается через VPN.
- Проверить разрешения и запуск xstartup.
Факты и ключевые числа
- Порт по умолчанию для дисплея :1 — 5901.
- Пример разрешения в конфиге: 1024x768.
- В качестве дисплея указывают цифру после двоеточия: vncserver :1.
Ссылки
- Ubuntu
- TightVNC Client
Краткое резюме
- VNC позволяет получить GUI на headless-сервере, но требует доп. мер безопасности.
- Рекомендуется создать отдельного пользователя, настраивать xstartup и запускать VNC через SSH или VPN.
- Рассмотрите альтернативы (x11vnc, TigerVNC, xrdp) в зависимости от задач.
Ключевые заметки
Important: проверяйте совместимость версий пакетов и использованных репозиториев. Если вы продолжаете использовать Ubuntu 14.10, планируйте миграцию на поддерживаемую LTS‑версию.
Критерии приёмки
- VNC служба запускается автоматически после перезагрузки.
- Подключение по адресу
:5901 успешно показывает рабочий стол XFCE/Gnome. - Подключение защищено SSH‑туннелем или VPN.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента