Help with Guacamole using X11 Driver

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Help with Guacamole using X11 Driver

cspeckrun
Hello I've been working on getting Apache Guacamole up and running using the
X11 driver fork on https://github.com/mike-jumper/guacamole-server and I've
been running into difficulties. I am new to both Guacamole and Xorg.

My goal is to create a headless linux system running the xorg server with
guacamole driver (and no other display drivers installed or even any display
devices attached to the system), and will run a GUI application. With the
GUI application running on the headless linux machine a guacamole-client
will be connected and allow using the GUI application through the Guacamole
web app.

What I've done so far:
1. Rebased the xf86-video-gauc branch onto the 1.1.0 release tag, for both
guacamole-client and guacamole-server.
2. Compiled guacamole-server on a CentOS 7 system, installed along with it
the xorg server and the GUI application.
3. Compiled gaucamole-client and set up a simple tomcat server for testing
purposes, connected this to the guacamole-server and created some basic
accounts (no backing database). It sets up user-mapping.xml defining a
single user with a connection using the xorg protocol.
4. Running both the guacamole-server (along with xorg and the application),
and the guacamole-client I'm able to log into Guacamole and have it
establish a session with the xorg server.

The result is that when logging into Guacamole there is what appears to be a
gray box that is my GUI application (I think at 1024x768). I can verify that
moving the cursor over this gray box results in changes of the cursor where
expected (turns to standard "I" cursor when hovering over what should be a
text field and into "resize" cursor when hovered over what should be
draggable parts). I can also verify that by clicking on expected areas of
the application that it is responding appropriately (via the application's
logs). However the issue is that the application itself is not rendering
properly, as it's just a solid gray box.

