mirror of
https://git.koehlerweb.org/frodovdr/guac-install
synced 2025-04-23 12:53:12 +02:00
Compare commits
5 Commits
4e88c3731e
...
80c99871da
Author | SHA1 | Date | |
---|---|---|---|
|
80c99871da | ||
|
ad54920210 | ||
|
a837c4a31b | ||
|
e4ac60c3fa | ||
|
b79c450bbd |
@ -1,6 +1,6 @@
|
|||||||
# guac-install
|
# guac-install
|
||||||
|
|
||||||
I've maintained this script for quite a few years now with the help of the other contributors and it seems to be getting more and more fragmented as libraries and system OSes diverge in their package management. I plan to continue mantaining the install script, but, I do highly suggest that more people try to use the containerized (docker) version. As it should work on basically any 64bit OS with Docker support. (That mean it doesn't work on 32bit ARM/Rasp Pi)
|
I've maintained this script for quite a few years now with the help of the other contributors and it seems to be getting more and more fragmented as libraries and system OSes diverge in their package management. I plan to continue maintaining the install script, but, I do highly suggest that more people try to use the containerized (docker) version. As it should work on basically any 64bit OS with Docker support. (That means it doesn't work on 32bit ARM/Rasp Pi)
|
||||||
|
|
||||||
## NOTE: The fixes below are not to be used UNLESS you're having issues, don't run these for no reason, use the distro maintainers version unless there's a reason not to.
|
## NOTE: The fixes below are not to be used UNLESS you're having issues, don't run these for no reason, use the distro maintainers version unless there's a reason not to.
|
||||||
|
|
||||||
@ -20,7 +20,7 @@ sudo apt -y -t buster-backports install freerdp2-dev libpulse-dev
|
|||||||
|
|
||||||
Script for installing Guacamole 1.3.0 on Ubuntu 16.04 or newer (with MySQL, or remote MySQL). It should also work on pure [Debian](https://www.debian.org/), [Raspbian](https://www.raspberrypi.org/downloads/raspbian/), [Linux Mint](https://linuxmint.com/) (18/LMDE 4 or newer) or [Kali Linux](https://www.kali.org/). I have tested this with Debian 10.3.0 (Buster). **If other versions don't work please open an issue.** It is likely due to a required library having a different name.
|
Script for installing Guacamole 1.3.0 on Ubuntu 16.04 or newer (with MySQL, or remote MySQL). It should also work on pure [Debian](https://www.debian.org/), [Raspbian](https://www.raspberrypi.org/downloads/raspbian/), [Linux Mint](https://linuxmint.com/) (18/LMDE 4 or newer) or [Kali Linux](https://www.kali.org/). I have tested this with Debian 10.3.0 (Buster). **If other versions don't work please open an issue.** It is likely due to a required library having a different name.
|
||||||
|
|
||||||
Run script, enter MySQL Root Password and Guacamole User password. Guacamole User is used to connect to the Guacamole Database.
|
Run script, enter MySQL Root Password and Guacamole User password. Guacamole User is used to connect to the Guacamole Database. Be sure to save these!
|
||||||
|
|
||||||
The script attempts to install `tomcat9` by default (it will fall back on `tomcat8` **if the available version is 8.5.x or newer**, otherwise it will fall back to `tomcat7`). If you want to manually specify a tomcat version there's a commented out line you can modify. Have at it.
|
The script attempts to install `tomcat9` by default (it will fall back on `tomcat8` **if the available version is 8.5.x or newer**, otherwise it will fall back to `tomcat7`). If you want to manually specify a tomcat version there's a commented out line you can modify. Have at it.
|
||||||
|
|
||||||
|
@ -6,6 +6,22 @@ if ! [ $(id -u) = 0 ]; then echo "Please run this script as sudo or root"; exit
|
|||||||
# Version number of Guacamole to install
|
# Version number of Guacamole to install
|
||||||
GUACVERSION="1.3.0"
|
GUACVERSION="1.3.0"
|
||||||
|
|
||||||
|
# Initialize variable values
|
||||||
|
installTOTP=""
|
||||||
|
|
||||||
|
# This is where we'll store persistent data for guacamole
|
||||||
|
INSTALLFOLDER="/opt/guacamole"
|
||||||
|
|
||||||
|
# This is where we'll store persistent data for mysql
|
||||||
|
MYSQLDATAFOLDER="/opt/mysql"
|
||||||
|
|
||||||
|
# Make folders!
|
||||||
|
mkdir -p ${INSTALLFOLDER}/install_files
|
||||||
|
mkdir ${INSTALLFOLDER}/extensions
|
||||||
|
mkdir ${MYSQLDATAFOLDER}
|
||||||
|
|
||||||
|
cd ${INSTALLFOLDER}/install_files
|
||||||
|
|
||||||
# Get script arguments for non-interactive mode
|
# Get script arguments for non-interactive mode
|
||||||
while [ "$1" != "" ]; do
|
while [ "$1" != "" ]; do
|
||||||
case $1 in
|
case $1 in
|
||||||
@ -17,6 +33,8 @@ while [ "$1" != "" ]; do
|
|||||||
shift
|
shift
|
||||||
guacpwd="$1"
|
guacpwd="$1"
|
||||||
;;
|
;;
|
||||||
|
-t | --totp )
|
||||||
|
installTOTP=true
|
||||||
esac
|
esac
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
@ -51,17 +69,39 @@ else
|
|||||||
echo
|
echo
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Install Stuff
|
if [[ -z "${installTOTP}" ]]; then
|
||||||
apt-get update
|
# Prompt the user if they would like to install TOTP MFA, default of no
|
||||||
|
echo -e -n "${CYAN}MFA: Would you like to install TOTP? (y/N): ${NC}"
|
||||||
# Install mysql-client and wget if they don't already have it
|
read PROMPT
|
||||||
apt-get -y install default-mysql-client wget
|
if [[ ${PROMPT} =~ ^[Yy]$ ]]; then
|
||||||
if [ $? -ne 0 ]; then
|
installTOTP=true
|
||||||
echo "Failed to install apt prerequisites: default-mysql-client wget"
|
else
|
||||||
echo "Try manually isntalling these prerequisites and try again"
|
installTOTP=false
|
||||||
exit
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Update apt and install wget if it's missing
|
||||||
|
apt-get update
|
||||||
|
apt-get -y install wget
|
||||||
|
|
||||||
|
# Check if mysql client already installed
|
||||||
|
if [ -x "$(command -v mysql)" ]; then
|
||||||
|
echo "mysql detected!"
|
||||||
|
else
|
||||||
|
# Install mysql-client
|
||||||
|
apt-get -y install default-mysql-client
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Failed to install apt prerequisites: default-mysql-client"
|
||||||
|
echo "Try manually isntalling this prerequisites and try again"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if docker already installed
|
||||||
|
if [ -x "$(command -v docker)" ]; then
|
||||||
|
echo "docker detected!"
|
||||||
|
else
|
||||||
|
echo "Installing docker"
|
||||||
# Try to install docker from the official repo
|
# Try to install docker from the official repo
|
||||||
apt-get -y install docker-ce docker-ce-cli containerd.io
|
apt-get -y install docker-ce docker-ce-cli containerd.io
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
@ -74,7 +114,7 @@ if [ $? -ne 0 ]; then
|
|||||||
echo "Failed to install docker from https://get.docker.com"
|
echo "Failed to install docker from https://get.docker.com"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
rm ./get-docker.sh
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Set SERVER to be the preferred download server from the Apache CDN
|
# Set SERVER to be the preferred download server from the Apache CDN
|
||||||
@ -90,8 +130,24 @@ fi
|
|||||||
|
|
||||||
tar -xzf guacamole-auth-jdbc-${GUACVERSION}.tar.gz
|
tar -xzf guacamole-auth-jdbc-${GUACVERSION}.tar.gz
|
||||||
|
|
||||||
|
# Download and install TOTP
|
||||||
|
if [ "${installTOTP}" = true ]; then
|
||||||
|
wget -q --show-progress -O guacamole-auth-totp-${GUACVERSION}.tar.gz ${SERVER}/binary/guacamole-auth-totp-${GUACVERSION}.tar.gz
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo -e "${RED}Failed to download guacamole-auth-totp-${GUACVERSION}.tar.gz" 1>&2
|
||||||
|
echo -e "${SERVER}/binary/guacamole-auth-totp-${GUACVERSION}.tar.gz"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo -e "${GREEN}Downloaded guacamole-auth-totp-${GUACVERSION}.tar.gz${NC}"
|
||||||
|
tar -xzf guacamole-auth-totp-${GUACVERSION}.tar.gz
|
||||||
|
echo -e "${BLUE}Moving guacamole-auth-totp-${GUACVERSION}.jar (${INSTALLFOLDER}/extensions/)...${NC}"
|
||||||
|
cp -f guacamole-auth-totp-${GUACVERSION}/guacamole-auth-totp-${GUACVERSION}.jar ${INSTALLFOLDER}/extensions/
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Start MySQL
|
# Start MySQL
|
||||||
docker run --restart=always --detach --name=mysql --env="MYSQL_ROOT_PASSWORD=$mysqlrootpassword" --publish 3306:3306 healthcheck/mysql --default-authentication-plugin=mysql_native_password
|
docker run --restart=always --detach --name=mysql -v ${MYSQLDATAFOLDER}:/var/lib/mysql --env="MYSQL_ROOT_PASSWORD=$mysqlrootpassword" --publish 3306:3306 healthcheck/mysql --default-authentication-plugin=mysql_native_password
|
||||||
|
|
||||||
# Wait for the MySQL Health Check equal "healthy"
|
# Wait for the MySQL Health Check equal "healthy"
|
||||||
echo "Waiting for MySQL to be healthy"
|
echo "Waiting for MySQL to be healthy"
|
||||||
@ -112,13 +168,9 @@ echo $SQLCODE | mysql -h 127.0.0.1 -P 3306 -u root -p$mysqlrootpassword
|
|||||||
|
|
||||||
cat guacamole-auth-jdbc-${GUACVERSION}/mysql/schema/*.sql | mysql -u root -p$mysqlrootpassword -h 127.0.0.1 -P 3306 guacamole_db
|
cat guacamole-auth-jdbc-${GUACVERSION}/mysql/schema/*.sql | mysql -u root -p$mysqlrootpassword -h 127.0.0.1 -P 3306 guacamole_db
|
||||||
|
|
||||||
docker run --restart=always --name guacd --detach guacamole/guacd
|
docker run --restart=always --name guacd --detach guacamole/guacd:${GUACVERSION}
|
||||||
docker run --restart=always --name guacamole --detach --link mysql:mysql --link guacd:guacd -e MYSQL_HOSTNAME=127.0.0.1 -e MYSQL_DATABASE=guacamole_db -e MYSQL_USER=guacamole_user -e MYSQL_PASSWORD=$guacdbuserpassword -p 8080:8080 guacamole/guacamole
|
docker run --restart=always --name guacamole --detach --link mysql:mysql --link guacd:guacd -v ${INSTALLFOLDER}:/etc/guacamole -e MYSQL_HOSTNAME=127.0.0.1 -e MYSQL_DATABASE=guacamole_db -e MYSQL_USER=guacamole_user -e MYSQL_PASSWORD=$guacdbuserpassword -e GUACAMOLE_HOME=/etc/guacamole -p 8080:8080 guacamole/guacamole:${GUACVERSION}
|
||||||
|
|
||||||
# Cleanup
|
|
||||||
echo -e "${BLUE}Cleanup install files...${NC}"
|
|
||||||
rm -rf guacamole-auth-jdbc-${GUACVERSION}*
|
|
||||||
echo
|
|
||||||
|
|
||||||
# Done
|
# Done
|
||||||
|
echo
|
||||||
echo -e "Installation Complete\n- Visit: http://localhost:8080/guacamole/\n- Default login (username/password): guacadmin/guacadmin\n***Be sure to change the password***."
|
echo -e "Installation Complete\n- Visit: http://localhost:8080/guacamole/\n- Default login (username/password): guacadmin/guacadmin\n***Be sure to change the password***."
|
||||||
|
@ -235,7 +235,7 @@ if [[ "${NAME}" == "Ubuntu" ]] || [[ "${NAME}" == "Linux Mint" ]]; then
|
|||||||
fi
|
fi
|
||||||
elif [[ "${NAME}" == *"Debian"* ]] || [[ "${NAME}" == *"Raspbian GNU/Linux"* ]] || [[ "${NAME}" == *"Kali GNU/Linux"* ]] || [[ "${NAME}" == "LMDE" ]]; then
|
elif [[ "${NAME}" == *"Debian"* ]] || [[ "${NAME}" == *"Raspbian GNU/Linux"* ]] || [[ "${NAME}" == *"Kali GNU/Linux"* ]] || [[ "${NAME}" == "LMDE" ]]; then
|
||||||
JPEGTURBO="libjpeg62-turbo-dev"
|
JPEGTURBO="libjpeg62-turbo-dev"
|
||||||
if [[ "${PRETTY_NAME}" == *"stretch"* ]] || [[ "${PRETTY_NAME}" == *"buster"* ]] || [[ "${PRETTY_NAME}" == *"Kali GNU/Linux Rolling"* ]] || [[ "${NAME}" == "LMDE" ]]; then
|
if [[ "${PRETTY_NAME}" == *"bullseye"* ]] || [[ "${PRETTY_NAME}" == *"stretch"* ]] || [[ "${PRETTY_NAME}" == *"buster"* ]] || [[ "${PRETTY_NAME}" == *"Kali GNU/Linux Rolling"* ]] || [[ "${NAME}" == "LMDE" ]]; then
|
||||||
LIBPNG="libpng-dev"
|
LIBPNG="libpng-dev"
|
||||||
else
|
else
|
||||||
LIBPNG="libpng12-dev"
|
LIBPNG="libpng12-dev"
|
||||||
@ -404,6 +404,10 @@ rm -rf /etc/guacamole/extensions/
|
|||||||
mkdir -p /etc/guacamole/lib/
|
mkdir -p /etc/guacamole/lib/
|
||||||
mkdir -p /etc/guacamole/extensions/
|
mkdir -p /etc/guacamole/extensions/
|
||||||
|
|
||||||
|
# Fix for #196
|
||||||
|
mkdir -p /usr/sbin/.config/freerdp
|
||||||
|
chown daemon:daemon /usr/sbin/.config/freerdp
|
||||||
|
|
||||||
# Install guacd (Guacamole-server)
|
# Install guacd (Guacamole-server)
|
||||||
cd guacamole-server-${GUACVERSION}/
|
cd guacamole-server-${GUACVERSION}/
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user