Differences

This shows you the differences between two versions of the page.


Previous revision
linux_faq:using_windows_xserver_vcxsrv_with_graphical_applications_running_in_lxc_container [2020/09/08 07:25] (current) – [Подключение существующих сессий] admin
Line 1: Line 1:
 +====== Задача ======
 +Мне нужно опубликовать графическое приложение **Linux**, которое исполняется в **lxc**-контейнере, средствами **Citrix**. \\
 +Применить стандартный подход, когда на **linux**-машину устанавливается **VDA** - не получается, поскольку **VDA** требует прямого доступа к устройствам, а в контейнере это можно сделать не всегда. \\
 +В идеале после аутентификации на **StoreFront** пользователь должен видеть иконку приложения, кликать ее и получать окно **linux**-приложения (или графическое рабочее окружение), исполняющееся в **lxc**-контейнере. 
  
 +====== Реализация ======
 +У меня есть **lxc**-контейнер с установленой в нем оболочкой **XFCE**, тестовая ферма **Citrix**, с сервером, на котором я могу публиковать **windows**-приложения.\\
 +На **Windows**-сервере я запускаю **X**-сервер [[https://sourceforge.net/projects/vcxsrv/|VcXsrv Windows X Server]] к которому будет подключаться графическое приложение-клиент (**xfce4-session**) для отображения своих окон. \\
 +Для тестирования, при запуске **VcXsrv** я его настраиваю так:
 +  - Display settings: **One Large Window**, **Display number - 10**.
 +  - Select how to start clients: **Start a Program**
 +  - Specify program to start: **Start program on remote computer** 
 +    * Remote program:
 +<code>DISPLAY=__win_host_name_or_ip__:10.0 xfce4-session &</code>
 +      * Password: **linux user password**
 +      * Connect to computer: **IP-адрес (или имя) lxc-контейнера**
 +      * Login as user: **имя пользователя в контейнере**
 +  - Extra Settings: **Disable access control**. 
 +В итоге - **VcXsrv** подключится к контейнеру по протоколу **SSH** и запустит там сессию **XFCE**, используя в качестве X-сервера **VcXsrv**
 +====== Подключение существующих сессий ======
 +Например, я уже имею подключенную **GUI**-сессию с приложениями в **lxc**-контейнере. Пользователь имеет доступ через **xrdp**. Мне нужно, чтобы приложения (клиенты) этой **GUI**-сессии переехали на другой **X**-сервер (с локального **X**-сервера на удаленный). \\
 +http://xpra.org/
 +
 +В двух словах как работает **xpra**. 
 +На машине (или в контейнере) можно запустить что-то типа:
 +  xpra start --start=firefox
 +И в результате на машине (или в контейнере) режиме демона запустится X-сервер к которому присоединится окошко **firefox**. \\
 +А дальше можно запустить на удаленной машине (**linux** или **windows**) **xpra** в режиме клиента (на самом деле клиент и сервер **xpra** - это одна и та же софтина) и выполнить **attach** к этому окошку. Соединение приоизойдет по одному из протоколов (**ssh**, **tcp**, **ssl** и всякое разное). \\
 +Вместо **firefox** можно запустить и сессию рабочего стола. \\
 +Этот X-сервер будет работать в контейнере независимо от может быть уже запущенного **Xorg**.  
 +
 +====== Запуск приложений с помощью xpra ======
 +  xpra --start=code --username=mike --ssh="ssh -p 223" ssh:localhost