C IQdesktop on AWS

Below a very simple approach is shown on how IQdesktop can be quickly installed on an AWS instance.

C.1 Requirements

  • Console access to an AWS instance running a standard Ubuntu 18.04 LTS or 20.04 LTS
  • Admin rights on the AWS instance (sudo command)
  • AWS instance accessible through its IP address
  • VNC port open on the AWS instance, allowing a user to connect to IQdesktop on the AWS instance. Practically this means that you should open port 5900 on your instance to run this example. Note that the port number can be customized.

C.2 Installing IQdesktop on AWS

C.2.1 Preparation of the AWS instance

  • Start an AWS instance with a clean standard Ubuntu (18.04 LTS or 20.04 LTS)
  • Access the AWS instance via the command line
  • Execute the following code by copy and pasting it into the console:
# Installation of docker
sudo apt-get update
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker $USERHOST

# Installation of docker compose
sudo apt-get update
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

C.2.2 Downloading IQdesktop

Execute the following code by copy and pasting it into the AWS console. This will download the latest public version of IQdesktop onto the AWS instance. A different version of IQdesktop could easily be installed in a different manner. This IQdesktop version could also be hosted in the existing cloud ecosystem and thus be obtained by a “cp” command or a “curl”, etc. No limits!

# Download IQdesktop:
sudo docker pull intiquan/iqdesktop:latest

C.2.3 Configuring IQdesktop

  • A config file needs to be defined for each user, following the guide defined here
  • This config file needs to be made available on the AWS instance
  • For convenience an example config file is provided as download – enter on the AWS console:
# Get an example config.yml file on the AWS instance
curl https://iqdesktop.intiquan.com/aws/config.yml --output config.yml

C.2.4 Starting IQdesktop

# Starting the IQdesktop container
sudo docker-compose --file config.yml up

C.3 Three-liner Installation

Instead of copying all the script code above, the installation can be simplified. An example is the following:

  • Connect to AWS console as before
  • Simply execute in the AWS console:
curl https://iqdesktop.intiquan.com/aws/IQdesktop_AWS_Installation.sh --output install.sh
chmod +x install.sh
  • The install.sh script could be customized per user
  • Such a script might be executed automatically once a dedicated AWS instance is started
  • The config.yml file defines all settings that are relevant for the user
  • Running the script on AWS takes about 5 minutes – and IQdesktop is set up

C.4 Connecting to IQdesktop on AWS

Connection to IQdesktop happens via VNC. The default port is 5900, but this can be changed in the config.yml file. Important is that the firewall on the AWS machine allows connection to the VNC port!

C.5 Conclusion

  • Installation of IQdesktop on AWS instances is straight forward, easy, and quick!
  • Instead of using a more complex system such as the EPAM Cloud Pipeline, simple shell scripts developed by the IT Team would enable a comfortable and flexible deployment of IQdesktop in the cloud.
  • Systems such as the EPAM Cloud Pipeline might have certain general advantages though.

C.6 Securing your connection to IQdesktop on AWS

You certainly want to use an encrypted connection. This is easily possible. Read more here.

C.7 Data exchange between local and AWS system

  • Cloud based file servers can be mounted to the AWS host instance and the mounted folders can be mapped as volumes into IQdesktop#
  • S3 buckets can conveniently mounted inside an IQdesktop container, using the mountS3 "bucketname" command. See more here.
  • SVN server based
  • Secure file copy based
  • More information here