Difference between revisions of "How to install Guacamole in Docker"
(→How to use) |
(→How to use) |
||
| Line 5: | Line 5: | ||
chmod +x guacamole_install.sh | chmod +x guacamole_install.sh | ||
./guacamole_install.sh | ./guacamole_install.sh | ||
| + | |||
| + | #!/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 "======================================" | ||
Revision as of 20:32, 28 May 2025
How to use
mkdir /root/docker cd /root/docker vi guacamole_install.sh chmod +x guacamole_install.sh ./guacamole_install.sh
- !/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 "======================================"