Difference between revisions of "How to install Guacamole in Docker"
(Created page with "#!/bin/bash set -e # === Configuration === GUAC_VERSION="1.5.5" MYSQL_ROOT_PASSWORD="some_password" GUAC_DB="guacamole_db" GUAC_USER="guacamole_user" GUAC_PASSWORD="some_p...") |
|||
| Line 1: | Line 1: | ||
| − | #!/bin/bash | + | #!/bin/bash |
| − | set -e | + | set -e |
| − | # === Configuration === | + | # === Configuration === |
| − | GUAC_VERSION="1.5.5" | + | GUAC_VERSION="1.5.5" |
| − | MYSQL_ROOT_PASSWORD="some_password" | + | MYSQL_ROOT_PASSWORD="some_password" |
| − | GUAC_DB="guacamole_db" | + | GUAC_DB="guacamole_db" |
| − | GUAC_USER="guacamole_user" | + | GUAC_USER="guacamole_user" |
| − | GUAC_PASSWORD="some_password" | + | GUAC_PASSWORD="some_password" |
| − | INSTALL_DIR="/opt/guacamole" | + | INSTALL_DIR="/opt/guacamole" |
| − | echo "[+] Updating system..." | + | echo "[+] Updating system..." |
| − | apt-get update -y | + | apt-get update -y |
| − | echo "[+] Installing Docker and Docker Compose..." | + | echo "[+] Installing Docker and Docker Compose..." |
| − | apt-get install -y docker.io docker-compose | + | apt-get install -y docker.io docker-compose |
| − | echo "[+] Creating directory structure..." | + | echo "[+] Creating directory structure..." |
| − | mkdir -p "$INSTALL_DIR/initdb" | + | mkdir -p "$INSTALL_DIR/initdb" |
| − | cd "$INSTALL_DIR" | + | cd "$INSTALL_DIR" |
| − | echo "[+] Writing docker-compose.yml..." | + | echo "[+] Writing docker-compose.yml..." |
| − | cat > docker-compose.yml <<EOF | + | cat > docker-compose.yml <<EOF |
| − | version: '2' | + | version: '2' |
| − | services: | + | services: |
| − | + | guacd: | |
| − | + | image: guacamole/guacd:${GUAC_VERSION} | |
| − | + | container_name: guacd | |
| − | + | restart: always | |
guacdb: | guacdb: | ||
| Line 57: | Line 57: | ||
- guacd | - guacd | ||
- guacdb | - guacdb | ||
| − | EOF | + | EOF |
| − | echo "[+] Downloading Guacamole MySQL init script..." | + | echo "[+] Downloading Guacamole MySQL init script..." |
| − | docker run --rm guacamole/guacamole:${GUAC_VERSION} /opt/guacamole/bin/initdb.sh --mysql > initdb/initdb.sql | + | docker run --rm guacamole/guacamole:${GUAC_VERSION} /opt/guacamole/bin/initdb.sh --mysql > initdb/initdb.sql |
| − | echo "[+] Starting all containers..." | + | echo "[+] Starting all containers..." |
| − | docker-compose up -d | + | docker-compose up -d |
| − | echo "[+] Done. Guacamole is being deployed. Waiting for containers to initialize..." | + | echo "[+] Done. Guacamole is being deployed. Waiting for containers to initialize..." |
| − | # Wait for Guacamole to be healthy (basic check) | + | # Wait for Guacamole to be healthy (basic check) |
| − | sleep 20 | + | sleep 20 |
| − | # Show status | + | # Show status |
| − | docker ps | + | docker ps |
| − | echo | + | echo |
| − | echo "======================================" | + | echo "======================================" |
| − | echo " Guacamole setup complete!" | + | echo " Guacamole setup complete!" |
| − | echo " Access it at: http://<your-server-ip>:8080/guacamole" | + | echo " Access it at: http://<your-server-ip>:8080/guacamole" |
| − | echo | + | echo |
| − | echo " Default login: guacadmin / guacadmin" | + | echo " Default login: guacadmin / guacadmin" |
| − | echo " CHANGE THE DEFAULT PASSWORD after login." | + | echo " CHANGE THE DEFAULT PASSWORD after login." |
| − | echo "======================================" | + | echo "======================================" |
Revision as of 05:30, 27 May 2025
#!/bin/bash
set -e
# === Configuration ===
GUAC_VERSION="1.5.5"
MYSQL_ROOT_PASSWORD="some_password"
GUAC_DB="guacamole_db"
GUAC_USER="guacamole_user"
GUAC_PASSWORD="some_password"
INSTALL_DIR="/opt/guacamole"
echo "[+] Updating system..."
apt-get update -y
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 "======================================"