# Как настроить GUI и графическое окружение на виртуальных машинах с Linux



## Описание задачи {#case-description}

Необходимо использовать графические приложения на виртуальных машинах с ОС Linux.

## Решение {#case-resolution}

Есть несколько вариантов, позволяющих использовать графическое окружение рабочего стола на ВМ с Linux.

{% list tabs %}

- Доступ по VNC/RDP

  Вы можете подключиться к ВМ по протоколам удаленного доступа, таким, как VNC или RDP. Для этого выполните следующие действия:

  1. Установите окружение рабочего стола
  1. Установите пакет `xrdp` или `tightvncserver` (для подключения по протоколу RDP или VNC соответственно).

  Рекомендуем использовать связку VNC-сервера, прослушивающего только `localhost`, и SSH-туннеля. В этом случае вы исключите риск перехвата VNC-сессии к вашей ВМ, зашифруете VNC-трафик и исключите один из возможных векторов компрометации доступа к ВМ. 

  С настройкой SSH-туннеля вам может помочь руководство [по этой ссылке](https://habr.com/ru/company/ua-hosting/blog/273201/).

- Проброс X-сессии

  Вы можете пробросить на локальный компьютер графический интерфейс приложения, запущенного внутри Xorg-сессии на ВМ. О том, как это сделать, также есть множество статей в сети. Для ОС Microsoft Windows® можно использовать серер [Xming](https://sourceforge.net/projects/xming/):

  1. Установите на виртуальной машине любое из окружений рабочего стола (например, KDE, Gnome, XFCE, LXQT, Cinnamon и так далее). Вы можете установить только метапакет с нужным для вас окружением рабочего стола. Все нужные зависимости (включая Xorg) будут установлены автоматически.
  1. Настройте проброс Xorg в вашем SSH-клиенте и подключитесь к ВМ.
  1. Запустите графическое приложение изнутри SSH-сессии.
  1. Графический интерфейс нужного вам приложения будет отрисован в отдельном окне.

- Terraform

  Вы можете использовать Terraform для создания ВМ с заранее установленным графическим окружением. Возможный пример плана Terraform, который можно использовать в качестве основы, размещен [по этой ссылке](https://nikolaymatrosov.medium.com/rdp-%D0%BD%D0%B0-ubuntu-%D0%B2-yandex-cloud-c9d7870a47cc).

- Docker

  1. [Установите Docker](https://yandex.cloud/ru-kz/container-registry/operations/configure-docker).
  1. Запустите готовый легковесный образ Ubuntu с установленным графическим окружением LXDE и VNC-сервером x11vnc:
  
      ```
      docker run -p 127.0.0.1:6080:80 -e HTTP_PASSWORD=<ваш пароль> -v /dev/shm:/dev/shm dorowu/ubuntu-desktop-lxde-vnc
      ```

  1. После запуска контейнера пробросьте порт `6080` на свою машину.
  1. Откройте `http://<адрес>:6080` в браузере и авторизуйтесь c логином root и вашим паролем. Используйте левое меню для буфера обмена и нажатия дополнительных клавиш (`Ctrl`, `Alt`, `Win`, `Tab`).
  1. Установите и запустите графическое приложение.

{% endlist %}

{% note alert %}

Техническая поддержка не оказывает консультаций по настройке и использованию стороннего ПО на виртуальных машинах. Ответственность за администрирование операционных систем, настройку стороннего ПО и написание кода на различных языках программирования лежит на пользователях Yandex Cloud.

{% endnote %}