====== Installing Guacamole on Docker on Arch Linux ====== ===== About ===== [[http://guac-dev.org/|Guacamole]] is an HTML5 web application used to remotely access computers over RDP, VNC, SSH, and Telnet. The fastest and easiest way to deploy it is via Docker. This is a quick guide for installing Guacamole on Arch Linux. A working Guacamole environment typically has three parts: * guacd - the component that connects to the remote protocols (RDP, SSH, etc) * guacamole - the java web application and user interface * a database used for storing users/roles and connection information The database is not required but makes things a lot easier, and will be used here. ===== Installation ===== ==== Get Started ==== This guide assumes you have a stock Arch Linux installation, with the following packages: base base-devel syslinux openssh tmux open-vm-tools sudo wget htop docker You may not need all of these packages, but I like to have them in a base install. Add your user to the docker group: # gpasswd -a user docker Then either log out or run $ newgrp docker to make your session aware of the group. ==== Deploy guacd ==== Deploy the guacd image: docker run --name guacd -d glyptodon/guacd Nothing else needs to be done with it. ==== Deploy & Configure MySQL ==== Deploy MySQL 5.7.7: docker run --name mysql -e MYSQL_ROOT_PASSWORD= -d mysql:5.7.7 When it completes, copy and save the code produced at the bottom of the output. This is the container ID, and will look similar to this: 4c157241cc824ca0bd3584aa0c9f2dcc8ab40b4695f165e1bd3968ff26146834 Create the tables needed by Guacamole and export them into a file to then be imported into the database: docker run --rm glyptodon/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql This will download guacamole but not run it. Copy the above file into the MySQL container: cp initdb.sql /var/lib/docker/btrfs/subvolumes//root Enter the MySQL container shell: docker exec -it mysql bash Enter the MySQL shell: mysql -uroot You will be prompted for the password you created earlier. Create the Guacamole database: CREATE DATABASE guac_db; Create the Guacamole user and its password: CREATE USER 'guac_user'@'%' IDENTIFIED BY 'password'; Give the Guacamole user proper permissions: GRANT SELECT,INSERT,UPDATE,DELETE ON guac_db.* TO 'guac_user'@'%'; Then finally: FLUSH PRIVILEGES; And: quit Import the database tables from earlier into the new database: cat /root/initdb.sql | mysql -uroot guac_db You'll be prompted for the MySQL password again. You're now done configuring the MySQL Container, and you can exit it. exit ==== Start Guacamole ==== Now run the Guacamole container that was downloaded earlier: docker run --name guacamole --link guacd:guacd --link mysql:mysql \ -e MYSQL_DATABASE=guac_db \ -e MYSQL_USER=guac_user \ -e MYSQL_PASSWORD= \ -d -p 8080:8080 glyptodon/guacamole ==== Login! ==== Once it's all up and running, open up http://:8080/guacamole in a web browser. You should be greeted with a login screen. Use guacadmin for the username and password.