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

$ ssh USER@SERVER_W_GUAC -D SOCKS_PORT

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;
}