Difference between revisions of "How to install Guacamole in Docker"

From HyperSecurity Wiki
Jump to: navigation, search
 
(11 intermediate revisions by the same user not shown)
Line 1: Line 1:
==How to use==
+
==With SSL Support==
mkdir /root/docker
+
'''Must have valid DNS A record'''
cd /root/docker
 
vi guacamole_install.sh
 
chmod +x guacamole_install.sh
 
./guacamole_install.sh
 
  
  #!/bin/bash
+
  sudo mkdir /root/docker
   
+
  sudo cd /root/docker
  set -e
+
  sudo wget https://www.hypersecuresolutions.com/scripts/install_guacamole_ssl.sh
+
  sudo chmod +x install_guacamole_ssl.sh
# === Configuration ===
+
  sudo ./install_guacamole_ssl.sh
GUAC_VERSION="1.5.5"
+
 
MYSQL_ROOT_PASSWORD="some_password"
+
==Without SSL Support==
GUAC_DB="guacamole_db"
+
'''For home networks'''
GUAC_USER="guacamole_user"
+
 
GUAC_PASSWORD="some_password"
+
  sudo mkdir /root/docker
INSTALL_DIR="/opt/guacamole"
+
  sudo cd /root/docker
+
  sudo wget https://www.hypersecuresolutions.com/scripts/install_guacamole_no_ssl.sh
echo "[+] Updating system..."
+
  sudo chmod +x install_guacamole_no_ssl.sh
apt-get update -y
+
  sudo ./install_guacamole_no_ssl.sh
 
  echo "[+] Installing Docker and Docker Compose..."
 
  apt-get install -y docker.io docker-compose
 
 
echo "[+] Creating directory structure..."
 
mkdir -p "$INSTALL_DIR/initdb"
 
cd "$INSTALL_DIR"
 
 
echo "[+] Writing docker-compose.yml..."
 
cat > docker-compose.yml <<EOF
 
version: '2'
 
  services:
 
  guacd:
 
    image: guacamole/guacd:${GUAC_VERSION}
 
    container_name: guacd
 
    restart: always
 
   
 
  guacdb:
 
    image: mariadb:10.5
 
    container_name: guacdb
 
    restart: always
 
    environment:
 
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
 
      MYSQL_DATABASE: ${GUAC_DB}
 
      MYSQL_USER: ${GUAC_USER}
 
      MYSQL_PASSWORD: ${GUAC_PASSWORD}
 
    volumes:
 
      - ./initdb:/docker-entrypoint-initdb.d
 
   
 
  guacamole:
 
    image: guacamole/guacamole:${GUAC_VERSION}
 
    container_name: guacamole
 
    restart: always
 
    ports:
 
      - "8080:8080"
 
    environment:
 
      GUACD_HOSTNAME: guacd
 
      MYSQL_HOSTNAME: guacdb
 
      MYSQL_DATABASE: ${GUAC_DB}
 
      MYSQL_USER: ${GUAC_USER}
 
      MYSQL_PASSWORD: ${GUAC_PASSWORD}
 
    depends_on:
 
      - guacd
 
      - guacdb
 
EOF
 
 
echo "[+] Downloading Guacamole MySQL init script..."
 
docker run --rm guacamole/guacamole:${GUAC_VERSION} /opt/guacamole/bin/initdb.sh --mysql > initdb/initdb.sql
 
 
  echo "[+] Starting all containers..."
 
  docker-compose up -d
 
 
echo "[+] Done. Guacamole is being deployed. Waiting for containers to initialize..."
 
 
# Wait for Guacamole to be healthy (basic check)
 
sleep 20
 
 
# Show status
 
docker ps
 
 
echo
 
echo "======================================"
 
echo " Guacamole setup complete!"
 
echo " Access it at: http://<your-server-ip>:8080/guacamole"
 
echo
 
echo " Default login: guacadmin / guacadmin"
 
echo " CHANGE THE DEFAULT PASSWORD after login."
 
echo "======================================"
 

Latest revision as of 00:36, 29 May 2025

With SSL Support

Must have valid DNS A record

sudo mkdir /root/docker
sudo cd /root/docker
sudo wget https://www.hypersecuresolutions.com/scripts/install_guacamole_ssl.sh
sudo chmod +x install_guacamole_ssl.sh
sudo ./install_guacamole_ssl.sh

Without SSL Support

For home networks

sudo mkdir /root/docker
sudo cd /root/docker
sudo wget https://www.hypersecuresolutions.com/scripts/install_guacamole_no_ssl.sh
sudo chmod +x install_guacamole_no_ssl.sh
sudo ./install_guacamole_no_ssl.sh