TurboVNC seems to no longer have the -nohttpd option

I recently update my compute nodes with the latest patches and fixes. I believe it updated TurboVNC since interactive desktops would no longer work in OOD. I tracked it down to the “-nohttpd” option that is passed to vncserver when the session starts. It appears that the latest TurboVNC on rhel8(rocky 8) dropped that option. I’m using the official TurboVNC repository from turbovnc.org to install it. It looks like I’m on version 2.2.90-20211222.

I was able to temporarily resolve the issue by removing the “-nohttpd” option from the /opt/ood/ondemand/root/usr/share/gems/2.7/ondemand/2.0.20/gems/ood_core-0.18.1/lib/ood_core/batch_connect/templates/vnc.rb file on the OOD server.

Has anyone else had this issue?

Hi Shawn,
Thank you for sharing this!
In addition, we had to add:

unset DBUS_SESSION_BUS_ADDRESS

near the top of the
/var/www/ood/apps/sys/bc_desktop/template/script.sh.erb file, otherwise
the session died with a dbus error:

" - Error in dbus - GDBus.Error:org.freedesktop.DBus.Error.AccessDenied:
Permission denied"

-Dj

@deej

You should set that unset DBUS_SESSION_BUS_ADDRESS globally instead of modifying that template/script.sh.erb that we distribute. It’ll get updated when you update the RPM.

https://osc.github.io/ood-documentation/latest/reference/files/submit-yml-erb.html#setting-batch-connect-options-globally

You can set the header or script_wrapper for all vnc type jobs.

Nice tip! Thanks Jeff!

-Dj

yep, just hit that on CentOS 7 as well after updating our compute nodes which pulled in turbovnc-2.2.90-20211222.x86_64 from the turbovnc repo. the /opt/TurboVNC/bin/vncserver in that release lacks the -no-httpd option. I did a
yum downgrade turbovnc-2.2.6.x86_64
on all my nodes to the previously working for us version turbovnc-2.2.6.x86_64.

We encountered this as well at UAB. Fun tip, TurboVNC uses the x.y.90 version as Beta 1 for the next major release. In this case 2.2.90 is really 3.0 Beta 1!

It’s unfortunate that they use that approach as it means that Yum, Apt, etc… will happily upgrade all 2.y to the 3.0 Beta.

I opened an issue with TurboVNC about the lack of documentation about the removal of -nohttpd

The man page would not mention that a command-line option has been removed. It would simply cease to contain a description of that option, the implication being that you should not use any command-line options that are not therein described. The change log entry 3.0 beta1[6] implies that all command-line options and configuration directives associated with the built-in HTTP server were removed along with that feature. (It isn’t common practice for software to retain command-line options for a non-existent feature.) However, I will modify the change log to make that explicit.

They have also added a new argument, -novnc. The way I read it, -nohttpd is now the default behavior when starting vncserver, and -novnc is now used to start a NoVNC server along with the VNC server.

-novnc novnc-dir
Automatically start a simple web server that serves up noVNC (an HTML 5/JavaScript VNC viewer) from directory novnc-dir when starting a TurboVNC session. vncserver tracks the process ID of the noVNC web server and automatically kills that process along with the TurboVNC session. noVNC works in any web browser (including on mobile devices), but since it only supports VNC Password authentication, it is strongly recommended that it be used only with one-time passwords unless the connections are encrypted (see -x509cert and -x509key below.) The performance of noVNC will generally be much less than that of the TurboVNC Viewer.

Hi Mike.

Welcome to the Open Ondemand community.

Thank you for the information that you have provided. It’s very helpful.

Thanks,
-gerald

Doing a yum downgrade turbovnc solves the issue for us, for now at least.

I removed the -nohttpd arg from /opt/ood/ondemand/root/usr/share/gems/2.7/ondemand/2.0.20/gems/ood_core-0.18.1/lib/ood_core/batch_connect/templates/vnc.rb as recommended by @ssivy but that did not resolve the issue. It seems that somewhere else in the stack, -nohttpd is still being applied.

Also, @jeff.ohrstrom, based on the VNC launch command in vnc.rb it looks like any VNC options specified in /etc/ood/config/clusters.d/ are inserted downstream of the -nohttpd, meaning that setting extra_args: "" is not going to remove that option. Is that correct?

Does OSC have a recommended way to solve this problem other than patching core OOD Ruby?

OSC uses a module instead of the RPM installation, so that could be a route to shield yourself from yum updates.

I ended up installing an earlier version of TurboVNC (version 2.2.7) and put the following line at the end of the TurboVNC.repo file:

exclude=turbovnc-..9[0-9]-*

Yes you can see how the line is generated here.

Turbovnc 3.x is has been released - if you want to keep 2.x which supports the -nohttpd option, then modify @ssivy suggested exclude in /etc/yum.repos.d/TurboVNC.repo to read
exclude=turbovnc-.9[0-9]-, turbovnc-3*
and hope there’s no security fixes that mandate an upgrade to turbovnc 3.x