mirror of
https://git.koehlerweb.org/frodovdr/guac-install
synced 2025-04-23 12:53:12 +02:00
* Support Upgrade From Older Versions First I've added a MySQL Root Password Prompt, it will verify that the user is entering the correct password and will not continue until the MySQL Root Password is entered correctly. Second, I'm just getting the tomcat version number from /etc/ folder name...This seems to work well enough (instead of making the user edit the script manually)...Maybe someone can come up with a better solution? Third, I'm using the Version.js file to get the currently installed versions number. This allows for supporting multiple version number upgrades (E.G going from 0.8.2 to 0.9.14). The script will now loop through all of the SQL Upgrade files, and apply any that are newer than the OLDVERSION... I.E. Going from 0.9.9 to 0.9.13 should automatically install `upgrade-pre-0.9.10.sql` & `upgrade-pre-0.9.11.sql` & `upgrade-pre-0.9.13.sql` * Remove GUACAMOLE_HOME According to the documentation this is now a default search path, so this isn't required anymore * Version Control for Ubuntu and Debian This might need more work but it should install the proper packages for both Ubuntu and Debian and account for Tomcat 8.0.x and 8.5.x differences... http://tomcat.apache.org/whichversion.html 7.x does not say end of life... but 8.0.x does. The distro maintainers have different versions of Tomcat8 so we can check for 8.5.x or newer options and install, otherwise go the safer route and install Tomcat7 * Remove rm and ln of tomcat/.guacamole According to the documentation this is not required (it may not have been required to begin with?) * No Longer Incubating!
179 lines
6.0 KiB
Bash
179 lines
6.0 KiB
Bash
#!/bin/bash
|
|
|
|
# Version numbers of Guacamole and MySQL Connector/J to download
|
|
VERSION="0.9.14"
|
|
MCJVERSION="5.1.45"
|
|
|
|
# Update apt so we can search apt-cache for newest tomcat version supported
|
|
apt update
|
|
|
|
# Get MySQL root password and Guacamole User password
|
|
echo
|
|
while true
|
|
do
|
|
read -s -p "Enter a MySQL ROOT Password: " mysqlrootpassword
|
|
echo
|
|
read -s -p "Confirm MySQL ROOT Password: " password2
|
|
echo
|
|
[ "$mysqlrootpassword" = "$password2" ] && break
|
|
echo "Passwords don't match. Please try again."
|
|
echo
|
|
done
|
|
echo
|
|
while true
|
|
do
|
|
read -s -p "Enter a Guacamole User Database Password: " guacdbuserpassword
|
|
echo
|
|
read -s -p "Confirm Guacamole User Database Password: " password2
|
|
echo
|
|
[ "$guacdbuserpassword" = "$password2" ] && break
|
|
echo "Passwords don't match. Please try again."
|
|
echo
|
|
done
|
|
echo
|
|
|
|
debconf-set-selections <<< "mysql-server mysql-server/root_password password $mysqlrootpassword"
|
|
debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $mysqlrootpassword"
|
|
|
|
# Ubuntu and Debian have different package names for libjpeg
|
|
# Ubuntu and Debian versions have differnet package names for libpng-dev
|
|
source /etc/os-release
|
|
if [[ "${NAME}" == "Ubuntu" ]]
|
|
then
|
|
JPEGTURBO="libjpeg-turbo8-dev"
|
|
if [[ "${VERSION_ID}" == "16.04" ]]
|
|
then
|
|
LIBPNG="libpng12-dev"
|
|
else
|
|
LIBPNG="libpng-dev"
|
|
fi
|
|
elif [[ "${NAME}" == *"Debian"* ]]
|
|
then
|
|
JPEGTURBO="libjpeg62-turbo-dev"
|
|
if [[ "${PRETTY_NAME}" == *"stretch"* ]]
|
|
then
|
|
LIBPNG="libpng-dev"
|
|
else
|
|
LIBPNG="libpng12-dev"
|
|
else
|
|
echo "Unsupported Distro - Ubuntu or Debian Only"
|
|
exit
|
|
fi
|
|
|
|
# Tomcat 8.0.x is End of Life, however Tomcat 7.x is not...
|
|
# If Tomcat 8.5.x or newer is available install it, otherwise install Tomcat 7
|
|
if [[ $(apt-cache show tomcat8 | egrep "Version: 8.[5-9]" | wc -l) -gt 0 ]]
|
|
then
|
|
TOMCAT="tomcat8"
|
|
else
|
|
TOMCAT="tomcat7"
|
|
fi
|
|
|
|
# Uncomment to manually force a tomcat version
|
|
#TOMCAT=""
|
|
|
|
# Install features
|
|
apt -y install build-essential libcairo2-dev ${JPEGTURBO} ${LIBPNG} libossp-uuid-dev libavcodec-dev libavutil-dev \
|
|
libswscale-dev libfreerdp-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libvncserver-dev libpulse-dev libssl-dev \
|
|
libvorbis-dev libwebp-dev mysql-server mysql-client mysql-common mysql-utilities ${TOMCAT} freerdp ghostscript wget dpkg-dev
|
|
|
|
# If apt fails to run completely the rest of this isn't going to work...
|
|
if [ $? != 0 ]; then
|
|
echo "apt failed to install all required dependencies"
|
|
exit
|
|
fi
|
|
|
|
# Set SERVER to be the preferred download server from the Apache CDN
|
|
SERVER="http://apache.org/dyn/closer.cgi?action=download&filename=guacamole/${VERSION}"
|
|
|
|
# Download Guacamole Server
|
|
wget -O guacamole-server-${VERSION}.tar.gz ${SERVER}/source/guacamole-server-${VERSION}.tar.gz
|
|
if [ ! -f ./guacamole-server-${VERSION}.tar.gz ]; then
|
|
echo "Failed to download guacamole-server-${VERSION}.tar.gz"
|
|
echo "${SERVER}/source/guacamole-server-${VERSION}.tar.gz"
|
|
exit
|
|
fi
|
|
|
|
# Download Guacamole Client
|
|
wget -O guacamole-${VERSION}.war ${SERVER}/binary/guacamole-${VERSION}.war
|
|
if [ ! -f ./guacamole-${VERSION}.war ]; then
|
|
echo "Failed to download guacamole-${VERSION}.war"
|
|
echo "${SERVER}/binary/guacamole-${VERSION}.war"
|
|
exit
|
|
fi
|
|
|
|
# Download Guacamole authentication extensions
|
|
wget -O guacamole-auth-jdbc-${VERSION}.tar.gz ${SERVER}/binary/guacamole-auth-jdbc-${VERSION}.tar.gz
|
|
if [ ! -f ./guacamole-auth-jdbc-${VERSION}.tar.gz ]; then
|
|
echo "Failed to download guacamole-auth-jdbc-${VERSION}.tar.gz"
|
|
echo "${SERVER}/binary/guacamole-auth-jdbc-${VERSION}.tar.gz"
|
|
exit
|
|
fi
|
|
|
|
# Download MySQL Connector-J
|
|
wget -O mysql-connector-java-${MCJVERSION}.tar.gz https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-${MCJVERSION}.tar.gz
|
|
if [ ! -f ./mysql-connector-java-${MCJVERSION}.tar.gz ]; then
|
|
echo "Failed to download mysql-connector-java-${MCJVERSION}.tar.gz"
|
|
echo "https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-${MCJVERSION}.tar.gz"
|
|
exit
|
|
fi
|
|
|
|
# Extract Guacamole files
|
|
tar -xzf guacamole-server-${VERSION}.tar.gz
|
|
tar -xzf guacamole-auth-jdbc-${VERSION}.tar.gz
|
|
tar -xzf mysql-connector-java-${MCJVERSION}.tar.gz
|
|
|
|
# Make directories
|
|
mkdir -p /etc/guacamole/lib
|
|
mkdir -p /etc/guacamole/extensions
|
|
|
|
# Install guacd
|
|
cd guacamole-server-${VERSION}
|
|
./configure --with-init-dir=/etc/init.d
|
|
make
|
|
make install
|
|
ldconfig
|
|
systemctl enable guacd
|
|
cd ..
|
|
|
|
# Get build-folder
|
|
BUILD_FOLDER=$(dpkg-architecture -qDEB_BUILD_GNU_TYPE)
|
|
|
|
# Move files to correct locations
|
|
mv guacamole-${VERSION}.war /etc/guacamole/guacamole.war
|
|
ln -s /etc/guacamole/guacamole.war /var/lib/${TOMCAT}/webapps/
|
|
ln -s /usr/local/lib/freerdp/guac*.so /usr/lib/${BUILD_FOLDER}/freerdp/
|
|
cp mysql-connector-java-${MCJVERSION}/mysql-connector-java-${MCJVERSION}-bin.jar /etc/guacamole/lib/
|
|
cp guacamole-auth-jdbc-${VERSION}/mysql/guacamole-auth-jdbc-mysql-${VERSION}.jar /etc/guacamole/extensions/
|
|
|
|
# Configure guacamole.properties
|
|
echo "mysql-hostname: localhost" >> /etc/guacamole/guacamole.properties
|
|
echo "mysql-port: 3306" >> /etc/guacamole/guacamole.properties
|
|
echo "mysql-database: guacamole_db" >> /etc/guacamole/guacamole.properties
|
|
echo "mysql-username: guacamole_user" >> /etc/guacamole/guacamole.properties
|
|
echo "mysql-password: $guacdbuserpassword" >> /etc/guacamole/guacamole.properties
|
|
|
|
# restart tomcat
|
|
service ${TOMCAT} restart
|
|
|
|
# Create guacamole_db and grant guacamole_user permissions to it
|
|
|
|
# SQL code
|
|
SQLCODE="
|
|
create database guacamole_db;
|
|
create user 'guacamole_user'@'localhost' identified by \"$guacdbuserpassword\";
|
|
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'localhost';
|
|
flush privileges;"
|
|
|
|
# Execute SQL code
|
|
echo $SQLCODE | mysql -u root -p$mysqlrootpassword
|
|
|
|
# Add Guacamole schema to newly created database
|
|
cat guacamole-auth-jdbc-${VERSION}/mysql/schema/*.sql | mysql -u root -p$mysqlrootpassword guacamole_db
|
|
|
|
# Cleanup
|
|
rm -rf guacamole-*
|
|
rm -rf mysql-connector-java-${MCJVERSION}*
|
|
|
|
echo -e "Installation Complete\nhttp://localhost:8080/guacamole/\nDefault login guacadmin:guacadmin\nBe sure to change the password."
|