Guacamole is a clientless remote desktop gateway that provides easy access to remote desktops and applications without installing any client software. In this tutorial, you will learn how to install and configure Guacamole on Fedora Server Latest.
Before installing any new packages, it’s a good practice to update the system packages to their latest versions. To do this, run the following command:
sudo dnf update
Guacamole requires several dependencies to function. The following command installs all necessary packages for Guacamole:
sudo dnf install -y epel-release
sudo dnf install -y gcc make zlib-devel openssl-devel libpng-devel libjpeg-devel freetype-devel libssh2-devel libssh2-devel libssh libssh-devel libvncserver-devel tomcat-webapps createrepo
Guacamole depends on MySQL to store its configuration and connection details. Therefore, to install MySQL server, run the following command:
sudo dnf install -y mariadb-server
After installing the MariaDB server package, start the MariaDB service and enable it to start automatically on system boot:
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
Securing the MariaDB server is essential for the safety of data stored in the database. The following command will secure your MySQL installation:
sudo mysql_secure_installation
Create a new database, a user account, and grant necessary rights to the user.
mysql -u root -p
#Enter the password when prompted
CREATE DATABASE guacamole_db;
CREATE USER 'guacamole_user'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'localhost';
FLUSH PRIVILEGES;
Make sure you replace "password" with a strong one.
Download Guacamole from the official website https://guacamole.apache.org/download/ and extract it to the /opt/
directory using the following commands:
cd /opt
wget https://downloads.apache.org/guacamole/1.4.1/binary/guacamole-1.4.1.war
mv guacamole-1.4.1.war guacamole.war
mkdir -p /opt/guacamole_home
Copy Guacamole WAR (guacamole.war
) file to the Tomcat webapps directory.
cp /opt/guacamole.war /usr/share/tomcat/webapps/
Expand the Guacamole WAR file by creating a new directory with the same name as the WAR file, without the ".war" extension.
mkdir /usr/share/tomcat/webapps/guacamole
unzip /usr/share/tomcat/webapps/guacamole.war -d /usr/share/tomcat/webapps/guacamole
Copy the sample Guacamole configuration file and adjust the settings to the corresponding database and user account.
cp /usr/share/tomcat/webapps/guacamole/WEB-INF/classes/guacamole.properties /etc/guacamole/
echo "mysql-hostname: localhost" |sudo tee -a /etc/guacamole/guacamole.properties
echo "mysql-port: 3306" |sudo tee -a /etc/guacamole/guacamole.properties
echo "mysql-database: guacamole_db" |sudo tee -a /etc/guacamole/guacamole.properties
echo "mysql-username: guacamole_user" |sudo tee -a /etc/guacamole/guacamole.properties
echo "mysql-password: password" |sudo tee -a /etc/guacamole/guacamole.properties
Initialize Guacamole's database schema
sudo cat /usr/share/tomcat/webapps/guacamole/docs/SQL/mysql/schema.sql | mysql -u root -p guacamole_db
Restart the Tomcat and MariaDB services to apply changes.
sudo systemctl restart tomcat.service
sudo systemctl restart mariadb.service
Modify the firewall rules to allow traffic to the Tomcat HTTP and HTTPS ports, which are 8080 and 8443, respectively.
sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp
sudo firewall-cmd --zone=public --permanent --add-port=8443/tcp
sudo firewall-cmd --reload
Now Guacamole is installed and ready to use. Open a web browser and visit http://YOUR_SERVER_IP:8080/guacamole/
.
http://localhost:8080/guacamole/
You will see Guacamole login screen. Login with the default username and password, which are "guacadmin" and "guacadmin," respectively.
You can now configure Guacamole and add remote desktop connections.
If you want to self-host in an easy, hands free way, need an external IP address, or simply want your data in your own hands, give IPv6.rs a try!
Alternatively, for the best virtual desktop, try Shells!