Goal: Use guacamole to get a terminal through HTML5

Chase Wright’s docker setup script will attempt to install docker-ce, use the digital ocean website below to install docker-ce from the docker repository.

Install docker

Use Chase Wright’s docker script to install guacamole

$ sudo ./docker-install.sh -m MYSQL_PASSWORD -g GUAC_DB_PASSWORD

Testing locally

Test that the docker containers are set up properly, do a SSH SOCKSv5 proxy and request the guacamole page

From a local computer


Go to web browser and set the proxy connection to SOCKSv5 and remove localhost from the 'Do not use proxy for these addresses' field.

Browse to the website http://localhost:8080/guacamole and login with guacadmin / guacadmin credentials.

Create a new user and attempt to create a connection. Make sure you change the dropdown to SSH.

Configuration to proxy through nginx

This configuration will allow you to host guacamole on a server and use a reverse proxy to connect to the server.

Edit the /etc/nginx/sites-available/willson.tk file

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
    try_files $uri $uri/ =404;
    root /var/www/html;

# Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;

# EXAMPLE GUACAMOLE CONFIG AREA, requests to https://willson.tk/guac go to guacamole
location /guac/ {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    #proxy_set_header Host $http_host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header X-Forwarded-Proto https;
    proxy_redirect off;
    proxy_connect_timeout      240;
    proxy_send_timeout         240;
    proxy_read_timeout         240;
    # note, there is not SSL here! plain HTTP is used
    proxy_pass http://localhost:8080/guacamole/;
    proxy_buffering off;
    proxy_cookie_path /guacamole /guac/;
    access_log off;