Sat 07 September 2019 | -- (permalink)
A previous article mentioned strange games running Xvfb
inside a
Docker container. Today we have a few strange games using VNC and
X11.
Sometimes you need to run something dangerous in a web browser, or need to run a web browser somewhere you're not. An example of the first might be a dodgy AJAX interface to some remote service. An example of the latter might be needing to use an HTML5-based upload mechanism via an interface which takes a server down for the duration of the upload, and you're at the wrong end of a bad consumer grade network connection, so you really want to stage the upload to a better-connected server before pushing the button.
If you already have Docker infrastructure, one way to solve this would
be to stuff Firefox and Xvnc
into a container, which you can then
get to pop up on your desktop via a VNC client. Forget about
micro-services, this thing is a pig, but hey, it works.
Here's a proof of concept. Season to taste, and remember that you almost certainly want to tunnel VNC through ssh rather than running raw VNC on the network. But it also works just fine locally, so you can spin up a burner Firefox on your laptop and talk to it via VNC on the loopback interface.
Say you just got a Raspberry Pi 4 and want to use it to control a
display or projector, but don't want to leave a keyboard and trackball
connected to it. No worries. x11vnc
is an X11 client that mirrors
both the display and they input devices out through a VNC connection,
so you can just ssh into your Pi 4, tunneling VNC as suggested in the
documentation, and control your Pi 4 from your VNC viewer.
This isn't restricted to a Raspberry Pi, of course, you can use it
with a desktop Linux or *BSD machine. In theory you could even use it
to tunnel into a Docker container running Xvfb
but if there's a sane
application for that I haven't thought of it yet.