noVNC: HTML VNC Client Library and Application

Description.

noVNC is both a HTML VNC client JavaScript library and an application built on top of that library. noVNC runs well in any modern browser including mobile browsers (iOS and Android).

Many companies, projects and products have integrated noVNC including OpenStack , OpenNebula , LibVNCServer , and ThinLinc . See the Projects and Companies wiki page for a more complete list with additional info and links.

Table of Contents

News/help/contact, screenshots, browser requirements, server requirements, quick start, installation from snap package, integration and deployment, authors/contributors.

The project website is found at novnc.com . Notable commits, announcements and news are posted to @noVNC .

If you are a noVNC developer/integrator/user (or want to be) please join the noVNC discussion group .

Bugs and feature requests can be submitted via github issues . If you have questions about using noVNC then please first use the discussion group . We also have a wiki with lots of helpful information.

If you are looking for a place to start contributing to noVNC, a good place to start would be the issues that are marked as “patchwelcome” . Please check our contribution guide though.

If you want to show appreciation for noVNC you could donate to a great non- profits such as: Compassion International , SIL , Habitat for Humanity , Electronic Frontier Foundation , Against Malaria Foundation , Nothing But Nets , etc. Please tweet @noVNC if you do.

  • Supports all modern browsers including mobile (iOS, Android)
  • Supported VNC encodings: raw, copyrect, rre, hextile, tight, tightPNG
  • Supports scaling, clipping and resizing the desktop
  • Local cursor rendering
  • Clipboard copy/paste
  • Translations
  • Touch gestures for emulating common mouse actions
  • Licensed mainly under the MPL 2.0 , see the license document for details

Running in Firefox before and after connecting:

See more screenshots here .

noVNC uses many modern web technologies so a formal requirement list is not available. However these are the minimum versions we are currently aware of:

  • Chrome 64, Firefox 79, Safari 13.4, Opera 51, Edge 79

noVNC follows the standard VNC protocol, but unlike other VNC clients it does require WebSockets support. Many servers include support (e.g. x11vnc/libvncserver , QEMU , and MobileVNC ), but for the others you need to use a WebSockets to TCP socket proxy. noVNC has a sister project websockify that provides a simple such proxy.

Use the novnc_proxy script to automatically download and start websockify, which includes a mini-webserver and the WebSockets proxy. The --vnc option is used to specify the location of a running VNC server:

./utils/novnc_proxy --vnc localhost:5901

Point your browser to the cut-and-paste URL that is output by the novnc_procy script. Hit the Connect button, enter a password if the VNC server has one configured, and enjoy!

Running the command below will install the latest release of noVNC from Snap:

sudo snap install novnc

Running noVNC

You can run the Snap-package installed novnc directly with, for example:

novnc --listen 6081 --vnc localhost:5901 # /snap/bin/novnc if /snap/bin is not in your PATH

Running as a Service (Daemon)

The Snap package also has the capability to run a ‘novnc’ service which can be configured to listen on multiple ports connecting to multiple VNC servers (effectively a service runing multiple instances of novnc). Instructions (with example values):

List current services (out-of-box this will be blank):

Create a new service that listens on port 6082 and connects to the VNC server running on port 5902 on localhost:

sudo snap set novnc services.n6082.listen=6082 services.n6082.vnc=localhost:5902

(Any services you define with ‘snap set’ will be automatically started) Note that the name of the service, ‘n6082’ in this example, can be anything as long as it doesn’t start with a number or contain spaces/special characters.

View the configuration of the service just created:

Disable a service (note that because of a limitation in Snap it’s currently not possible to unset config variables, setting them to blank values is the way to disable a service):

sudo snap set novnc services.n6082.listen='' services.n6082.vnc=''

(Any services you set to blank with ‘snap set’ like this will be automatically stopped)

Verify that the service is disabled (blank values):

Please see our other documents for how to integrate noVNC in your own software, or deploying the noVNC application in production environments:

  • Embedding - For the noVNC application
  • Library - For the noVNC JavaScript library

