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.
This commit is contained in:
Christian Krakau-Louis
2025-09-07 12:40:29 +02:00
committed by GitHub
parent 31aa0a33b8
commit 23461d5198
+115 -19
View File
@@ -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 <<EOF
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=root
Group=root
WorkingDirectory=/root
PIDFile=/root/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /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 <<EOF
[Unit]
Description=Guacamole proxy daemon
After=network.target
# ----------- guacd sanity ----------- #
systemctl enable guacd || true
systemctl restart guacd || true
pgrep -x guacd >/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 <<EOF
mysql-hostname: localhost
mysql-port: 3306
mysql-database: ${GUAC_DB}
mysql-username: ${GUAC_USER}
mysql-password: ${GUAC_PWD}
EOF
systemctl restart tomcat9
# ----------- Chrome ----------- #
if ! command -v google-chrome >/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" <<EOF
{
"external_update_url": "https://clients2.google.com/service/update2/crx"
}
EOF
fi
# ----------- Final info ----------- #
IP=$(curl -s ifconfig.me || echo "localhost")