From 23461d51985a272add7d11194c4c03b3acc2a408 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Sun, 7 Sep 2025 12:40:29 +0200 Subject: [PATCH] Enhance install_guac.sh for Guacamole setup Added variables for Guacamole installation and MySQL setup. Updated VNC server systemd service configuration and included installation steps for Google Chrome and Tampermonkey. --- install_guac.sh | 134 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 115 insertions(+), 19 deletions(-) diff --git a/install_guac.sh b/install_guac.sh index 3c09e8b..4578e02 100644 --- a/install_guac.sh +++ b/install_guac.sh @@ -8,6 +8,13 @@ RED='\033[0;31m' GREEN='\033[0;32m' NC='\033[0m' +GUACVERSION="1.5.5" +MYSQL_ROOT_PWD="password" +GUAC_USER="guacamole_user" +GUAC_PWD="password" +GUAC_DB="guacamole_db" +TOMCAT_VER=9.0.109 + # Root check if [ "$(id -u)" -ne 0 ]; then echo -e "${RED}Please run as root${NC}" @@ -55,12 +62,30 @@ startxfce4 & EOF chmod +x ~/.vnc/xstartup fi -systemctl enable vncserver@1.service || true -systemctl daemon-reload -systemctl start vncserver@1 || true + +if [ ! -f /etc/systemd/system/vncserver@.service ]; then + cat > /etc/systemd/system/vncserver@.service < /dev/null 2>&1 +ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i +ExecStop=/usr/bin/vncserver -kill :%i +[Install] +WantedBy=multi-user.target +EOF + systemctl daemon-reload + systemctl enable vncserver@1.service +fi +systemctl restart vncserver@1 || true # ----------- Tomcat 9 ----------- # -TOMCAT_VER=9.0.109 if [ ! -d /opt/apache-tomcat-${TOMCAT_VER} ]; then echo -e "${BLUE}>>> Installing Tomcat ${TOMCAT_VER}...${NC}" cd /opt @@ -93,25 +118,96 @@ systemctl daemon-reload systemctl enable --now tomcat9 # ----------- Guacamole ----------- # -echo -e "${BLUE}>>> Installing Guacamole...${NC}" cd /root -curl -sSL https://raw.githubusercontent.com/MysticRyuujin/guac-install/master/guac-install.sh -o guac-install.sh -chmod +x guac-install.sh +if [ ! -d guacamole-server-${GUACVERSION} ]; then + echo -e "${BLUE}>>> Downloading Guacamole ${GUACVERSION}...${NC}" + SERVER="https://downloads.apache.org/guacamole/${GUACVERSION}" + wget -q ${SERVER}/source/guacamole-server-${GUACVERSION}.tar.gz + tar -xzf guacamole-server-${GUACVERSION}.tar.gz + wget -q ${SERVER}/binary/guacamole-${GUACVERSION}.war -O /etc/guacamole.war + wget -q ${SERVER}/binary/guacamole-auth-jdbc-${GUACVERSION}.tar.gz + tar -xzf guacamole-auth-jdbc-${GUACVERSION}.tar.gz +fi -# Patch installer to use /opt/tomcat9 -sed -i 's#/var/lib/${TOMCAT}/webapps/#/opt/tomcat9/webapps/#' guac-install.sh -sed -i 's/service ${TOMCAT} restart/systemctl restart tomcat9/' guac-install.sh -sed -i 's/systemctl enable ${TOMCAT}/systemctl enable tomcat9/' guac-install.sh -sed -i 's/echo -e "${RED}Failed. Can.t find Tomcat package.*exit 1/echo "Using external Tomcat9"/' guac-install.sh +# Build guacd if not installed +if ! command -v guacd >/dev/null 2>&1; then + echo -e "${BLUE}>>> Building guacd...${NC}" + cd guacamole-server-${GUACVERSION} + ./configure --with-systemd-dir=/etc/systemd/system + make -j$(nproc) + make install + ldconfig + cd .. +fi -# Run installer (idempotent: drops db if exists, recreates) -./guac-install.sh --mysqlpwd password --guacpwd password --nomfa --installmysql || true -rm guac-install.sh +# guacd service +if [ ! -f /etc/systemd/system/guacd.service ]; then + cat > /etc/systemd/system/guacd.service </dev/null || (echo -e "${RED}guacd failed to start, try running manually${NC}") +[Service] +Type=simple +ExecStart=/usr/local/sbin/guacd -f +User=daemon +Group=daemon + +[Install] +WantedBy=multi-user.target +EOF +fi +systemctl daemon-reload +systemctl enable --now guacd + +# Deploy webapp + extensions +mkdir -p /etc/guacamole/extensions /etc/guacamole/lib +cp /etc/guacamole.war /opt/tomcat9/webapps/guacamole.war +cp guacamole-auth-jdbc-${GUACVERSION}/mysql/guacamole-auth-jdbc-mysql-${GUACVERSION}.jar /etc/guacamole/extensions/ + +# MySQL setup +echo -e "${BLUE}>>> Setting up MySQL database...${NC}" +mysql -u root -p${MYSQL_ROOT_PWD} -e "DROP DATABASE IF EXISTS ${GUAC_DB}; CREATE DATABASE ${GUAC_DB};" +mysql -u root -p${MYSQL_ROOT_PWD} -e "DROP USER IF EXISTS '${GUAC_USER}'@'localhost'; CREATE USER '${GUAC_USER}'@'localhost' IDENTIFIED BY '${GUAC_PWD}'; GRANT SELECT,INSERT,UPDATE,DELETE ON ${GUAC_DB}.* TO '${GUAC_USER}'@'localhost'; FLUSH PRIVILEGES;" +cat guacamole-auth-jdbc-${GUACVERSION}/mysql/schema/*.sql | mysql -u root -p${MYSQL_ROOT_PWD} ${GUAC_DB} + +cat > /etc/guacamole/guacamole.properties </dev/null 2>&1; then + echo -e "${BLUE}>>> Installing Google Chrome...${NC}" + ARCH=$(dpkg --print-architecture) + if [ "$ARCH" = "amd64" ]; then + CHROME_DEB="https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb" + elif [ "$ARCH" = "arm64" ]; then + CHROME_DEB="https://dl.google.com/linux/direct/google-chrome-stable_current_arm64.deb" + fi + TMP_DEB="/tmp/chrome.deb" + wget -q -O "$TMP_DEB" "$CHROME_DEB" + dpkg -i "$TMP_DEB" || apt-get install -f -y + rm -f "$TMP_DEB" +fi + +# ----------- Tampermonkey ----------- # +EXT_ID="dhdgffkkebhmkfjojejmpbldmpobfkfo" +EXT_DIR="/opt/google/chrome/extensions" +if [ ! -f "$EXT_DIR/$EXT_ID.json" ]; then + echo -e "${BLUE}>>> Registering Tampermonkey...${NC}" + mkdir -p "$EXT_DIR" + cat > "$EXT_DIR/$EXT_ID.json" <