
schleyk/guacamoleschleyk/guacamole是基于Apache Guacamole的Docker镜像,构建于tomcat:9.0-jdk8-temurin-jammy基础镜像,版本为Guacamole 1.5。该镜像集成所有官方插件,支持LDAP(s)认证、SSO及自定义根证书,解决了原生Guacamole镜像使用旧版Tomcat带来的安全漏洞问题,提供安全、便捷的远程桌面集中管理解决方案。
tomcat:9.0-jdk8-temurin-jammy,隐藏Tomcat版本信息,提升安全性guacamole-auth-cas、guacamole-auth-duo、guacamole-auth-header、guacamole-auth-ldap、guacamole-auth-openidconnect、guacamole-auth-quickconnect、guacamole-auth-totp、guacamole-auth-radiusyamlversion: '2.1' services: guacd: restart: always image: schleyk/guacd:stable depends_on: - db guacamole: restart: always image: schleyk/guacamole:stable links: - guacd - db # volumes: # - ./data:/data # 挂载数据目录(配置文件、扩展等) # - ./custom/custom-start.sh:/opt/guacamole/bin/custom-start.sh # 自定义启动脚本(不要忘记在主机系统上设置为可执行!!!) # - ./custom/server.xml:/usr/local/tomcat/conf/server.xml # 用于ProxyPass配置 environment: - MYSQL_HOSTNAME=db # MySQL数据库主机 - MYSQL_DATABASE=guacamole # 数据库名称 - MYSQL_USER=guacamole # 数据库用户 - MYSQL_PASSWORD=changeme! # 数据库密码(请修改) - GUACD_HOSTNAME=guacd # guacd服务主机 - GUACAMOLE_HOME=/data # Guacamole主目录 # entrypoint: /opt/guacamole/bin/custom-start.sh # 自定义入口点 # extra_hosts: # - "srv-dc01.contoso.local:10.0.0.1" # 用于LDAPs通过WAN的正确FQDN解析 ports: - 8080:8080 # 映射端口 depends_on: - db db: image: mariadb:10 restart: always volumes: - /srv/guacamole/db:/var/lib/mysql # 持久化数据库数据 environment: - MYSQL_ROOT_PASSWORD=changeme! # 数据库root密码(请修改) - MYSQL_DATABASE=guacamole - MYSQL_USER=guacamole - MYSQL_PASSWORD=changeme! phpmyadmin: image: phpmyadmin/phpmyadmin environment: - PMA_HOST=db # 数据库主机 ports: - "8282:80" # PHPMyAdmin访问端口 depends_on: - db
生成初始化SQL脚本:
bashdocker run --rm schleyk/guacamole:stable /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
guacadminguacadmin(首次登录后建议立即修改)| 变量名 | 说明 | 默认值 |
|---|---|---|
MYSQL_HOSTNAME | MySQL数据库主机 | - |
MYSQL_DATABASE | 数据库名称 | guacamole |
MYSQL_USER | 数据库用户 | guacamole |
MYSQL_PASSWORD | 数据库密码 | - |
GUACD_HOSTNAME | guacd服务主机 | guacd |
GUACAMOLE_HOME | Guacamole配置目录 | /data |
| 挂载路径 | 说明 |
|---|---|
/data | 存储配置文件、扩展插件、日志等 |
/opt/guacamole/bin/custom-start.sh | 自定义启动脚本(需主机设置可执行权限) |
/usr/local/tomcat/conf/server.xml | Tomcat配置文件(用于反向代理等) |
所有插件JAR文件存储于镜像内/opt/guacamole目录,激活插件需将对应JAR文件复制到/data/extensions目录(通过卷挂载实现)。
/data/guacamole.propertiespropertiesldap-hostname: srv-dc01.contoso.local # LDAP服务器主机名 ldap-port: 636 # LDAPS端口 ldap-encryption-method: ssl # 加密方式
propertiesldap-hostname: srv-dc01.contoso.local # LDAP服务器主机名 ldap-port: 389 # LDAP端口 ldap-encryption-method: none # 不加密
propertiesldap-search-bind-dn: CN=svc-ldap,OU=example,DC=contoso,DC=local # 绑定用户DN ldap-search-bind-password: changeme! # 绑定用户密码
propertiesldap-user-base-dn: OU=example,DC=contoso,DC=local # 用户搜索基准DN ldap-username-attribute: sAMAccountName # 用户名属性 ldap-user-search-filter: (&(objectClass=*)(memberof=CN=GRP-Guacamole,OU=example,DC=contoso,DC=local)) # 用户组过滤
propertiesldap-group-base-dn: OU=guacgroups,OU=example,DC=contoso,DC=local # 组搜索基准DN(需在Guacamole内预创建对应组)
nginxlocation / { proxy_pass [***] proxy_buffering off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_redirect off; proxy_read_timeout 120; proxy_connect_timeout 10; }
升级SQL模式请参考Apache官方文档。
支持VNC、RDP、SSH的SSO,可使用${GUAC_USERNAME}和${GUAC_PASSWORD}令牌自动填充远程连接的用户名/密码(需用户Guacamole与远程系统凭证一致)。
server.xml的trustedProxies行添加代理IPguacadmin密码manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务