See AUTHORS for a (full-ish) list of authors. If you’re not on that list and you think you should be, feel free to send a PR to fix that.

  • Joel Martin
  • Samuel Mannehed (Cendio)
  • Solly Ross (Red Hat / OpenStack)
  • Pierre Ossman (Cendio)
  • UI and Icons : Pierre Ossman, Chris Gordon
  • Original Logo : Michael Sersen
  • tight encoding : Michael Tinglof (Mercuri.ca)
  • base64 : Martijn Pieters (Digital Creations 2), Samuel Sieb (sieb.net)
  • DES : Dave Zimmerman (Widget Workshop), Jef Poskanzer (ACME Labs)
  • Pako : Vitaly Puzrin (https://github.com/nodeca/pako)

Do you want to be on this list? Check out our contribution guide and start hacking!

My thoughts on Slackware, life and everything

  • Alien’s ARM
  • PDO Powered
  • Cloud Server
  • Slackware Artwork
  • Privacy Policy
  • Your feedback (older)
  • Remote access to your VNC server via modern browsers

novnc safari

For me the answer is simple: I work for a company that runs Linux in its datacenters but offers only Windows 10 on its user desktops and workstations. Sometimes you need to test work related stuff on an Internet-connected Linux box. But even more importantly: when I travel, I may need access to my tools – for instance to fix issues with my repositories, my blog, my build server, or build a new package for you guys.

This article documents how I created and run such a 24/7 graphical desktop session and how I made it easily accessible from any location, without being restricted by firewalls or operating systems not under my control. For instance, my company’s firewall/proxy only allows access to HTTP(S) Internet locations; for me a browser-based access to my remote desktop is a must-have.

How to run & access a graphical Linux desktop 24/7 ?

Here’s how: we will use Apache, VNC and noVNC .

VNC or Virtual Network Computing is a way to remotely access another computer using the RFB ( Remote Frame Buffer ) protocol. The original VNC implementation is open source. In due time, lots of cross-platform clients and servers have been developed for most if not all operating systems. Slackware ships with an optimized implementation which makes it possible to work in a remote desktop even over low-bandwidth connections.

There’s  one thing you should know about VNC. It is a full-blown display server. Many people configure a VNC server to share their primary, physical desktop (your Linux Xserver based desktop or a MS Windows desktop) with remote VNC clients. VNC is also how IT Help Desks sometimes offer remote assistance by taking control over your mouse, keyboard and screen. But I want to run a VNC server ‘ headless ‘. This means, that my VNC server will not connect to a physical keyboard, mouse and monitor. Instead, it will offer virtual access to these peripherals. Quite similar to X.Org, which also provides what is essentially a network protocol for transmitting key-presses, mouse movements and graphics updates. VNC builds on top of X.Org and thus inherits these network protocol qualities.

Start your engines

Get a computer (or two).

First, you will have to have a spare desktop computer which does not consume too much power and which you can keep running all day without bothering the other members of your family (the cooling fans of a desktop computer in your bedroom will keep people awake).

Next, install Slackware Linux on it (any Linux distro will do; but I am biased of course). You can omit all of the KDE packages if you want. We will be running XFCE. Also install ‘tigervnc’ and ‘fltk’ packages from Slackware’s ‘extra’ directory. The tigervnc  package installs both a VNC client and a VNC server.

Note that  the version of  TigerVNC server which ships in Slackware 15.0 and onwards behaves differently than described in this article (which focuses more on the NoVNC part). I recommend reading my follow-up article “ Challenges with TigerVNC in Slackware 15.0 ” before continuing with the remainder of this page, and follow the VNC server instructions as shown in that other article .

You can store this server somewhere in a cupboard or in the attic, or in the basement: you will not have a need to access the machine locally. It does not even have to have a keyboard/mouse/monitor attached after you have finished implementing all the instructions in this article.

You may of course want to use a second computer – this one would then act as the client computer from which you will access the server.

In my LAN, the server will be configured with the hostname “darkstar.example.net”. This hostname will be used a lot in the examples and instructions below. You can of course pick and choose any hostname you like when creating your own server. I also use the Internet domain “lalalalala.org” in the example at the end where I show how to connect to your XFCE desktop from anywhere on the Internet. I do not own that domain, it’s used for demonstrative purposes only, so be gentle with it.

Run the XFCE desktop

Let’s start a VNC server and prepare to run a XFCE graphical desktop inside.

alien@darkstar:~$ vncserver -noxstartup You will require a password to access your desktops. Password: Verify: Would you like to enter a view-only password (y/n)? n New 'darkstar.example.net:1 (alien)' desktop is darkstar.example.net:1 Creating default config /home/alien/.vnc/config Log file is /home/alien/.vnc/darkstar.example.net:1.log

What we did here was to allow the VNC server to create the necessary directories and files but I prevented its default behavior to start a “Twm” graphical desktop. I do not want that pre-historic desktop, I want to run XFCE.

You can check that there’s a VNC server running now on “darkstar.example.net:1”, but still without a graphical desktop environment inside. Start a VNC client and connect it to the VNC server address (highlighted in red above):

alien@darkstar:~$ vncviewer darkstar.example.net:1 TigerVNC Viewer 64-bit v1.10.1 Built on: 2019-12-20 22:09 Copyright (C) 1999-2019 TigerVNC Team and many others (see README.rst) See https://www.tigervnc.org for information on TigerVNC. ...

The connection of the VNC client to the server was successful, but all you will see is a black screen – nothing is running inside as expected. You can exit the VNC viewer application and then kill the VNC server like this:

alien@darkstar:~$ vncserver -kill :1

The value I passed to the parameter “-kill” is “:1”. This “:1” is a pointer to your active VNC session. It’s that same “:1” which you saw in the red highlighted “ darkstar.example.net:1 ” above. It also corresponds to a socket file in ” /tmp/.X11-unix/”. For my VNC server instance with designation “:1” the corresponding socket file is “X1”. The “kill” command above will communicate with the VNC server through that socket file.

Some more background on VNC networking follows, because it will help you understand how to configure noVNC and Apache later on. The “:1” number does not only correspond to a socket; it translates directly to a TCP port: just add 5900 to the value behind the colon and you get the TCP port number where your VNC server is listening for client connections. In our case, “5900 + 1” means TCP port 5901. We will use this port number later on .

If you had configured VNC server to share your physical X.Org based desktop (using the ‘x11vnc’ extension), then a VNC server would be running on “:0” meaning TCP port 5900. And if multiple users want to run a VNC server on your computer, that is entirely possible! Every new VNC server session will get a new TCP port assigned (by default the first un-assigned TCP port above 5900). It’s also good to know that the VNC server binds to all network interfaces, including the loop-back address. So the commands “vncviewer darkstar.example.net:1” and “vncviewer localhost:1” give identical result when you start a VNC client on the machine which is also running the VNC server.

Enough with the theory, we need that XFCE session to run! When a VNC server starts, it looks for a script file called “~/.vnc/xstartup” and executes that. This script should start your graphical desktop.

So let’s create a ‘xstartup’ script for VNC, based on Slackware’s default XFCE init script:

alien@darkstar:~$ cp /etc/X11/xinit/xinitrc.xfce ~/.vnc/xstartup alien@darkstar:~$ vi ~/.vnc/xstartup

Edit that ‘xstartup’ script and add the following lines. They should be the first lines to be executed, so add them directly before the section “ Merge in defaults and keymaps “:

vncconfig -iconic & unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS

Add the following lines immediately before the section “ Start xfce Desktop Environment ” to ensure that your desktop is locked from the start and no-one can hi-jack your unprotected VNC session before you have a chance to connect to it:

# Ensure that we start with a locked session: xscreensaver -no-splash & xscreensaver-command -lock &

In order for these commands to actually work, you may have to run “xscreensaver-demo” once, the first time you login to your desktop in VNC, and configure the screensaver properly.

Into the future

This ends the preparations. From now on, you will start your VNC server (hopefully once per reboot) with the following simple command without any parameters:

alien@darkstar:~$ vncserver

That’s it. You have a XFCE desktop running 24/7 or until you kill the VNC server. You can connect to that VNC server with a VNC client (on Slackware that’s the vncviewer program) just like I showed before, and configure your XFCE desktop to your heart’s content. You can close your VNC client at any time and reconnect to the VNC server at a later time – and in the meantime your XFCE desktop will happily keep on running undisturbed. You can  connect to your VNC server from any computer as long as that computer has a VNC client installed and there’s a network connection between server and client.

How to make that graphical desktop available remotely ?

So now we have a VNC server running with a XFCE desktop environment inside it. You can connect to it from within the LAN using your distro’s VNC viewer application. And now we will take it to the next level: make this Linux XFCE desktop available remotely using a browser based VNC client.

We will require NoVNC software and a correctly configured Apache httpd server. Apache is part of Slackware, all we need to do is give it the proper config, but NoVNC is something we need to download and configure first.

The noVNC software is a JavaScript based VNC client application which uses HTML5 WebSockets and Canvas elements. It requires a fairly modern browser like Chromium, Firefox, and also mobile browsers (Android and i/OS based) will work just fine. With your browser, you connect to the noVNC client URL. Apache’s reverse proxy connects the noVNC client to a WebSocket and that WebSocket in turn connects to your VNC server port.

Some VNC servers like x11vnc and libvncserver contain the WebSockets support that noVNC needs, but our TigerVNC based server does not have WebSocket support. Therefore we will have to add a WebSockets-to-TCP proxy to our noVNC installation. Luckily, the noVNC site offers such an add-on.

Get the most recent noVNC ‘tar.gz’ archive (at the moment that is version 1.4.0) from here: https://github.com/novnc/noVNC/releases . As root, extract the archive somewhere to your server’s hard disk, I suggest /usr/local/ :

# tar -C /usr/local -xvf noVNC-1.4.0.tar.gz # ln -s noVNC-1.4.0 /usr/local/novnc

The symlink “/usr/local/novnc” allows you to create an Apache configuration which does not contain a version number, so that you can upgrade noVNC in future without having to reconfigure your Apache. See below for that Apache configuration. We also need to download the WebSockets proxy implementation for noVNC:

# cd /usr/local/novnc/utils/ # git clone https://github.com/novnc/websockify websockify

You will have to start the WebSockets software for noVNC as a non-root local account. That account can be your own user or a local account which you specifically use for noVNC. My suggestion is to start noVNC as your own user. That way, multiple users of your server would be able to start their own VNC session and noVNC acccess port. I start the noVNC script in a ‘ screen ‘ session (the ‘screen’ application is a console analog of VNC) so that noVNC keeps running after I logoff. Whether or not you use ‘ screen ‘, or ‘ tmux ‘, the actual commands to start noVNC are as follows (I added the output of these commands as well):

$ cd /usr/local/novnc/ $  ./utils/novnc_proxy --vnc localhost: 5901 Warning: could not find self.pem Using local websockify at /usr/local/novnc/utils/websockify/run Starting webserver and WebSockets proxy on port 6080 websockify/websocket.py:30: UserWarning: no 'numpy' module, HyBi protocol will be slower  warnings.warn("no 'numpy' module, HyBi protocol will be slower") WebSocket server settings:  - Listen on : 6080 - Web server. Web root: /usr/local/novnc  - No SSL/TLS support (no cert file)  - proxying from :6080 to localhost:5901 Navigate to this URL:    http://baxter.dyn.barrier.lan:6080/vnc.html?host=baxter.dyn.barrier.lan&port=6080 Press Ctrl-C to exit

I highlighted some of the output in red. It shows that I instruct noVNC (via the commandline argument “–vnc”) to connect to your VNC server which is running on localhost’s TCP port 5901 (remember that port number from earlier in the article when we started vncserver ?) and the noVNC WebSockets proxy starts listening on port 6080 for client connection requests. We will use that port 6080 later on, in the Apache configuration.

From this moment on, you can already access your VNC session in a browser, using the URL provided in the command output. But this only works inside your LAN, and the connection is un-encrypted (using HTTP instead of HTTPS) and not secured (no way to control or limit access to the URL). The next step is to configure Apache and provide the missing pieces.

Making your Apache work securely using HTTPS protocol (port 443) means you will have to get a SSL certificate for your server and configure ‘httpd’ to use that certificate. I wrote an article on this blog recently which explains how to obtain and configure a free SSL certificate for your Apache webserver. Go check that out first!

Once you have a local webserver running securely over HTTPS, let’s add a block to create a reverse proxy in Apache. If you are already running Apache and have VirtualHosts configured, then you should add the below block to any of your VirtualHost definitions. Otherwise, just add it to /etc/httpd/httpd.conf .

Alias / aliensdesktop /usr/local/novnc # Route all HTTP traffic at / aliensdesktop to port 6080 ProxyRequests Off ProxyVia on ProxyAddHeaders On ProxyPreserveHost On <Proxy *> Require all granted </Proxy> # This will not work when you use encrypted web connections (https): #<Location /websockify> # Require all granted # ProxyPass ws://localhost: 6080 /websockify # ProxyPassReverse ws://localhost: 6080 /websockify #</Location> # But this will: # Enable the rewrite engine # Requires modules: proxy rewrite proxy_http proxy_wstunnel # In the rules/conditions, we use the following flags: # [NC] == case-insensitve, [P] == proxy, [L] == stop rewriting RewriteEngine On # When websocket wants to initiate a WebSocket connection, it sends an # "upgrade: websocket" request that should be transferred to ws:// RewriteCond %{HTTP:Connection} Upgrade [NC] RewriteCond %{HTTP:Upgrade} =websocket [NC] RewriteRule /(.*) ws://127.0.0.1: 6080 /$1 [P,L] <Location / aliensdesktop /> Require all granted # Delivery of the web files ProxyPass http://localhost: 6080 / ProxyPassReverse http://localhost: 6080 / </Location>

Again, I highlighted the bits in red which you can change to fit your local needs.

The “Alias” statement in the first line is needed to make our noVNC directory visible to web clients, since it is not inside the Apache DocumentRoot (which is “/srv/httpd/htdocs/” by default). I do not like having actual content inside the DocumentRoot directory tree (you never know when you accidentally create a hole and allow the bad guys access to your data) so using an Alias is a nice alternative approach.

You will probably already have noticed that Apache’s reverse proxy will connect to “localhost”. This means you can run a local firewall on the server which only exposes ports 80 and 443 for http(s) access. There is no need for direct remote access to port 6080 (novnc’s websocket) or 5901 (your vncserver).

Check your Apache configuration for syntax errors and restart the httpd if all is well:

# apachectl configtest # /etc/rc.d/rc.httpd restart

Now if you connect a browser to https://darkstar.example.net/aliensdesktop/vnc.html and enter the following data into the connection box:

  • Host: darkstar.example.net
  • Password: the password string you defined for the VNC server
  • Token: leave empty

Then press “Connect”. You will get forwarded to your XFCE session running inside the VNC server. Probably the XFCE screen lock will be greeting you and if you enter your local account credentials, the desktop will unlock.

You can expand this Apache configuration with additional protection mechanisms. That is the power of hiding a simple application behind an Apache reverse proxy : the simple application does what it does best, and Apache takes care of all the rest, including data encryption and access control. You could think of limiting access to the noVNC URL to certain IP addresses or domain names. or you can add a login dialog in front of the noVNC web page. Be creative.

Configure your ISP’s router

My assumption is that your LAN server is behind a DSL, fiber or other connection provided by a local Internet Service Provider (ISP). The ISP will have installed a modem/router in your home which connects your home’s internal network to the Internet.

So the final step is to ensure that the HTPS port (443) of your LAN server is accessible from the internet. For this, you will have to enable ‘port-forwarding’ on your Internet modem/router. The exact configuration will depend on your brand of router, but essentially you will have to forward port 443 on the router to port 443 on your LAN server’s IP address.

If you have been reading this far, I expect that you are serious about implementing noVNC. You should have control over an Internet domain and the Internet-facing interface of your ISP’s modem/router should be associated with a hostname in your domain. Let’s say, you own the domain “lalalalala.org” and the hostname “alien.lalalalala.org” points to the public IP address of your ISP’s modem. Then anyone outside of your home (and you too inside your home if the router is modern enough) can connect to: https://alien.lalalalala.org/aliensdesktop/vnc.html and enter the following data into the connection box in order to connect to your VNC session:

  • Host: alien.lalalalala.org

That’s it! I hope it was all clear. I love to hear your feedback. Also, if certain parts need clarification or are just not working for you, let me know in the comments section below.

Cheers, happy holidays, Eric

Share this:

Linux , Me , Software

novnc proxy rdp remote reverse Slackware vnc

30 Comments

' src=

December 24, 2019 at 00:00

Thanks Eric!!!.

Material to read for this holidays…. Merry Xmas. Thanks for sharing this!.

Happy Holidays, Francisco.

' src=

December 24, 2019 at 05:50

Thanks Eric!

' src=

December 24, 2019 at 09:07

This is cool. Gives me yet another reason to get my own domain. Merry Christmas.

' src=

March 12, 2020 at 04:31

Hi Eric, Thanks for this article. I recently changed jobs, and unlike at my previous office, I don’t have admin privileges on my office pc, and the firewall is a lot more restrictive. Therefore I am no longer able to use an openvpn client to reach my home network via the openvpn server running on my router.

Just in time, I read your article about noVNC. First I had to learn the basics of apache and openssl, and following your “Using Let’s Encrypt to Secure your Slackware webserver with HTTPS” https://alien.slackbook.org/blog/using-letsencrypt-to-secure-your-slackware-webserver-with-https/ set up my apache server first, and eventually I was able to set up noVNC to access my desktop at home (I used the physical desktop on display :0 instead of a virtual desktop).

I set up a password in apache, so there are three layers of protection before I can get into my desktop (passwords for apache, vncserver, and the lock screen on the desktop). My router is a mini pc with Slackware 14.2 on it, and I used your invaluable firewall creator tool, http://www.slackware.com/~alien/efg/ to set up the firewall on it. This leads to my question. It was unclear to me the reason you recommended to set up a local firewall on the desktop, and just allow ports 80 and 443 to it from the LAN. Why is this extra security necessary? My LAN should be fairly secure, being behind the firewall on the router, shouldn’t it?

Another question I have is perhaps more related to your latest aricle, “Setting up an Outline server to bypass state firewalls” https://alien.slackbook.org/blog/setting-up-an-outline-server-to-bypass-state-firewalls/ . Long time ago I set up a similar solution, using stunnel. I followed this guide, “Make a VPN Server with a Raspberry Pi, OpenVPN and Stunnel” https://www.youtube.com/redirect?event=video_description&v=nnQDiGBFIXk&q=http%3A%2F%2Fwww.farrellf.com%2Fprojects%2Fsoftware%2F2016-05-04_Running_a_VPN_Server_with_OpenVPN_and_Stunnel%2F&redir_token=eD1F2TC34DJA7qu-Aowv1jP-scZ8MTU4NDA2OTU3NUAxNTgzOTgzMTc1 , and modified it for my slackware router. With it, I could browse the internet unhindered on my mobile phone and on my laptop from abroad. Stunnel uses port 443, so I had to turn it off because now apache/noVNC uses that port. I think stunnel could be set up to use another port, but doing so may be problematic. Do you see an obvious solution that would allow stunnel and noVNC to work simultaneously?

' src=

March 12, 2020 at 20:09

Some answers:

> the reason you recommended to set up a local firewall on the desktop, > and just allow ports 80 and 443 to it from the LAN. Why is this extra security necessary? > My LAN should be fairly secure, being behind the firewall on the router, shouldn’t it? I was talking about the server there, not a desktop. You should not open up more ports on a server than necessary, and for the purpose of an NoVNC server you do not need to expose more than ports 80 and 443. Your own setup can of course be as insecure as you want.

> Do you see an obvious solution that would allow stunnel and noVNC to work simultaneously? I think you should have a look at sslh, a ssl/ssh multiplexer which also understands openvpn and http traffic ; see http://www.rutschle.net/tech/sslh/README.html On slackbuilds.org you can find a script to build a package for sslh: https://slackbuilds.org/repository/14.2/network/sslh/

March 14, 2020 at 16:06

This looks promising. I’ll give it a try. Thank you, Eric!

' src=

March 29, 2020 at 18:44

I couldn’t clone websockify, git wants /usr/share/curl/ca-bundle.crt. So I got around that with mkdir /usr/share/curl ln -sv /usr/share/ncat/ca-bundle.crt /usr/share/curl/ca-bundle.crt to make git clone websockify work. The only packages with ca-bundle.crt are kdelibs and kdelibs4support from ktown which are identical, and the newer, larger one from nmap.

March 29, 2020 at 21:12

Henry, I guess you are not fully up-to-date with your Slackware-current. I have no problems running the ‘git clone’ commandline from the article and I have curl-7.69.1-x86_64-3 installed.

March 30, 2020 at 19:14

To prevent git form looking for ca-bundle.crt, issue this command: git config –global http.sslverify “false”

March 30, 2020 at 19:16

Correction: To prevent git FROM looking for ca-bundle.crt, issue this command: git config –global http.sslverify “false”

Please delete my reply dated March 30, 2020 at 19:06 #comment-37225

March 30, 2020 at 19:06

While troubleshooting a wpa_supplicant authenticate issue (router had cached a different MAC address, rtl8188ee kept changing the address during power-on), I rsync’d slackware64-current from mirrors.slackware.com and kde/deps from slackbook ktown.”find . -type f -name \*.txz | xargs upgradepkg –reinstall –install-new” to make sure fully up-to-date. /var/log/packages/curl-7.69.1-x86_64-3 does not contain /usr/share/curl, or ca-bundle.crt. “grep ca-bundle.crt /var/log/packages/*” does not contain /usr/share/curl. Git clone works fine on other github sites. The problem appears only with websockify, https://github.com/novnc/websockify.git Cloning into ‘websockify’… fatal: unable to access ‘https://github.com/novnc/websockify.git/’: error setting certificate verify locations: CAfile: /usr/share/curl/ca-bundle.crt CApath: none I’ve never encountered that error before

' src=

November 14, 2020 at 20:04

this looks so good i will be trying to do this on ubuntu

November 15, 2020 at 01:57

i get this im on ubuntu

Warning: could not find self.pem Using local websockify at /usr/local/noVNC-1.2.0/utils/websockify/run Starting webserver and WebSockets proxy on port 6080 /usr/local/noVNC-1.2.0/utils/websockify/run: 4: exec: python: not found Failed to start WebSockets proxy

January 22, 2021 at 18:45

I tested tigervnc using KDE. Opened vncviewer and ran firefox on the remote vncserver. Everything works.

' src=

June 1, 2021 at 16:00

This guide is excellent. Your explanations are exactly what I needed, and I’m looking forward to getting this going for me. Thank you!

' src=

February 5, 2022 at 05:11

Does this still work in 2022? Have there been any changes since the original posting? I’d like to view a proxmox VM of Slackware 15 xfce using novnc. Won’t be able to start attempting this for a few days, so I figured I’d ask ahead in case anything has changed over the years. Thank you!

February 5, 2022 at 11:05

Probably you should not follow the instructions to the letter, it is always good to read the official documentation ( https://github.com/novnc/noVNC/blob/master/README.md ) as well. For instance, ‘launch.sh’ was renamed to ‘novnc_proxy’ and this automatically will download (clone) websockify for you if you do not have it on your system yet. Other than that, I still use NoVNC on a daily basis so yes, it works.

February 5, 2022 at 16:17

Thank you. And thank you for the great work you do too.

' src=

July 18, 2022 at 07:28

Hello, I ran the novnc_proxy file and the command seemed to work perfectly, it even created a link for me to copy and paste in the browser, but whenever I do it, I get the error of DNS Address not found. I hope you can help me with diagnosing the error, thanking you in advance.

July 18, 2022 at 20:59

The link you talk about that you copied to your browser, will have looked like this: http:// darkstar.home.arpa :6080/vnc.html?host= darkstar.home.arpa &port=6080

The string “darkstar.home.arpa” will in your case be the actual hostname that you gave your computer. If your browser gives you “DNS Address not found” it means that you conjured a hostname for your computer that is not usable on your network. Pick a saner hostname and/or fix the DNS resolver on your local network. It’s something I cannot help you with.

December 17, 2022 at 18:18

For convenience, you may add this line to your non-root user’s crontab (crontab -e):

@reboot /usr/bin/screen -dmS noVNC /usr/local/novnc/utils/novnc_proxy –vnc localhost:5901

to start noVNC at system startup automatically in a detached screen session.

December 17, 2022 at 19:30

That is a nice generalization which also does not require root to modify any file. Because on my system I have this in /etc/rc.d/rc.local : /bin/su - alien -c "/usr/bin/screen -dmS NOVNC bash -c 'cd /usr/local/novnc ; ./utils/launch.sh --vnc localhost:5901'" Your solution is cleaner, although I will have to check where the difference is between my use of ‘launch.sh’ and your ‘novnc_proxy’.

December 18, 2022 at 06:59

Version 1.1.0 of noVNC, that was used in your article, had a ‘launch.sh’ file in the utils directory. In later versions (I use 1.3.0), it seems they renamed that to novnc_proxy.

December 18, 2022 at 12:35

That explains it 🙂

January 14, 2024 at 22:16

4 years later (see first post on this article) I felt “brave” to try this.

I just wanted to access my Slackware Desktop from another station in my LAN.

I spent some time and finally I had success after reading carefully each line and understanding each command.

Respectfully, some suggestions:

1. I started here (for the title) but this article should be updated, regarding vnc server setup, with the content of: “Challenges with TigerVNC in Slackware 15.0 “. At least a reference here at the beginning, because I spend time figuring out why starting the server this way did not work.

This important article could be split on the “easy case”: Accessing Slackware from a LAN and the a second part accessing it from the internet Joining both articles. I installed Slackware on a Linode server so I will test the hard part later…

2. So, I started setting up the server according to “Challenges.. article” and completing the xfce setup with this article.

3. xfce started nicely on tigervnc client on my local LAN. I just changed geometry to 1980×1024 on ‘/etc/tigervnc/vncserver-config-defaults on server side, as my VNC server is 4k resolution (laptop).

4. I expected to access mi PLASMA Desktop. So I applied the same procedure explained for xstartup script for XFCE but using and copying /etc/X11/xinit/xinitrc.kde and applying the changes (just by now the first set of changes) on that file.

5. Starting vncviewer I am getting active windows in plasma but no panel, no launcher for the plasma desktop. Screen resolution is not scaled to my VNC client. Xfce works perfect.

Is there any additional config to access Plasma desktop?

The normal use case is important for me as I have Slackware on a Proxmox server or my own laptop on My LAN and I want to access them locally.

Thanks for your advice and help in advance.

January 15, 2024 at 18:28

To start the noVNC script in a ‘screen‘ session, please update the article with this command as the launch command was changed after cloning websockify repository.

“` $ cd /usr/local/novnc/ $ ./utils/novnc_proxy –vnc localhost:5909 “` 5909 port as my user was defined on vnc to use that port. Important that note as I missed that point getting connection refused.

Thanks Eric for this very useful article.

January 15, 2024 at 20:28

Hi Francisco, look at my comment from December 17, 2022 at 18:18 that I paste below:

“For convenience, you may add this line to your non-root user’s crontab (crontab -e): @reboot /usr/bin/screen -dmS noVNC /usr/local/novnc/utils/novnc_proxy –vnc localhost:5901 to start noVNC at system startup automatically in a detached screen session.”

January 15, 2024 at 23:14

Thanks Karl. Very Kind.

January 15, 2024 at 18:29

“` $ cd /usr/local/novnc/ $ ./utils/novnc_proxy –vnc localhost:5909 “`

5909 port as my user was defined on vnc to use that port. Important that note as I missed that point getting connection refused.

' src=

February 3, 2024 at 22:19

Very good publication. Created solution for me on a separate subdomain. Unsuccessfully tried to solve directory contents listing with Options -Indexes and DirectoryIndex vnc.html

  • Links 24/12/2019: Cantor 19.12, antiX 19.1, HyperbolaBSD Roadmap | Techrights

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Notify me of new posts by email.

This site uses Akismet to reduce spam. Learn how your comment data is processed .

About this blog

Subscribe to blog via email.

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Email Address

My Favourites

  • Famous sed one-liners
  • GPG key management
  • How to use ip instead of ifconfig
  • iproute2 cheat sheet
  • Linux Questions
  • Steaming Penguins
  • Local Guide
  • My playlist
  • Spotify – Mixed Feelings
  • Ktown (KDE packages)
  • LQWiki Slackware FAQ
  • LQWiki Slackware links
  • Multilib stuff
  • My slackstuff
  • Robby’s place
  • slackbuilds.org
  • Slackware Documentation Project
  • Slackware Linux
  • Slackware Linux Essentials
  • Willy Sudiarto’s SlackBlogs

slackbuilds

  • Fri, 12 Apr 2024 13:56:11 GMT chromium-ungoogled: updated 64bit to 123.0.6312.122 (Slackware 15.0 & onwards). chromium: updated 64bit to 123.0.6312.122 (Slackware 15.0 & onwards).
  • Fri, 5 Apr 2024 05:27:14 GMT chromium-ungoogled: updated 64bit to 123.0.6312.105 (Slackware 15.0 & onwards). chromium: updated 64bit to 123.0.6312.105 (Slackware 15.0 & onwards).
  • Mon, 1 Apr 2024 15:52:53 GMT April 1, 2024 current/compat32-tools: added l/duktape and n/nss-mdns to massconvert32.sh. current/slackware64-compat32: Refreshed the *compat32 packages.
  • Fri, 1 Mar 2024 20:48:08 GMT March 1, 2024 current/compat32-tools: to massconvert32.sh added in the l/ series: avahi colord libass libdaemon libgusb libplacebo python-html5lib python-webencodings qt6. current/slackware64-compat32: Refreshed the *compat32 packages.

Slackware64-current

  • Sun, 14 Apr 2024 18:35:32 GMT April 14, 2024 a/less-653-x86_64-2.txz: Rebuilt. This update patches a security issue: less through 653 allows OS command execution via a newline character in the name of a file, because quoting is mishandled in filename.c. Exploitation typically requires use with attacker-controlled file names, such as the files extracted from an untrusted archive. Exploitation also requires the LESSOPEN environment variable, […]
  • SlackBuilds.org changes for Sat, 13 Apr 2024 15:04:57 GMT academic/WolframEngine: Updated for version 14.0.0. academic/fet: Updated for version 6.19.3. academic/plus42: Updated for version 1.1.9. academic/scidavis: Fix building on -current. audio/cardinal: Fix 32bit tarball handling. audio/cardinal: Updated for version 24.04. desktop/i3: Updated for version 4.23. desktop/nwg-hello: Updated for version 0.1.9. development/Catch2: Fix multilib check. development/Catch2: Updated for version 3.5.3. development/THE: Fix DOWNLOAD. development/THE: Updated for […]
  • Entries feed
  • Comments feed
  • WordPress.org

Top Posts & Pages

  • Slackware Cloud Server Series, Episode 1: Managing your Docker infrastructure
  • Slackware Live Edition
  • Slackware Cloud Server Series, Episode 3: Video Conferencing
  • My Docker packages for Slackware-current
  • Configuring Slackware for use as a DAW
  • Casting to your ChromeCast in Chromium
  • Slackware Cloud Server Series Episode 6: Etherpad with Whiteboard

Recent posts

  • In the works: LibreOffice 24.2.0 for Slackware 15.0 February 20, 2024
  • Down with COVID February 2, 2024
  • Chromium 121 for Slackware… don’t hold your breath January 24, 2024
  • I switched the Wiki theme as well January 11, 2024
  • I switched the blog’s theme December 28, 2023

Recent comments

  • Marco on Chromium 121 for Slackware… don’t hold your breath
  • antenista procaz on Liveslak 1.8.0 – more filesystems supported, lots of fixes
  • alienbob on LibreOffice 5.1.2 for slackware-current
  • Marco on Your feedback
  • gordon on LibreOffice 5.1.2 for slackware-current

© 2024 Alien Pastures

Theme by Anders Noren — Up ↑

novnc safari

How to access VNC remote desktop in web browser

Last updated on November 23, 2020 by Dan Nanni

There are many VNC clients available on Linux, differing in their capabilities and operating system support. If you are looking for a cross-platform VNC client, you have two options: use either Java-based VNC viewers (e.g., RealVNC or TightVNC), or web-based VNC clients. VNC web clients are typically faster than Java-based VNC viewers, and could easily be integrated into other third-party applications.

In this tutorial, I will describe how to access VNC remote desktop in web browser by using VNC web client called noVNC .

noVNC is an HTML5-based remote desktop web client which can communicate with a remote VNC server via Web Sockets. Using noVNC, you can control a remote computer in a web browser over VNC. noVNC has been integrated into a number of other projects including OpenStack, OpenNebula, CloudSigma, Amahi and PocketVNC.

noVNC Feature List

The following list shows full features offered by noVNC.

Web Browser Requirements

To run noVNC, your web browser must support HTML5, more specifically HTML5 Canvas and WebSockets. The following browsers meet the requirements: Chrome 49+, Firefox 44+, Safari 11+, iOS Safari 11+, Opera 36+ and Edge 79+ . If your browser does not have native WebSockets support, you can use web-socket-js , which is included in noVNC package.

Install noVNC on Linux

To install noVNC remote desktop web client, clone the noVNC GitHub project by running:

Launch Websockify WebSockets Proxy

The first step is to launch Websockify (which comes with noVNC package) on local host. noVNC leverages Websockify to communicate with a remote VNC server. Websockify is a WebSocket to TCP proxy/bridge, which allows a web browser to connect to any application, server or service via local TCP proxy.

I assume that you already set up a running VNC server somewhere. For the purpose of this tutorial, I set up a VNC server at 192.168.1.10:5900 by using x11vnc .

To launch Websockify, use a startup script called launch.sh . This script starts a mini-webserver as well as Websockify. The --vnc option is used to specify the location of a remotely running VNC server.

At this point, you can open up a web browser, and navigate to the URL shown in the output of Websockify (e.g., http://127.0.0.1:6080/vnc.html?host=127.0.0.1&port=6080 ).

If the remote VNC server requires password authentication, you will see the following screen in your web browser.

novnc safari

After you have successfully connected to a remote VNC server, you will be able to access the remote desktop as follows.

novnc safari

You can adjust the settings of a VNC session by clicking on the settings icon located in the top right corner.

novnc safari

Create Encrypted VNC Session with noVNC

By default a VNC session created by noVNC is not encrypted. If you want, you can create encrypted VNC connections by using the WebSocket wss:// URI scheme. For that, you need to generate a self-signed encryption certificate (e.g., by using OpenSSL), and have Websockify load the certificate.

To create a self-signed certificate with OpenSSL:

After that, place the certificate in noVNC/utils directory. Then when you run launch.sh , Websockify will automatically load the certificate.

Support Xmodulo

This website is made possible by minimal ads and your gracious donation via PayPal or credit card

Please note that this article is published by Xmodulo.com under a Creative Commons Attribution-ShareAlike 3.0 Unported License . If you would like to use the whole or any part of this article, you need to cite this web page at Xmodulo.com as the original source.

novnc safari

Xmodulo © 2021 ‒ About ‒ Write for Us ‒ Feed ‒ Powered by DigitalOcean

  • Create Support Ticket
  • Get Started with Secomea
  • Release notes
  • Secomea Prime
  • GateManager
  • SiteManager
  • LinkManager
  • Data Collection
  • Frequently asked questions
  • Manufacturers
  • Create a Perfect Ticket
  • 07 Apr 2021
  • 5 Minutes to read

In-Browser VNC viewer (noVNC)

  • Updated on 07 Apr 2021

This article will cover the new feature "In-Browser VNC viewer" released with the Secomea release 7.2.

The connection will take place through an encrypted session and there are no external dependencies.

Supported browsers.

  • Google Chrome
  • Internet Explorer*
  • Microsoft Edge*
  • Mozilla FireFox

*On some Windows and browser versions it's be experienced that the mouse isn't displayed during operation when using the In-browser option. **The VNC server type should not make a big difference, testing was done on major VNC servers (UltraVNC, TightVNC, etc.) including native versions for panels with Windows CE - like the EfonVNC, which is widely used on brand name panels.

  • Known issues

Please note the following.

  • A self-signed web certificate is not allowed. If detected, the In-Browser VNC option will be either be disabled or not selectable.(GateManager OWN)
  • Opera will not have full functionality on iOS, Android and Linux.
  • Konqueror is not supported.
  • Safari will not function in private mode, as the LocalStorage is then set to 0 (this might hold true for other browsers).
  • Mozilla FireFox on Android could in some instances display a hand icon instead of the configuration icon, but the placement and functionality is working.
  • Please not that In-Browser VNC will not connect if the “User name:” field is used.
  • Locking the mobile device will disable the connection to the target.
  • Encryption "On" can be the reason the the VNC will not work properly.
  • Configuring the agent
  • Selecting “Always On:” is necessary on most Windows 7 and 10 installations when using the VNC viewer to access a workstation screen. This is due to the internal firewall, that prohibits IMCP pings from coming through. The Agent uses ICMP ping to check if the agent target is up. Either configure the firewall to let the ICMP ping though, or just assume the unit is up by selecting “Always On:”.
  • In-Browser VNC viewer already enabled when upgrading to 7.2. An external VNC viewer can always be selected over the internal viewer when using either GTA from GateManager or LinkManager mobile. This can be set globally from the agent directly by selecting “Use external viewer:”. Use cases for this option, could be special native VNC servers that require tailored clients or APPs that was created to handle the VNC client.
  • As stated above, please do not use the “User name:” with the In- Browser VNC viewer. This option was meant to pass information to the LinkManager service. Not to LinkManager Mobile.
  • Setting a password will enable the In-Browser VNC viewer to pass it to the server and do a login without credentials.
  • Selecting internal or external viewer

Then click "START" to get access to the VNC server through the In-Browser VNC viewer.

Note that this screen has a 30 second time-out, and “START” should be se- lected within the 30 second timeframe. Otherwise the VNC client cannot connect: The same is true for selecting “Use External Viewer” and starting the external program. If the External viewer is selected, it can be changed back to the Internal Viewer here:
  • Using the In-Browser viewer

Clicking this tab will roll out the options menu.

The options menu (rotated for readability) can have a different number of icons depending on platform and use. The one depicted here is from FireFox on iOS.

  • Hand Icon: This icon appears when the VNC target screen is larger than the host screen, typically on mobile devices. Clicking this icon will turn the pointer into a hand icon and let you move the target screen around.
  • Mouse Icon: Clicking icon this will toggle between left, right and mid- dle mouse button. The icons start with the left button (marked blue). This icon appears on mobile devices and is used to emulate a mouse click from the desired mouse button.
  • Keyboard icon: When the host system does not have a keyboard (Normally on mobile devices), pressing this button will bring up the virtual keyboard on the device.
  • Ctrl key (Control)
  • Alt key (Alternate)
  • Tab key (Tabulator)
  • Esc Key (Escape)
  • Fullscreen icon: Pressing this button will display the VNC target screen without borders or other headers. This icon is present on Android but not all operating systems, iOS will not have this ability. Please note that this button has nothing to do with image scaling.

Some of these settings are selected by default and cannot be changed. This includes the "WebSocket" and the "Shared Mode" settings. Other settings might be unavailable depending on context and host platform.

View Only: This setting is self-explanatory; it locks the target so no changes can be made. This option persists through browser sessions and devices on the same GateManager.

Scaling Mode: There are 4 options, "None", “Local Scaling”, "Local Downscaling" and "Re- mote Resizing".

"None" will display the target precisely the size as the original, leaving the image either too big or too small, the hand icon can be used to mode the image around.

"Local Scaling" will do both upscaling and down-scaling, while "Local Downscaling" only allows downscaling.

"Remote Resizing" will request the target to resize the target screen to match that of the VNC viewers host screen.

Logging: can be switched between "Error", "Warn", "Info" and "Debug". This setting will control the logging to the Java Script Console.

Automatic reconnect should not be configured as it has no effect in this scenario.

  • Exit icon: Pressing this icon will terminate the current selection and return to the Appliance view.
  • This is how it looks (Video)

https://www.youtube.com/watch?v=l9Lm4VPcECE

  • Troubleshooting
  • Try disabling "encryption" on the VNC server side

What's Next

  • SMS Authentication

Table of contents

  • LinkManager Mobil

See homepage and README for more info.

novnc safari

This page was last updated the 13th of May 2017

U.S. flag

An official website of the United States government

The .gov means it’s official. Federal government websites often end in .gov or .mil. Before sharing sensitive information, make sure you’re on a federal government site.

The site is secure. The https:// ensures that you are connecting to the official website and that any information you provide is encrypted and transmitted securely.

  • Publications
  • Account settings

Preview improvements coming to the PMC website in October 2024. Learn More or Try it out now .

  • Advanced Search
  • Journal List
  • Gigascience
  • v.6(4); 2017 Apr

GUIdock-VNC: using a graphical desktop sharing system to provide a browser-based interface for containerized software

Associated data.

Background: Software container technology such as Docker can be used to package and distribute bioinformatics workflows consisting of multiple software implementations and dependencies. However, Docker is a command line–based tool, and many bioinformatics pipelines consist of components that require a graphical user interface. Results: We present a container tool called GUIdock-VNC that uses a graphical desktop sharing system to provide a browser-based interface for containerized software. GUIdock-VNC uses the Virtual Network Computing protocol to render the graphics within most commonly used browsers. We also present a minimal image builder that can add our proposed graphical desktop sharing system to any Docker packages, with the end result that any Docker packages can be run using a graphical desktop within a browser. In addition, GUIdock-VNC uses the Oauth2 authentication protocols when deployed on the cloud. Conclusions: As a proof-of-concept, we demonstrated the utility of GUIdock-noVNC in gene network inference. We benchmarked our container implementation on various operating systems and showed that our solution creates minimal overhead.

Modern workflows in computational fields such as bioinformatics consist of multiple software implementations, each with their own set of dependencies. Software container technology such as Docker ( http://www.docker.com ) package the dependencies with the software and provide a method to reproduce these complex pipelines on multiple hardware and cloud platforms. For example, BioShadock [ 1 ], BioDocker and Bioboxes [ 2 ] are two frameworks aimed at reproducibly deploying bioinformatics workflows using Docker containers.

Many bioinformatics pipelines have a component that requires a graphical user interface (GUI) that can potentially limit the portability of the Dockerized workflows as different platforms use different methodologies to render the GUI. We have previously described and implemented GUIdock-X11 [ 3 ], an X11-based methodology for portably supporting GUI applications in containers on different platforms. While the X11-based display method can be conveniently deployed in the local environment by exposing a file socket from a container, deploying the image on a cloud and accessing it remotely is non-trivial. In addition, on systems such as Windows, where there is no native X11 support, additional client software must be installed by the user to render the X11 graphics locally. Here we describe GUIdock-VNC, which implements an improved browser-based solution that does not require the user to map ports, configure firewalls, or install any additional specialized software.

GUIdock-VNC uses the Virtual Network Computing (VNC) protocol [ 4 ] to render the graphics. Instead of transferring commands and allowing a local client to render the graphics, VNC transfers a pre-rendered screen. Bandwidth requirements are minimized by only transferring the differences between the current screen and the last screen. This can actually be less chatty than the X11 methodology, which is constantly sending display commands. noVNC is a browser-based VNC client implemented using HTML5 Canvas and WebSockets [ 5 ]. Modern browsers can use the HTML5-based noVNC client to display the screen locally. The browser transparently downloads the noVNC client from the container and becomes the terminal, thus eliminating the need for the user to configure and install separate software. This is a major advantage as the users of bioinformatics workflows are not necessarily technically trained in configuring computer systems.

Most importantly, GUIdock-VNC also facilitates the deployment of Docker applications on the cloud. With a browser-based solution, we also have access to web-based authentication protocols such as Oauth2 [ 6 ], which allows for authentication using an email account. The host service is accessed and authenticated through the HTTP/HTTPS port, greatly simplifying the configuration necessary to support cloud-based platforms.

Our contributions

We implemented GUIdock-VNC, which adds and configures a software layer inside a Docker container to allow applications to export a GUI using the VNC protocol. When deployed on the cloud, authentication is provided using Oauth2. In addition, we provide a set of minimal base images to allow the users to add the host graphical desktop interface to any existing Dockerfiles. No client software installation is necessary for the users as GUIdock-VNC uses the HTML5 noVNC browser-based client to display the GUI. All our tools are publicly available on GitHub.

We benchmarked the implementation on a real-world bioinformatics pipeline. Our results showed that noVNC creates minimal overhead and GUIdock-VNC is superior to our previous work, GUIdock-X11 [ 3 ], and other virtual machine–based deployment solutions.

Related work

Software containers and docker.

A software container packages an application with everything it needs to run, including supporting libraries and system resources. Containers differ from traditional virtual machines (VMs) in that the resources of the operating system (OS), and not the hardware, are virtualized. In addition, multiple containers share a single OS kernel, thus saving considerable resources over multiple VMs.

Linux has supported OS-level virtualization for several years. Docker ( http://www.docker.com/ ) is an open source project that provides tools to setup and deploy Linux software containers. While Docker can run natively on Linux hosts, a small Linux VM is necessary to provide the virtualization services on Mac OS and Windows systems. On non-Linux systems, a single Docker container consists of a mini-VM, the Docker software layer, and the software container. However, multiple Docker containers can share the same mini-VM, saving considerable resources over using multiple individual VMs. Recently, support for OS-level virtualization has been added to Windows and the Macintosh operating system (Mac OS). Beta versions of Docker for both Windows and Mac OS are now available that allow Docker to run natively. Subsequently, these beta versions allow native Windows and Mac OS software to be containerized and deployed in a similar manner [ 7 ]. Docker containers therefore provide a convenient and light method for deploying open source workflows on multiple platforms.

GUIdock-X11

Although Docker provides a container with the original software environment, the host system, where the container software is executed, is responsible for rendering graphics. Our previous work, GUIdock-X11 [ 3 ], is one of the solutions in bridging the graphical information from user and Docker containers by using the X11 common graphic interface. GUIdock-X11 passes the container X11 commands to a host X11 client, which renders the GUI. Security is handled by encrypting the commands through secure shell (ssh) tunneling. We demonstrated the use of GUIdock-X11 [ 3 ] for systems biology applications, including Bioconductor packages written in R, C++, and Fortran, as well as Cytoscape, a standalone Java-based application with a graphical user interface. Neither Windows nor Mac OS uses X11 natively to render their graphics. Additional software such as MobaXterm [ 8 ] or socat [ 9 ] is needed to emulate X11 and locally render the graphics commands exported by the Docker container. However, a major advantage of the X11 method is that the commands to render the graphics and not the graphics themselves are transmitted, potentially reducing the total bandwidth required.

Table  1 summarizes the differences between GUIdock-VNC and our previous work, GUIdock-X11.

Comparison between GUIdock-X11 and GUIdock-VNC

Case study: inference of gene networks

The inference of gene networks is a fundamental challenge in systems biology. We use gene network inference as a case study to demonstrate that GUIdock-X11 and GUIdock-VNC can be used to yield reproducible results from bioinformatics workflows. We have previously developed inference methods using a regression-based framework, in which we searched for candidate regulators (i.e., parent nodes) for each target gene [ 10 – 12 ]. Our methods are implemented in R, C++, and Fortran, and the implementation is available as a Bioconductor package called networkBMA ( http://bioconductor.org/packages/release/bioc/html/networkBMA.html ) [ 13 ]. In order to visualize the resulting gene networks, we previously developed a Cytoscape app called CyNetworkBMA ( http://apps.cytoscape.org/apps/cynetworkbma ) [ 14 ]. Cytoscape is a Java-based stand-alone application with a GUI to analyze and visualize graphs and networks [ 15 – 17 ]. Our app, CyNetworkBMA [ 14 ], integrates our networkBMA Bioconductor package into Cytoscape, allowing the user to directly visualize the resulting gene networks inferred from networkBMA using the Cytoscape utilities. The integration of multiple pieces of software, each with its own software dependencies, makes CyNetworkBMA an ideal proof-of-concept application for the illustration of the utility of GUIdock-VNC.

Implementation of GUIdock-VNC

Fig.  1 shows an overview of GUIdock-VNC.

An external file that holds a picture, illustration, etc.
Object name is giw013fig1.jpg

Architectural overview of GUIdock-VNC. In the proposed architecture, each container is a self-contained web server that can be accessed using a single port. When deployed on the cloud, the services can be accessed using the cloud provider's network address translation (NAT) mechanism. Each container is also capable of OAuth2 authentication that can be enabled while deploying the application. Once enabled, the user will be required to sign in through an identity provider (such as Google in the current prototype). After the authentication, the user browser will be automatically redirected to the application.

Virtual Network Computing

VNC is a framebuffer-based protocol that was written to view and control a remote desktop over the internet [ 4 ]. VNC is essentially a server program that attaches to a display server like X11 and creates a proxy between the client and the display server. The proxy server takes in input from the client and relays it to the display server while at the same time the display server sends pre-rendered display images to the client. VNC is thus a network intensive protocol, although the amount of data transferred back and forth can be reduced by using various compression technologies on the transfer layer. In our implementation, we use Xvnc/Xvfb (X virtual frame buffer) [ 18 ] to provide a lightweight VNC/X11 display server.

noVNC is a browser-based VNC client [ 5 ]. The name ‘noVNC’ means that the traditional VNC client is not needed and that a modern browser with HTML5 and WebSocket support can be used to access and control a remote VNC server. This noVNC technology is particularly interesting as almost all browsers, both desktop and mobile versions, have HTML5 extensions built in. An additional layer on the host is required for the VNC server to communicate through WebSocket. We use nginx ( https:/www.nginx.com/ ), a fast and light reverse-proxy web server, for this purpose.

Authentication methods: Oauth2

For containers that are not deployed locally, i.e., on a network or cloud, security is a concern as the traffic between the viewer and server can be seen by anyone with access to the network. Oauth2 [ 6 ] is an authentication method that is commonly used by major corporations to validate third-party applications. Specifically, Oauth allows users to log onto third-party websites using their existing Google, Twitter, or Facebook accounts, thus avoiding the creation of additional accounts for the third-party websites. In the present era, where it is extremely difficult to host identity services and secure communication, public authentication services like Oauth2 plays an important role. Providers like Google, Facebook, and LinkedIn can be used to validate any user registered with an email at one of these websites. In our prototype, we have created a prototype for the Google identity server. Each container can be forced to login through one of these public providers.

Automatic conversion of base Docker images

To add the noVNC graphical desktop to a Docker image, the converted image requires a web server, a headless display server running inside the container, and a VNC server (see Fig.  2 ). The web server is required to serve the JavaScript-based noVNC client, and the headless display server routes all drawing instructions to the VNC server; they are then sent to the client running the browser-based noVNC JavaScript client. Due to the three active components running inside the container, we generate a bash script to work as the entry point for the container. Therefore, in order to assist users and to let them start application-dependent services, we have created a tool to bootstrap standard images with noVNC capability. The tool accepts a JSON script as input with defined parameters for files to be copied, additional software to be installed (using apt-get), and the location of the startup script, which is then tied into the entry point.

An external file that holds a picture, illustration, etc.
Object name is giw013fig2.jpg

Services running inside container. Apart from user applications, there are two web services running inside the container and a reverse proxy (nginx) to act as an interface for the container. The first web service is the noVNC interface connected to the VNC server. The noVNC server is a Python plus JavaScript application framework used for establishing WebSocket for VNC packet interchange. The second web service is an optional broker service that helps in exchanging data through a datastore interface (Mongodb) and a message-passing queue (RabbitMQ).

The tool is extensible and can be used to define all Dockerfile parameters as standard run commands.

Applications

We illustrated the utility of GUIdock-VNC in a proof-of-concept case study of gene network inference. Specifically, we applied GUIdock-VNC to a RNA-seq dataset consisting of 675 human cancer cell lines [ 19 ]. We downloaded the variance-stabilized version of the normalized RNA-seq data and extracted a subset of 84 genes that belong to 21 cancer-related pathways (see Supplementary Table 12 in Klijn et al. [ 19 ]). We applied the ScanBMA [ 12 ] gene network inference algorithm as implemented in the CyNetworkBMA app from within the GUIdock-VNC container.

We show that we get identical results after deploying the package across different browsers on different operating systems. Fig.  3 shows screenshots of using (a) Internet Explorer on Windows 8.1, (b) Google Chrome on Ubuntu Linux, (c) Safari on Mac OS, and (d) Google Chrome on Android. To summarize, we demonstrate the reproducibility of analytical results when GUIdock-VNC is deployed on different browsers and different operating systems.

An external file that holds a picture, illustration, etc.
Object name is giw013fig3.jpg

CyNetworkBMA on various browsers and operating systems: (a) Internet Explorer on Windows 8.1, (b) Google Chrome on Ubuntu Linux, (c) Safari on Mac OS, and (d) Google Chrome on Android. Given that the interaction to the container is made through a browser, any device with a browser supporting HTML5 will have consistent user experience and results, even on mobile devices such as Android and iOS devices. In the case of mobile devices, the Docker container runs on remote machines (e.g., on a virtual machine instance on cloud).

Benchmarking computational efficiency

Since we have added extra services to the container, it is essential to investigate the performance overhead introduced by these additional services and the container. We conducted an extensive empirical study on comparing performance over different platforms with different hypervisors using GUIdock-X11 and GUI-VNC. As a baseline, we compared the performance of running GUIdock-X11 and GUIdock-VNC on Docker containers to running the CyNetworkBMA app natively. In addition, we also compared our results to running the CyNetworkBMA via a virtual machine (VM). We tested the performance of each of these four options (native, GUIdock-X11, GUIdock-VNC, VM) on the Linux, Macintosh, and Windows operating systems.

In our benchmarking experiments, we used the time series data of the first network from the DREAM 4 crowdsourcing challenge [ 20 , 21 ]. This simulated dataset consists of 100 genes across 21 time points. In order to account for variability in our empirical experiments, we repeated each configuration, i.e., each (OS, option) pair four times. These replicated experiments are represented by “RUN1,” “RUN2,” “RUN3,” “RUN4” in Table  2 . In addition, we added warm-up runs to ensure steady-state execution time.

Execution time in empirical study across the Linux, Macintosh, and Windows operating systems

“Native” means running the CyNetworkBMA app natively on the corresponding OS. “VM” means running the CyNetworkBMA app from a virtual machine on the corresponding OS. The column “average” is the average execution time over the four runs. The column “ratio” is the ratio of the average running time to the “native” baseline.

Table  2 shows a consistent minimal overhead of running the proposed container, which is only marginally higher than running the application natively. In particular, we computed the ratio of the average execution time over the four runs to the “native” baseline execution time. Fig.  4 shows the ratio of the average execution time of each of GUIdock-X11, GUIdock-VNC, and VM to the baseline “native” on the Linux, Mac OS, and Windows operating systems. On the Linux, Mac OS, and Windows operating systems, we observed comparable execution time for both GUIdock-X11 and GUIdock-VNC.

An external file that holds a picture, illustration, etc.
Object name is giw013fig4.jpg

The bar graph shows the ratio of the average execution time to the baseline of running CyNetworkBMA natively for each of Linux, Mac OS, and Windows. The first value for each platform is the ratio of the native execution runtime to itself, and therefore is always equal to 1. The remaining three values correspond to the ratio of the average execution time for GUIdock-X11, GUIdock-VNC, and VM, respectively, to the baseline “native.”

We present a container tool called GUIdock-VNC that uses a graphical desktop sharing system to provide a browser-based interface for containerized software. The merits of GUdock-VNC are summarized in the following sections.

No installation on client side.

Our proposed container GUIdock-VNC is a self-contained display server with user application and an HTML5-based VNC client, which can be accessed using the web browser. Therefore, any HTML5-capable browser is sufficient on the client side. Almost all modern popular browsers such as Mozilla Firefox, Webkit (Apple Safari and Google Chrome), and Microsoft Edge support HTML5 extensions.

Mobile capable.

Since HTML5 extensions that are required to access noVNC are also supported on mobile versions on modern web browsers, our GUIdock-VNC solution is also accessible through mobile devices such as phones and tablets. The container is a stateful solution, such that it preserves session information even after a disconnected user session. Therefore, researchers can access the container on the go and subsequently continue working on the workstations in the labs.

Cloud integration.

There is a self-contained web server inside the GUIdock-VNC container that is required to access the applications. Our GUIdock-VNC container can be hosted on the cloud by using a reverse proxy or simple NAT rule to pass on any incoming request to the container. We tested the solution with major cloud vendors such as Amazon AWS, Google Cloud, and Microsoft Azure, and the NAT forwarding works without any network interference.

Security using OAuth2.

To ensure secure access to the container, we are using OAuth2 from Google (replaceable by any other identity provider such as LinkedIn, Facebook, Twitter, etc.) to authenticate users by ensuring that the identity registered with the container is owned by the user requesting container access. This can be done by providing email ID, provider user ID and secret password as parameters to the container. If these parameters are provided while initiating the container, the broker will redirect the user to the identity provider to verify the email address. Once authenticated, the identity provider redirects the user to the container.

Availability and requirements

  • Project name: GUIdock-VNC
  • Project home page: https://github.com/biodepot
  • Contents available for download: Docker Images, Dockerfiles, installation scripts, and execution scripts.
  • – Linux: Fedora 22/23, Ubuntu 15.04
  • – Mac OS X: 10.9, 10.10
  • – Microsoft Windows: 7, 8.1, 10
  • – Android, IOS
  • Programming languages: Python, HTML, JavaScript
  • – Google Chrome
  • – Firefox
  • – Safari
  • – Microsoft Edge on Windows 10 Pro (using Docker for Windows, and with pop-up blocker off)
  • License: MIT License

Availability of supporting data

Snapshots of the code supporting this article are available in the GigaScience GigaDB repository [ 22 ].

Additional Files

Additional file 1 — User manual for GUIdock-VNC.

Additional file 2 — Video of GUIdock-VNC demo

Available on YouTube: https://youtu.be/iaVPnLhOLg0 .

Additional file 3 — Video of deploying GUIdock-VNC on the cloud

Abbreviations

GUI, graphical user interface; NAT, network address translation; VM, virtual machine; VNC, Virtual Network Computing.

Conflict of interest

The authors declare that they have no competing interests.

Author contributions

V.M. is the primary developer for GUIdock-VNC. K.Y.Y. coordinated the manuscript preparation. V.M., L.H.H., and K.Y.Y. drafted the manuscript. L.H.H. designed the benchmarking experiments. V.M., L.H.H., D.K., J.K., and S.B.L performed the benchmarking experiments. D.K. and S.B.L. contributed to the comparison of GUIdock-VNC and GUIdock-X11. V.M., J.K., and S.B.L. contributed to the writing of the user manual. V.M. and D.K. made the videos in additional data files. All authors tested GUIdock-VNC and read and approved the final manuscript.

Supplementary Material

Giga-d-16-00089_original_submission.pdf, giga-d-16-00089_revision_1.pdf, giga-d-16-00089_revision_2.pdf, response_to_reviewer_comments_original_submission.pdf, response_to_reviewer_comments_revision_1.pdf, reviewer_1_report_(original_submission).pdf, reviewer_2_report_(original_submission).pdf, supplemental material, acknowledgments.

V.M., L.H.H., and K.Y.Y. are supported by National Institutes of Health grant U54-HL127624. We would like to thank Microsoft Azure for computing resources. D.K. is sponsored by the US Department of State and American-Indonesian Exchange Foundation (AMINEF) through a Fulbright Scholarship, and gratefully acknowledges funding provided by the University of Washington in the form of full tuition waivers.

TrueNAS Community

  • Search forums
  • Forum Rules
  • TrueNAS Community SLA
  • Need Help Logging In?

Important Announcement for The TrueNAS Community.

  • TrueNAS SCALE

TrueNAS SCALE - Using Safari for noVNC 'display' kills Safari instance after a while :(

  • Thread starter tackyone
  • Start date May 5, 2022
  • May 5, 2022

Hi, I'm using macOS Monterey to admin my TrueNAS SCALE box - and I've noticed bringing up a 'display' for virtual machines has two issues. The first isn't too much of a biggy - but it triggers the popup-protector in Safari, so that if you don't know what you're looking for - you think it hasn't worked. Secondly - which is much more annoying is, if you leave a noVNC console around for more than about thirty seconds - that instance of Safari starts getting sluggish. Then (if you're lucky) you start getting warnings that the page is using excessive energy - and it pegs a CPU core, and causes the system to "pinwheel" - and that tab to effectively crash (it gets to the point where you can't close it, nor even move the safari window around). Anyone else seeing similar? Thanks!  

Similar threads

  • Oct 17, 2022
  • Jan 7, 2024

racskobalazs

  • racskobalazs
  • Apr 12, 2022

raskitoma

  • Feb 2, 2021

JoshDW19

  • Dec 22, 2021
  • TrueNAS News
  • This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register. By continuing to use this site, you are consenting to our use of cookies. Accept Learn more…

Proxmox Support Forum

  • Search forums

Follow along with the video below to see how to install our site as a web app on your home screen.

Note: This feature may not be available in some browsers.

noVNC encounters an error - In Safari

  • Thread starter The Dude
  • Start date Jul 30, 2019
  • Tags lastpass novnc safari
  • Proxmox Virtual Environment
  • Proxmox VE: Installation and configuration
  • Jul 30, 2019
  • Safari 12.1.1
  • MacOS 10.14.5
  • LastPass 4.31.1
  • ProxMox 6.0-5
  • Haven't tried with lastpass
  • Clearing Safari Cache (in dev menue)
  • Clearing Safari website cache
  • Clearing LastPass cache
  • Reinstalling lastpass
  • Updating lastpass

novnc safari

Proxmox Staff Member

  • Aug 5, 2019
The Dude said: Me and others have created tickets with lastpass but seem to get ignored, is this something that could be fixed from Proxmox? Click to expand...
  • This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register. By continuing to use this site, you are consenting to our use of cookies. Accept Learn more…

Tips - X11 in an Embedded System - noVNC

Tips - X11 in an Embedded System - noVNC

Browser Requirements

Server requirements, install some required packages, update and upgrade your os, install x11 required packages, install vnc required packages, create a dedicated unix user, create novnc password, create novnc.pem certificate, x11 auto login, start websockify to proxy [localhost:9000] on port [6080], creating x11vnc system service, first, it might be a good idea to copy the password file under /etc/, second, we have to create the service file ourselves:.

Note : For Raspberry pi : In /etc/systemd/system/x11vnc.service file change -auth /var/run/slim.auth by -auth /var/run/lightdm/root/:0 Without a monitor attached you must setting hdmi_force_hotplug=1 in /boot/config.txt . So it always thinks that an HDMI monitor is attached.

Proxying with nginx

Configure nginx, proxying with lighttpd, configure lighttpd.

novnc safari

Templates (for web app):

Stack Exchange Network

Stack Exchange network consists of 183 Q&A communities including Stack Overflow , the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Screen sharing with x11vnc + noVNC

Context & Goal I have a small embedded device running Linux armv71. My goal is to remotely access the screen through a web browser with a mobile device. I have x11vnc running which I thought supported access through web browsers but I couldn't get it to work until I was told I needed a proxy for web access. I was recommended noVNC so here I am trying to get this to work :p

The Problem I can't access the noVNC login page with a mobile phone. WebSockets proxy fails to start.

enter image description here

I thought typing in my web browser (chrome) the URL given by novnc (< remoteIP>:5900) would connect but I just get an invalid response. However, if I type "< remoteIP>/vnc.html", I get to the noVNC login screen and from there I have access to my screen. Great so far!

When I try to access the noVNC login page with my iPhone6 using Safari, I don't get a response from the server. I guess the problem is with the WebSockets proxy failing to start ...

My (Windows) computer and my remote device are on the same networks so that's probably why I can connect with my computer but not with my phone. Any help with this would be much appreciated!

  • remote-access
  • screen-sharing

MortZ's user avatar

For any other fools like me who runs into this problem, the solution is as simple as having the server and client devices on the same network.

I still don't know why the WebSockets proxy failed to start or what it does ...

You must log in to answer this question.

Not the answer you're looking for browse other questions tagged linux remote-access vnc screen-sharing ..

  • The Overflow Blog
  • Diverting more backdoor disasters
  • How to succeed as a data engineer without the burnout
  • Featured on Meta
  • New Focus Styles & Updated Styling for Button Groups
  • Upcoming initiatives on Stack Overflow and across the Stack Exchange network

Hot Network Questions

  • How can I use ogr2ogr to left join a CSV to a GPKG file and produce a GeoJSON output in a scalable way?
  • Simple problems that calculators get wrong
  • How do you measure specific impulse Isp of a rocket engine?
  • Could a Landlord (sucessfully) sue AirBnB when a tenant is subletting against their lease?
  • Michael Noll's early computer art - arranging graphic elements in a circular manner
  • Is it possible to prove that this matrix is invertible?
  • Why do Chinese people complicate the matter in choosing the words for translation
  • Where are my sudo privileges stored?
  • Why do protests happen in the light of their apparent futility
  • Shuttle dance bank angle timeline
  • A tic-tac-toe game in C
  • Should I disclose a mental disorder that's been impacting my job to HR/my boss?
  • What is this connector called and are they commonly used?
  • Examples of concrete games to apply Borel determinacy to
  • What are some good examples of spectral sequences which degenerate after the first nontrivial differential?
  • Will nothing bad happen if I just create infinite energy?
  • What is the difference between "residuo" and "desecho"?
  • Optimizing Multiple Subplot Visualization and Navigation in Matplotlib
  • Why is the general term of the sequence obtained using the RSolve function incorrect? Could it be a bug?
  • Are differentials on their own in stochastic calculus just an abuse of notation?
  • Breaking New Ground
  • When is it important for a practitioner to understand CIs?
  • Are there scientific research articles published in reputable journals that provide supporting evidence for Young Earth Creationism?
  • Excel FFT of Two Sine Waves Not Giving Expected Results

novnc safari

Search code, repositories, users, issues, pull requests...

Provide feedback.

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly.

To see all available qualifiers, see our documentation .

  • Notifications

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement . We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Touch device - can't send mouse scrolls to remote #1267

@juanjoDiaz

juanjoDiaz commented Jul 24, 2019

@samhed

samhed commented Jul 24, 2019

Sorry, something went wrong.

@samhed

juanjoDiaz commented Jul 25, 2019 • edited

Samhed commented jul 25, 2019, juanjodiaz commented jul 31, 2019, samhed commented aug 1, 2019.

@juanjoDiaz

samhed commented Jun 12, 2020

@sportegioco

sportegioco commented Dec 15, 2020

Successfully merging a pull request may close this issue.

@juanjoDiaz

@novnc/novnc

An HTML5 VNC client

noVNC: HTML VNC Client Library and Application

Description.

noVNC is both a HTML VNC client JavaScript library and an application built on top of that library. noVNC runs well in any modern browser including mobile browsers (iOS and Android).

Many companies, projects and products have integrated noVNC including OpenStack , OpenNebula , LibVNCServer , and ThinLinc . See the Projects and Companies wiki page for a more complete list with additional info and links.

Table of Contents

News/help/contact, screenshots, browser requirements, server requirements, quick start, installation from snap package, integration and deployment, authors/contributors.

The project website is found at novnc.com . Notable commits, announcements and news are posted to @noVNC .

If you are a noVNC developer/integrator/user (or want to be) please join the noVNC discussion group .

Bugs and feature requests can be submitted via github issues . If you have questions about using noVNC then please first use the discussion group . We also have a wiki with lots of helpful information.

If you are looking for a place to start contributing to noVNC, a good place to start would be the issues that are marked as "patchwelcome" . Please check our contribution guide though.

If you want to show appreciation for noVNC you could donate to a great non- profits such as: Compassion International , SIL , Habitat for Humanity , Electronic Frontier Foundation , Against Malaria Foundation , Nothing But Nets , etc. Please tweet @noVNC if you do.

  • Supports all modern browsers including mobile (iOS, Android)
  • Supported authentication methods: none, classical VNC, RealVNC's RSA-AES, Tight, VeNCrypt Plain, XVP, Apple's Diffie-Hellman, UltraVNC's MSLogonII
  • Supported VNC encodings: raw, copyrect, rre, hextile, tight, tightPNG, ZRLE, JPEG
  • Supports scaling, clipping and resizing the desktop
  • Local cursor rendering
  • Clipboard copy/paste with full Unicode support
  • Translations
  • Touch gestures for emulating common mouse actions
  • Licensed mainly under the MPL 2.0 , see the license document for details

Running in Firefox before and after connecting:

See more screenshots here .

noVNC uses many modern web technologies so a formal requirement list is not available. However these are the minimum versions we are currently aware of:

  • Chrome 64, Firefox 79, Safari 13.4, Opera 51, Edge 79

noVNC follows the standard VNC protocol, but unlike other VNC clients it does require WebSockets support. Many servers include support (e.g. x11vnc/libvncserver , QEMU , and MobileVNC ), but for the others you need to use a WebSockets to TCP socket proxy. noVNC has a sister project websockify that provides a simple such proxy.

Use the novnc_proxy script to automatically download and start websockify, which includes a mini-webserver and the WebSockets proxy. The --vnc option is used to specify the location of a running VNC server:

./utils/novnc_proxy --vnc localhost:5901

If you don't need to expose the web server to public internet, you can bind to localhost:

./utils/novnc_proxy --vnc localhost:5901 --listen localhost:6081

Point your browser to the cut-and-paste URL that is output by the novnc_proxy script. Hit the Connect button, enter a password if the VNC server has one configured, and enjoy!

Running the command below will install the latest release of noVNC from Snap:

sudo snap install novnc

Running noVNC from Snap Directly

You can run the Snap-package installed novnc directly with, for example:

novnc --listen 6081 --vnc localhost:5901 # /snap/bin/novnc if /snap/bin is not in your PATH

If you want to use certificate files, due to standard Snap confinement restrictions you need to have them in the /home/<user>/snap/novnc/current/ directory. If your username is jsmith an example command would be:

novnc --listen 8443 --cert ~jsmith/snap/novnc/current/self.crt --key ~jsmith/snap/novnc/current/self.key --vnc ubuntu.example.com:5901

Running noVNC from Snap as a Service (Daemon)

The Snap package also has the capability to run a 'novnc' service which can be configured to listen on multiple ports connecting to multiple VNC servers (effectively a service runing multiple instances of novnc). Instructions (with example values):

List current services (out-of-box this will be blank):

Create a new service that listens on port 6082 and connects to the VNC server running on port 5902 on localhost:

sudo snap set novnc services.n6082.listen=6082 services.n6082.vnc=localhost:5902

(Any services you define with 'snap set' will be automatically started) Note that the name of the service, 'n6082' in this example, can be anything as long as it doesn't start with a number or contain spaces/special characters.

View the configuration of the service just created:

Disable a service (note that because of a limitation in Snap it's currently not possible to unset config variables, setting them to blank values is the way to disable a service):

sudo snap set novnc services.n6082.listen='' services.n6082.vnc=''

(Any services you set to blank with 'snap set' like this will be automatically stopped)

Verify that the service is disabled (blank values):

Please see our other documents for how to integrate noVNC in your own software, or deploying the noVNC application in production environments:

  • Embedding - For the noVNC application
  • Library - For the noVNC JavaScript library

See AUTHORS for a (full-ish) list of authors. If you're not on that list and you think you should be, feel free to send a PR to fix that.

  • Samuel Mannehed (Cendio)
  • Pierre Ossman (Cendio)

Previous core contributors:

  • Joel Martin (Project founder)
  • Solly Ross (Red Hat / OpenStack)

Notable contributions:

  • UI and Icons : Pierre Ossman, Chris Gordon
  • Original Logo : Michael Sersen
  • tight encoding : Michael Tinglof (Mercuri.ca)
  • RealVNC RSA AES authentication : USTC Vlab Team

Included libraries:

  • base64 : Martijn Pieters (Digital Creations 2), Samuel Sieb (sieb.net)
  • DES : Dave Zimmerman (Widget Workshop), Jef Poskanzer (ACME Labs)
  • Pako : Vitaly Puzrin ( https://github.com/nodeca/pako )

Do you want to be on this list? Check out our contribution guide and start hacking!

The live preview of @novnc/novnc

Template type: create-react-app

This sandbox is a live running version of https://www.github.com/novnc/noVNC/tree/master/

Dependencies

Dev dependencies.

  • @babel/core: latest
  • @babel/preset-env: latest
  • babel-plugin-import-redirect: latest
  • browserify: latest
  • chai: latest
  • commander: latest
  • eslint: latest
  • fs-extra: latest
  • jsdom: latest
  • karma: latest
  • karma-mocha: latest
  • karma-chrome-launcher: latest
  • @chiragrupani/karma-chromium-edge-launcher: latest
  • karma-firefox-launcher: latest
  • karma-ie-launcher: latest
  • karma-mocha-reporter: latest
  • karma-safari-launcher: latest
  • karma-script-launcher: latest
  • karma-sinon-chai: latest
  • mocha: latest
  • node-getopt: latest
  • po2json: latest
  • sinon: latest
  • sinon-chai: latest

IMAGES

  1. noVNC Videos and Screenshots

    novnc safari

  2. Novnc

    novnc safari

  3. Сафари парк новороссийск

    novnc safari

  4. Quick demo of noVNC

    novnc safari

  5. Experience with NoVNC

    novnc safari

  6. Install noVNC on Linux

    novnc safari

VIDEO

  1. Leide perde seguidores #bbb24

  2. March 15, 2024

  3. Living at home is “cool”

  4. 13 March 2024

  5. मसीह समाज पर हो रहे अत्याचार को रोके और कानून का राज स्थापित करें सरकार अंकुश बरिएकर

  6. Kent Casino

COMMENTS

  1. noVNC: HTML VNC Client Library and Application

    Chrome 64, Firefox 79, Safari 13.4, Opera 51, Edge 79; Server Requirements. ... sudo snap set novnc services.n6082.listen=6082 services.n6082.vnc=localhost:5902 (Any services you define with 'snap set' will be automatically started) Note that the name of the service, 'n6082' in this example, can be anything as long as it doesn't start ...

  2. noVNC: HTML VNC Client Library and Application

    noVNC is both a HTML VNC client JavaScript library and an application built on top of that library. noVNC runs well in any modern browser including mobile browsers (iOS and Android). Many companies, projects and products have integrated noVNC including OpenStack , OpenNebula , LibVNCServer, and ThinLinc. See the Projects and Companies wiki page ...

  3. GitHub

    Use the novnc_proxy script to automatically download and start websockify, which includes a mini-webserver and the WebSockets proxy. The --vnc option is used to specify the location of a running VNC server: ./utils/novnc_proxy --vnc localhost:5901. If you don't need to expose the web server to public internet, you can bind to localhost:

  4. Remote access to your VNC server via modern browsers

    You can exit the VNC viewer application and then kill the VNC server like this: alien@darkstar:~$ vncserver -kill :1. The value I passed to the parameter "-kill" is ":1". This ":1" is a pointer to your active VNC session. It's that same ":1" which you saw in the red highlighted " darkstar.example.net:1 " above.

  5. How to access VNC remote desktop in web browser

    To launch Websockify, use a startup script called launch.sh. This script starts a mini-webserver as well as Websockify. The --vnc option is used to specify the location of a remotely running VNC server. $ cd noVNC. $ ./utils/launch.sh --vnc 192.168.1.10:5900. Warning: could not find self.pem.

  6. noVNC

    noVNC - the open source VNC client - noVNC is both a VNC client JavaScript library as well as an application built on top of that library. noVNC runs well in any modern browser including mobile browsers (iOS and Android). Notable commits, announcements and news @ noVNC. HTML5 WebSockets and Canvas Try it! An online version of the noVNC client is available HERE.

  7. Safari stuck at loading screen indefinitely · Issue #865 · novnc/noVNC

    For future reference, the recommended way to run noVNC is with one of the "built" formats (you can pass --as (amd|commonjs|systemjs) ( umd is an option as well, but won't work for vnc.html) depending on what module format and loader you'd like to use), while the "unbuilt" form is mainly for development. However, the unbuilt form should work on ...

  8. In-Browser VNC viewer (noVNC)

    The In-Browser feature in GateManager is based on the noVNC Open Source framework. Although a big effort has been made to support many VNC features and browser types, you may still encounter limitations compared to dedicated VNC client applications. ... Safari will not function in private mode, as the LocalStorage is then set to 0 (this might ...

  9. noVNC Videos and Screenshots

    Notice the mouse and keyboard buttons in the control bar for selecting the active mouse button and for toggling the on-screen keyboard. You can run noVNC in fullscreen mode if you want (third button from the bottom). Connected to the same remote system using Safari on an iPad mini 3 running iOS 10.

  10. novnc disconnects immediately on safari · Issue #143

    Firstly, I was wrong about novnc not connecting using safari and the python websockify; this appears to work fine. I just forgot to close an existing VNC connection from Chrome when testing (doh). The problem appears to be an interworking problem between novnc, safari, and apache-websocket. So, here's a table of what works and what doesn't:

  11. GUIdock-VNC: using a graphical desktop sharing system to provide a

    This noVNC technology is particularly interesting as almost all browsers, both desktop and mobile versions, have HTML5 extensions built in. ... Google Chrome on Ubuntu Linux, (c) Safari on Mac OS, and (d) Google Chrome on Android. To summarize, we demonstrate the reproducibility of analytical results when GUIdock-VNC is deployed on different ...

  12. How to: Fix Proxmox VE (PVE) noVNC/console not working in iOS/iPhone

    Once logged in to Proxmox VE, if we want to connect to console via noVNC from one of the virtual machine, we will get following error, and seems there is no simple way to bypass it. Proxmox web gui - iOS, Safari - noVNC error, Failed to connect to server The Fix. 1 Use desktop/PC etc. (non-mobile devices) to login to Proxmox VE web gui

  13. TrueNAS SCALE

    The first isn't too much of a biggy - but it triggers the popup-protector in Safari, so that if you don't know what you're looking for - you think it hasn't worked. Secondly - which is much more annoying is, if you leave a noVNC console around for more than about thirty seconds - that instance of Safari starts getting sluggish.

  14. noVNC encounters an error

    For quite some time now I've been battling this problem with noVNC in Safari, it goes away if I disable the LastPass extension but nothing else seems to make it go away. Some information: Verions: Safari 12.1.1. MacOS 10.14.5. LastPass 4.31.1. ProxMox 6.0-5. I've tried.

  15. Problem with Safari · Issue #1 · novnc/noVNC · GitHub

    thekvn commented on May 13, 2010. On Safari (4.0.5) on Snow Leopard. The connection succeeds for a few seconds. Performing any kind of interaction within the VNC session causes the following output on the client console. This problem occurs in both encrypted (wss://) and non-encrypted (ws://) connections. ">> connect".

  16. noVNC not working with Safari 15.5 on MacOS 10.15.7 : r/Proxmox

    Is this just me? Or a wider issue? Failed to connect to server. Works fine in Firefox. Proxmox.latest Thanks

  17. How To Remotely Access GUI Applications Using Docker and Caddy on

    By using noVNC and TigerVNC, you can run native applications inside a Docker container and access them remotely using a web browser. Additionally, you can run your application on a server with more system resources than you might have available locally, which can provide increased flexibility when running large applications. ...

  18. Tips

    Create noVNC password. Create novnc.pem certificate. X11 auto login. Start Websockify to proxy [localhost:9000] on port [6080] Creating x11vnc system service. First, it might be a good idea to copy the password file under /etc/. Second, we have to create the service file ourselves: Proxying with nginx. Configure nginx.

  19. Non-US keyboard layouts · Issue #21 · novnc/noVNC · GitHub

    It's a different code from the regular noVNC keyboard handler. In your case for example, AltGr+L will be sent as 'key of row 6 column 5' + 'key of row 4 column 10'. This is what the QEMU VNC server receives and sends to the VM. So, in order to get the "@" in the VM, the VM must match your own keyboard layout.

  20. linux

    However, if I type "< remoteIP>/vnc.html", I get to the noVNC login screen and from there I have access to my screen. Great so far! When I try to access the noVNC login page with my iPhone6 using Safari, I don't get a response from the server. I guess the problem is with the WebSockets proxy failing to start ...

  21. noVNC in fullscreen-mode · Issue #498 · novnc/noVNC · GitHub

    samhed commented on Jun 17, 2015. Especially on devices with small screens it can be very useful to be able to run noVNC in fullscreen. Fullscreen is not supported in Safari on iOS. The only way to achieve this is through adding to homescreen and in that way run the page in WebApp mode. Member Author.

  22. Touch device

    The idea was to use noVNC to stream the app window and offer an experience as native as possible (instead of, for example, RDPing to the server hosting the app and running it from there). And we would like it to be mobile-friendly. Using TightVNC remote resizing the apps seems to scale well, although the quality is a bit poor (I need to check ...

  23. @novnc/novnc

    Explore this online @novnc/novnc sandbox and experiment with it yourself using our interactive online playground. You can use it as a template to jumpstart your development with this pre-built solution. With CodeSandbox, you can easily learn how CodeSandbox has skilfully integrated different packages and frameworks to create a truly impressive ...