I would appreciate any help in uncovering what the issue might be. I believe
this is likely an issue with how Xorg is configured (I'm using the example
.conf file from the repository), but I have been lost with trying to find
any information online about this. It does not appear that what's being done
with a custom xorg driver is common (but I think is a very clever idea
here!). The only thing that seems remotely similar would be the dummy driver
(https://gitlab.freedesktop.org/xorg/driver/xf86-video-dummy). I've tried
manually setting the "depth" field both via the .conf and through argument
to Xorg and that did not appear to have any effect. The command line to
launch Xorg that I currently have is:

Xorg -noreset -depth 24 +extension GLX +extension RANDR +extension RENDER :1

I had to install the mesa-dri-drivers package to get the GLX extension to
load properly (I'm not even positive it's needed).

I've been lost for a good day or two without any notion of how to proceed. I
would greatly appreciate any help getting in the right direction. Thanks.

Christopher



--
Sent from: http://apache-guacamole-general-user-mailing-list.2363388.n4.nabble.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Help with Guacamole using X11 Driver

Mickaël Bucas
Hello

I've found a solution to run an X server that is not linked to any hardware.
I use it to open a session on machines where another user is already connected.

-----------------------8<-----------------------------
# Set my DISPLAY to something else than :0.0
export DISPLAY=:1

# Start the X server Virtual Frame Buffer
# Only the display is mandatory. The screen size is for the best experience on the navigator with Guacamole
# Notice the "&" to let next commands to run
Xvfb $DISPLAY -screen 0 1680x1050x24 &

# Wait for the X11 server before starting KDE
sleep 3

# Start a full KDE session
plasma_session &

# The most important part for Guacamole : the VNC server used by Guacamole
x11vnc -rfbport 5901 -rfbauth /home/mick/x11vnc.pass -noxdamage -display $DISPLAY &
-----------------------8<-----------------------------

These components are all in existence for a long time so I believe they are good starting points for experimentation.
I hope that mixing your research with them will lead you to your expected result.
According to your description, you could replace the "plasma_session" command with your GUI application.

Tell us if you make progress !

Best regards
Mickaël Bucas


Le ven. 5 juin 2020 à 04:50, cspeckrun <[hidden email]> a écrit :
Hello I've been working on getting Apache Guacamole up and running using the
X11 driver fork on https://github.com/mike-jumper/guacamole-server and I've
been running into difficulties. I am new to both Guacamole and Xorg.

My goal is to create a headless linux system running the xorg server with
guacamole driver (and no other display drivers installed or even any display
devices attached to the system), and will run a GUI application. With the
GUI application running on the headless linux machine a guacamole-client
will be connected and allow using the GUI application through the Guacamole
web app.

What I've done so far:
1. Rebased the xf86-video-gauc branch onto the 1.1.0 release tag, for both
guacamole-client and guacamole-server.
2. Compiled guacamole-server on a CentOS 7 system, installed along with it
the xorg server and the GUI application.
3. Compiled gaucamole-client and set up a simple tomcat server for testing
purposes, connected this to the guacamole-server and created some basic
accounts (no backing database). It sets up user-mapping.xml defining a
single user with a connection using the xorg protocol.
4. Running both the guacamole-server (along with xorg and the application),
and the guacamole-client I'm able to log into Guacamole and have it
establish a session with the xorg server.

The result is that when logging into Guacamole there is what appears to be a
gray box that is my GUI application (I think at 1024x768). I can verify that
moving the cursor over this gray box results in changes of the cursor where
expected (turns to standard "I" cursor when hovering over what should be a
text field and into "resize" cursor when hovered over what should be
draggable parts). I can also verify that by clicking on expected areas of
the application that it is responding appropriately (via the application's
logs). However the issue is that the application itself is not rendering
properly, as it's just a solid gray box.

I would appreciate any help in uncovering what the issue might be. I believe
this is likely an issue with how Xorg is configured (I'm using the example
.conf file from the repository), but I have been lost with trying to find
any information online about this. It does not appear that what's being done
with a custom xorg driver is common (but I think is a very clever idea
here!). The only thing that seems remotely similar would be the dummy driver
(https://gitlab.freedesktop.org/xorg/driver/xf86-video-dummy). I've tried
manually setting the "depth" field both via the .conf and through argument
to Xorg and that did not appear to have any effect. The command line to
launch Xorg that I currently have is:

Xorg -noreset -depth 24 +extension GLX +extension RANDR +extension RENDER :1

I had to install the mesa-dri-drivers package to get the GLX extension to
load properly (I'm not even positive it's needed).

I've been lost for a good day or two without any notion of how to proceed. I
would greatly appreciate any help getting in the right direction. Thanks.

Christopher



--
Sent from: http://apache-guacamole-general-user-mailing-list.2363388.n4.nabble.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: Help with Guacamole using X11 Driver

cspeckrun
Mickaël,

Thank you for your advice! I will try this out. However I thought that by using the X11 driver that VNC was not required? From the Jira issue about this (https://issues.apache.org/jira/browse/GUACAMOLE-168) it says:

>If we were to implement a Guacamole driver for X.Org, we would be able to make much greater use Guacamole protocol features like client-side compositing. Operations which are typically expensive in VNC or RDP like window movement suddenly become simple, as they only involve updating the properties of a layer.

I interpreted that as meaning X11 is an alternative or replacement to VNC or RDP. Is that not the case?

I will try out your suggestion and post my results. Thanks again

Christopher



On Jun 5, 2020, at 11:31 AM, Mickaël Bucas <[hidden email]> wrote:

Hello

I've found a solution to run an X server that is not linked to any hardware.
I use it to open a session on machines where another user is already connected.

-----------------------8<-----------------------------
# Set my DISPLAY to something else than :0.0
export DISPLAY=:1

# Start the X server Virtual Frame Buffer
# Only the display is mandatory. The screen size is for the best experience on the navigator with Guacamole
# Notice the "&" to let next commands to run
Xvfb $DISPLAY -screen 0 1680x1050x24 &

# Wait for the X11 server before starting KDE
sleep 3

# Start a full KDE session
plasma_session &

# The most important part for Guacamole : the VNC server used by Guacamole
x11vnc -rfbport 5901 -rfbauth /home/mick/x11vnc.pass -noxdamage -display $DISPLAY &
-----------------------8<-----------------------------

These components are all in existence for a long time so I believe they are good starting points for experimentation.
I hope that mixing your research with them will lead you to your expected result.
According to your description, you could replace the "plasma_session" command with your GUI application.

Tell us if you make progress !

Best regards
Mickaël Bucas


Le ven. 5 juin 2020 à 04:50, cspeckrun <[hidden email]> a écrit :
Hello I've been working on getting Apache Guacamole up and running using the
X11 driver fork on https://github.com/mike-jumper/guacamole-server and I've
been running into difficulties. I am new to both Guacamole and Xorg.

My goal is to create a headless linux system running the xorg server with
guacamole driver (and no other display drivers installed or even any display
devices attached to the system), and will run a GUI application. With the
GUI application running on the headless linux machine a guacamole-client
will be connected and allow using the GUI application through the Guacamole
web app.

What I've done so far:
1. Rebased the xf86-video-gauc branch onto the 1.1.0 release tag, for both
guacamole-client and guacamole-server.
2. Compiled guacamole-server on a CentOS 7 system, installed along with it
the xorg server and the GUI application.
3. Compiled gaucamole-client and set up a simple tomcat server for testing
purposes, connected this to the guacamole-server and created some basic
accounts (no backing database). It sets up user-mapping.xml defining a
single user with a connection using the xorg protocol.
4. Running both the guacamole-server (along with xorg and the application),
and the guacamole-client I'm able to log into Guacamole and have it
establish a session with the xorg server.

The result is that when logging into Guacamole there is what appears to be a
gray box that is my GUI application (I think at 1024x768). I can verify that
moving the cursor over this gray box results in changes of the cursor where
expected (turns to standard "I" cursor when hovering over what should be a
text field and into "resize" cursor when hovered over what should be
draggable parts). I can also verify that by clicking on expected areas of
the application that it is responding appropriately (via the application's
logs). However the issue is that the application itself is not rendering
properly, as it's just a solid gray box.

I would appreciate any help in uncovering what the issue might be. I believe
this is likely an issue with how Xorg is configured (I'm using the example
.conf file from the repository), but I have been lost with trying to find
any information online about this. It does not appear that what's being done
with a custom xorg driver is common (but I think is a very clever idea
here!). The only thing that seems remotely similar would be the dummy driver
(https://gitlab.freedesktop.org/xorg/driver/xf86-video-dummy). I've tried
manually setting the "depth" field both via the .conf and through argument
to Xorg and that did not appear to have any effect. The command line to
launch Xorg that I currently have is:

Xorg -noreset -depth 24 +extension GLX +extension RANDR +extension RENDER :1

I had to install the mesa-dri-drivers package to get the GLX extension to
load properly (I'm not even positive it's needed).

I've been lost for a good day or two without any notion of how to proceed. I
would greatly appreciate any help getting in the right direction. Thanks.

Christopher



--
Sent from: http://apache-guacamole-general-user-mailing-list.2363388.n4.nabble.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]


Reply | Threaded
Open this post in threaded view
|

Re: Help with Guacamole using X11 Driver

vnick
On Fri, Jun 5, 2020 at 12:34 PM Christopher Speck <[hidden email]> wrote:
Mickaël,

Thank you for your advice! I will try this out. However I thought that by using the X11 driver that VNC was not required? From the Jira issue about this (https://issues.apache.org/jira/browse/GUACAMOLE-168) it says:

>If we were to implement a Guacamole driver for X.Org, we would be able to make much greater use Guacamole protocol features like client-side compositing. Operations which are typically expensive in VNC or RDP like window movement suddenly become simple, as they only involve updating the properties of a layer.

I interpreted that as meaning X11 is an alternative or replacement to VNC or RDP. Is that not the case?


Yes, the intent of the JIRA issue you mentioned is to provide direct Guacamole protocol support for X11, which will be more efficient than RDP or VNC from a protocol perspective.  There will certainly be other considerations - like session management and the like - but overall it is intended to be an alternative to other remote protocols that may be faster.

However, since it is still in development, I think the suggestion was that there are other methods you can use in the meantime, like RDP and VNC, which may be more stable and better supported until the driver is ready.

-Nick 
Reply | Threaded
Open this post in threaded view
|

Re: Help with Guacamole using X11 Driver

cspeckrun
@Mickaël,

I tried your suggestion but could not get things working. I set it up to manually run the guacd server because the Xvfb did not seem to load the x11 driver, and from my understanding running it through the driver vs. the service executable should not matter if the device driver isn’t being used. I followed the section in Chapter 5 of the User Guide to configure VNC but after getting the web server to connect to the guacd server it makes an initial connection but then times out waiting for something else to happen. I might try a few more things out over the weekend.


@Nick,

Thank you for clarifying about the X11 driver. To get things in the state I have them now I was following along with that Jira ticket and a few posts in this mailing list archive which made it sound like it using an application through this was functional (assuming session management etc. not functional though). I’m interested to learn more about this approach - are there more resources for learning about the X11 driver? I saw there is also a developer’s mailing list but it does not look like it has a searchable archive like this user’s mailing list has.



On Jun 5, 2020, at 12:47 PM, Nick Couchman <[hidden email]> wrote:

On Fri, Jun 5, 2020 at 12:34 PM Christopher Speck <[hidden email]> wrote:
Mickaël,

Thank you for your advice! I will try this out. However I thought that by using the X11 driver that VNC was not required? From the Jira issue about this (https://issues.apache.org/jira/browse/GUACAMOLE-168) it says:

>If we were to implement a Guacamole driver for X.Org, we would be able to make much greater use Guacamole protocol features like client-side compositing. Operations which are typically expensive in VNC or RDP like window movement suddenly become simple, as they only involve updating the properties of a layer.

I interpreted that as meaning X11 is an alternative or replacement to VNC or RDP. Is that not the case?


Yes, the intent of the JIRA issue you mentioned is to provide direct Guacamole protocol support for X11, which will be more efficient than RDP or VNC from a protocol perspective.  There will certainly be other considerations - like session management and the like - but overall it is intended to be an alternative to other remote protocols that may be faster.

However, since it is still in development, I think the suggestion was that there are other methods you can use in the meantime, like RDP and VNC, which may be more stable and better supported until the driver is ready.

-Nick 

Reply | Threaded
Open this post in threaded view
|

Re: Help with Guacamole using X11 Driver

Dashamir Hoxha
In reply to this post by cspeckrun
On Fri, Jun 5, 2020 at 4:50 AM cspeckrun <[hidden email]> wrote:

My goal is to create a headless linux system running the xorg server with
guacamole driver (and no other display drivers installed or even any display
devices attached to the system), and will run a GUI application. With the
GUI application running on the headless linux machine a guacamole-client
will be connected and allow using the GUI application through the Guacamole
web app.

I am not sure I understand what you are trying to do, but the words "headless linux system" make me think that maybe you are looking for something like this: https://katacoda.com/dashohoxha/courses/docker-scripts/virtual-computer-lab
I ask your pardon if I am completely off topic.

Dashamir