We here at Isos technology use Amazon Workspaces all the time in our consulting practice.

Amazon Workspaces is a great tool for us for a few reasons:

  • Windows / Linux based: We are a Mac shop. When we need access to a Windows desktop, Workspaces is a great alternative to running a local VM (that might bog down our laptops).
  • Persistent: Many times we need to run jobs that take hours (or days). If these ran on our laptops, we would not be able to go home… or into the office… until the job completes. Amazon Workspaces allows us the freedom to close our laptop lids and move about the country without fear of a process or job stopping.
  • Scalable: If we need a ‘big’ instance for a certain project, we can get that… something smaller for a light load.. that too!
  • High bandwidth: Many of our projects require us to download and upload HUGE files. Being on Amazon’s network allows us to sling files around without thinking. It’s great!
  • VPN support: You can run any crazy VPN software you want with all sorts of weird network restrictions… still works!
  • Clients for everything: Chromebook? No problem! Android? SURE! Playstation 4? Not yet.. but I’m sure soon!

However, there are a few downsides:

  • Hosted in Amazon: Many times we need a solution like this but located within a client’s protective network.
  • Expensive: The starting cost is something like… a lot.. More than a few bucks for sure.

Get 80% of the way there with Docker!

(Note, this setup is based on… and modified and upgraded from this github project… give them some love! https://github.com/paimpozhil/DockerX2go).

Install Docker on a VPS… like Ubuntu on Digital Ocean

Head over to your favorite VPS provider and get an el cheap-o VPN instance of Ubuntu 18.04. After that, follow this great install guide on how to get Docker CE going quickly:

https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-18-04

… and install docker-compose for good measure too:

https://www.digitalocean.com/community/tutorials/how-to-install-docker-compose-on-ubuntu-18-04

Clone my Docker Desktop project

Head over to the project page:

https://bitbucket.org/cowmixtoo/mate-desktop/src/master

… and then clone the source code:


git clone git@bitbucket.org:cowmixtoo/mate-desktop.git

Fire up the Desktop!

Go into the mate sub directory and issue this command:


docker-compose up

… and then you’ll see output like this:

march-mate | Adding new user `mate' (1000) with group `mate' ...

march-mate | Creating home directory `/home/mate' ...

march-mate | Copying files from `/etc/skel' ...

march-mate | Adding user `mate' to group `sudo' ...

march-mate | Adding user mate to group sudo

march-mate | Done.

march-mate | => Setting a password to the docker user

march-mate | => Done!

march-mate | ========================================================================

march-mate | You can now connect to this Ubuntu container via SSH using:

march-mate |

march-mate | ssh -p <port> root@<host>

march-mate | and enter the root password 'WJoEZoDxefu8' when prompted

march-mate |

march-mate | mate password : KKnWR0sVKx9M

march-mate | use this to connect to the x2go server from your x2go client!

march-mate | Please remember to change the above password as soon as possible!

march-mate | ========================================================================

march-mate | /usr/lib/python2.7/dist-packages/supervisor/options.py:298: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security.

… store away the passwords for root and mate.

Install your favorite X2go client:

X2go is a VERY secure remote desktop client. It combines the best of X Windows and SSH.

The main webpage has most of the clients available to download:

https://wiki.x2go.org/doku.php

… or on MacOS with HomeBrew:


brew cask install x2goclient

Fire up X2go and your are done:

Here are our suggestions on how to configure your session:

Start a new session!

Fill out session names

  1. Host names
  2. Login name
  3. SSH port
  4. Make sure the command is MATE for the mate desktop.

Adjust the screen geometry:

… disable the sound.

Fire up the session… remember the password from text dump above (the output from the docker-compose).

If it works, you’ll see a desktop like this:

Happy desktop computing!