$ show itiligent/Easy-Guacamole-Installer
This repository provides a comprehensive, modular set of Bash scripts to automate the installation and configuration of Apache Guacamoleβan open-source remote desktop gateway. The primary orchestrator '1-setup.sh' handles interactive prompts and silent install variables to deploy Guacamole server and client from source, integrate MySQL/MariaDB as the backend database, set up Nginx as a reverse proxy, and optionally configure TLS (self-signed or Let's Encrypt), multi-factor authentication (TOTP, Duo, LDAP), and extra UI features like quick-connect and session recording storage. The scripts are well-structured with extensive error checking, logging, distro-specific workarounds, and support for modular post-install add-ons. Though not a library for reuse, the code demonstrates solid shell scripting craftsmanship, security hardening (fail2ban integration, firewall rules), and separation of concerns. The repository serves as a turnkey deployment toolkit for production-grade Guacamole environments.
The LLM identified 3 files worth highlighting for reuse:
A self-contained template for building a custom Guacamole UI theme as a .jar extension. Includes manifest, CSS, image resources, and translation files. Demonstrates understanding of the Guacamole extension API and provides a reusable pattern for any Guacamole deployment to customize branding and dark mode styling without modifying the core application.
A standalone script that installs and configures fail2ban with a Guacamole-specific jail. Contains intelligent network discovery to auto-whitelist local subnets, parses subnet IDs from all interfaces, and injects a custom regex for matching Tomcat authentication failures. This pattern is reusable for any web application needing fail2ban protection with automatic local network whitelisting.
A clean, parameterized MySQL backup script that is automatically wired into cron during installation. Features configurable retention, single-transaction dump, gzip compression, and email alerts via Postfix. While reliant on injected variables from the main setup, the structure is a good example of an automated database backup pattern that could be adapted to other MySQL services.