| sudo docker run --rm guacamole/guacamole:1.5.5 /opt/guacamole/bin/initdb.sh --postgresql | sudo tee /opt/guacamole/init/initdb.sql > /dev/null
|
|
|
| ls -lh /opt/guacamole/init/initdb.sql
|
|
|
| sudo tee /opt/guacamole/docker-compose.yml > /dev/null << 'EOF'
|
| services:
|
| guac-postgres:
|
| image: postgres:15-alpine
|
| container_name: guac-postgres
|
| restart: always
|
| environment:
|
| POSTGRES_DB: guacamole_db
|
| POSTGRES_USER: guacamole_user
|
| POSTGRES_PASSWORD: StrongPassword123!
|
| volumes:
|
| - ./init:/docker-entrypoint-initdb.d:ro
|
| - ./data:/var/lib/postgresql/data
|
| networks:
|
| - guac-net
|
|
|
| guacd:
|
| image: guacamole/guacd:1.6.0
|
| container_name: guacd
|
| restart: always
|
| network_mode: "host"
|
|
|
| guacamole:
|
| image: guacamole/guacamole:1.6.0
|
| container_name: guacamole
|
| restart: always
|
| ports:
|
| - "8080:8080"
|
| environment:
|
| GUACD_HOSTNAME: 127.0.0.1
|
| GUACD_PORT: 4822
|
| POSTGRESQL_HOSTNAME: guac-postgres
|
| POSTGRESQL_PORT: 5432
|
| POSTGRESQL_DATABASE: guacamole_db
|
| POSTGRESQL_USER: guacamole_user
|
| POSTGRESQL_PASSWORD: StrongPassword123!
|
| depends_on:
|
| - guac-postgres
|
| networks:
|
| - guac-net
|
|
|
| networks:
|
| guac-net:
|
| driver: bridge
|
| EOF
|
|
|
| # 启动 Guacamole 服务组 / Launch stack in background
|
| cd /opt/guacamole && sudo docker compose up -d
|
| sudo docker compose ps # 验证三个容器 STATUS 均为 Up 或 running
|
|
|
| # 防火墙最小放行 (仅 Web 与 SSH) / Configure minimal UFW rules
|
| sudo ufw allow 22/tcp && sudo ufw allow 8080/tcp
|
| sudo ufw --force enable && sudo ufw status verbose
|
|
|
|
|
| sudo adduser user03
|
| sudo -u user03 sh -c 'printf "%s\n" startxfce4 > /home/user03/.xsession'
|
| sudo -u user03 cat /home/user03/.xsession
|