This is a text-only version of the following page on https://raymii.org: --- Title : Running gnash on Ubuntu 20.04 (in Docker with X11 forwarding) Author : Remy van Elst Date : 05-07-2020 URL : https://raymii.org/s/tutorials/Running_gnash_on_Ubuntu_20.04.html Format : Markdown/HTML --- As you might have noticed, I'm slowly updating servers and workstations to Ubuntu 20.04, and as always with major upgrades, things break or are removed. Earlier this week I [fixed up pygopherd][1] and today I'll get gnash running again. Gnash is not updated since 2011 and therefore, finally, [removed from the Ubuntu 20.04 repositories][3]. Compiling gnash from source proved to be a lot of effort due to gstreamer dependencies and after a few hours I thought, why not just spin up a Ubuntu 18.04 Docker container, install gnash and forward X11. That took just about 10 minutes and now I'm happily running gnash again. In this tutorial I'll show you how to setup gnash in a docker container with x11 forwarding and host networking. ### Why run gnash? Some of my $dayjob work depends on gnash, although it's actively being replaced with QT. Gnash is a linux flash player, in our case runs on the framebuffer of an embedded device. For development I sometimes need to run gnash on my workstation with an SSH port forward to a development board. I can then locally interact with the UI. Also, the development board does not require a screen, which saves time and space in development setup. <p class="ad"> <b>Recently I removed all Google Ads from this site due to their invasive tracking, as well as Google Analytics. Please, if you found this content useful, consider a small donation using any of the options below:</b><br><br> <a href="https://leafnode.nl">I'm developing an open source monitoring app called Leaf Node Monitoring, for windows, linux & android. Go check it out!</a><br><br> <a href="https://github.com/sponsors/RaymiiOrg/">Consider sponsoring me on Github. It means the world to me if you show your appreciation and you'll help pay the server costs.</a><br><br> <a href="https://www.digitalocean.com/?refcode=7435ae6b8212">You can also sponsor me by getting a Digital Ocean VPS. With this referral link you'll get $100 credit for 60 days. </a><br><br> </p> Here is a picture of gnash running on Ubuntu 20.04, via a local docker container: ![gnash in docker][2] Here is gnash running on my Ubuntu 18.04 workstation, as you can see the window manager theme and styling is missing in Docker, but I can live with that. I do miss my CDE window border though: ![gnash][4] Both screenshots are showing the user interface for one of the coffee machines we develop software for at $dayjob. One shows the user facing menu and one shows the service menu, where a machine operator in this case can view all sorts of counters (beverage, user defined, components). ### Gnash in Docker Lets get started. I assume you have docker installed already. Most of the [X11 forwarding][5] is taken from the article by [Fabio Rehm][5]. Create a folder for your new docker image: mkdir gnash-docker cd gnash-docker Create a Dockerfile: vim Dockerfile Paste the following in it: FROM ubuntu:18.04 RUN apt-get update && apt-get install -y sudo RUN apt-get update && apt-get install -y gnash RUN export uid=1000 gid=1000 && \ mkdir -p /home/developer && \ echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd && \ echo "developer:x:${uid}:" >> /etc/group && \ echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer && \ chmod 0440 /etc/sudoers.d/developer && \ chown ${uid}:${gid} -R /home/developer COPY coffee.swf /home/developer/coffee.swf USER developer ENV HOME /home/developer CMD /usr/bin/gnash /home/developer/coffee.swf You must replace `uid=1000/gid=1000` with your user / group id, which you can find via the `id` command, example output: $ id uid=1000(remy) gid=1000(remy) groups=1000(remy) In my case, I have a `.swf` file I need to run, which is included in the Docker image via the `COPY` step and provided to gnash with the `CMD` step. The base container image is the default Ubuntu 18.04 image, in which gnash is installed, as well as sudo. Sudo and the user creation are required for x11 forwarding. Build the docker container: docker build -t gnash . When it's finished building, you can run it with the following command: docker run -ti --rm -e DISPLAY=$DISPLAY --net=host -v /tmp/.X11-unix:/tmp/.X11-unix gnash `-e DISPLAY=$DISPLAY` and `-v /tmp/.X11-unix:/tmp/.X11-unix` share your local x11 socket and display with the container, required for x11 forwarding. `--net=host` is required for me due to the software automatically connecting to a port on `localhost` (which I forward via SSH to an actual development board). You could omit that if your use case is different. If you need a specific `/etc/gnashrc` file in your container, you must add the file to this folder (with the `Dockerfile`) and add a copy step in the `Dockerfile`: COPY gnashrc /etc/gnashrc If you make changes to the `Dockerfile`, you must build the container again: docker build -t gnash . That's all there is to it to run 9 year old software on a recent version of Ubuntu. [1]: /s/tutorials/Installing_PyGopherd_on_Ubuntu_20.04.html [2]: /s/inc/img/gnash1.png [3]: http://web.archive.org/web/20200704121743/https://answers.launchpad.net/ubuntu/+source/gnash/+question/689469 [4]: /s/inc/img/gnash2.png [5]: http://web.archive.org/web/20200704121710/http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker/ --- License: All the text on this website is free as in freedom unless stated otherwise. This means you can use it in any way you want, you can copy it, change it the way you like and republish it, as long as you release the (modified) content under the same license to give others the same freedoms you've got and place my name and a link to this site with the article as source. This site uses Google Analytics for statistics and Google Adwords for advertisements. You are tracked and Google knows everything about you. Use an adblocker like ublock-origin if you don't want it. All the code on this website is licensed under the GNU GPL v3 license unless already licensed under a license which does not allows this form of licensing or if another license is stated on that page / in that software: This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. Just to be clear, the information on this website is for meant for educational purposes and you use it at your own risk. I do not take responsibility if you screw something up. Use common sense, do not 'rm -rf /' as root for example. If you have any questions then do not hesitate to contact me. See https://raymii.org/s/static/About.html for details.