
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Glyptodon Enterprise 提供 http://guacamole.apache.org/ 的软件包,遵循最佳实践,接收定期更新并提供商业支持。这些软件包的更新仅通过上游Apache Guacamole的贡献进行,且在不破坏兼容性的前提下进行。
本镜像(glyptodon/guacamole-ssl-nginx)是基于 https://hub.docker.com/_/nginx 构建的Docker化Nginx部署,预配置用于为Guacamole提供SSL终止。它支持:
该镜像作为 Glyptodon Enterprise 的一部分提供,遵循相同的 EULA。通常用于为使用 glyptodon/guacamole 镜像 的容器提供SSL终止。
要启动一个自动初始化为Apache Guacamole提供SSL终止的Nginx实例(包括从Let's Encrypt自动获取证书):
shelldocker run --name some-guacamole-ssl \ -e ACCEPT_EULA=Y \ -e GUACAMOLE_HOSTNAME=some-guacamole \ -e SSL_HOSTNAME=guac.example.net \ -e LETSENCRYPT_ACCEPT_TOS=Y \ -e LETSENCRYPT_EMAIL=your.email@example.net \ -d docker.xuanyuan.run/glyptodon/guacamole-ssl-nginx
其中:
some-guacamole-ssl 是你希望分配给容器的名称some-guacamole 是 Guacamole实例或glyptodon/guacamole容器 的主机名或IP地址guac.example.net 是用于通过互联网访问Guacamole的公共域名your.email@example.net 是你希望注册到Let's Encrypt的电子邮件地址docker-compose如果使用Docker部署Glyptodon Enterprise,强烈推荐使用 https://github.com/docker/compose%EF%BC%8C%E5%9B%A0%E4%B8%BA%E4%BB%BB%E4%BD%95%E4%BD%BF%E7%94%A8%E6%8F%90%E4%BE%9B%E7%9A%84Docker%E9%95%9C%E5%83%8F%E7%9A%84Glyptodon Enterprise部署都将涉及多个容器,docker-compose 可以极大地帮助编排这些容器。
例如,使用Let's Encrypt获取SSL证书并使用自动初始化的MySQL数据库进行身份验证的完整Glyptodon Enterprise部署如下:
yamlversion: "3" services: guacd: image: docker.xuanyuan.run/glyptodon/guacd environment: ACCEPT_EULA: Y db: image: docker.xuanyuan.run/glyptodon/guacamole-db-mysql environment: ACCEPT_EULA: Y MYSQL_RANDOM_ROOT_PASSWORD: "yes" GUACAMOLE_DATABASE: guacamole_db GUACAMOLE_USERNAME: guacamole_user GUACAMOLE_PASSWORD: some_password guacamole: image: docker.xuanyuan.run/glyptodon/guacamole environment: ACCEPT_EULA: Y GUACD_HOSTNAME: guacd MYSQL_HOSTNAME: db MYSQL_DATABASE: guacamole_db MYSQL_USERNAME: guacamole_user MYSQL_PASSWORD: some_password ssl: image: docker.xuanyuan.run/glyptodon/guacamole-ssl-nginx ports: - "80:80" - "443:443" environment: ACCEPT_EULA: Y GUACAMOLE_HOSTNAME: guacamole SSL_HOSTNAME: guac.example.net LETSENCRYPT_ACCEPT_TOS: Y LETSENCRYPT_EMAIL: your.email@example.net
glyptodon/guacamole-ssl-nginx 支持多种生成、获取或使用现有SSL证书的机制。使用的机制取决于创建Docker容器时指定的环境变量。
除了这些机制特定的环境变量外,必须始终指定一组环境变量:
ACCEPT_EULA - 是否接受Glyptodon Enterprise EULA(使用镜像需要接受EULA)GUACAMOLE_HOSTNAME - Guacamole实例的主机名/地址SSL_HOSTNAME - 用于访问Guacamole的公共域名如果未提供现有证书且未请求生成自签名证书,默认使用Let's Encrypt。glyptodon/guacamole-ssl-nginx 镜像将使用"certbot"工具连接Let's Encrypt服务以获取SSL证书。
如果使用Let's Encrypt证书,严格要求的Let's Encrypt特定环境变量只有一个:
LETSENCRYPT_ACCEPT_TOS - 是否接受Let's Encrypt服务条款(使用该服务需要接受Let's Encrypt的服务条款)除了接受其服务条款外,请注意Let's Encrypt强烈建议提供电子邮件地址,以便获取有关证书的重要警报。除非有特殊原因,否则应额外提供电子邮件地址:
LETSENCRYPT_EMAIL - 请求证书时提交给Let's Encrypt的电子邮件地址如果只是测试Let's Encrypt的使用,应使用 https://letsencrypt.org/docs/staging-environment/ 而非生产环境:
LETSENCRYPT_STAGING - 设置为"Y"以使用Let's Encrypt的staging环境而非生产环境获取的证书将在必要时由镜像自动续期。如果获取失败,容器将停止,失败详情将被记录,下次容器启动时将重试该过程。
glyptodon/guacamole-ssl-nginx 镜像利用Docker卷使Let's Encrypt证书和状态在容器重建时保持持久。
如果已从证书颁发机构获取证书,可以通过 CERTIFICATE_FILE 和 PRIVATE_KEY_FILE 环境变量指向相关文件来使用该证书。需要使用Docker卷挂载将相关文件暴露给镜像。
CERTIFICATE_FILE - 证书PEM文件的完整路径PRIVATE_KEY_FILE - 私钥PEM文件的完整路径当证书需要向CA续期时,需要替换证书和私钥并重新加载Nginx。替换挂载的文件后,可以通过向容器进程发送SIGHUP信号来重新加载Nginx:
shelldocker kill --signal=SIGHUP some-guacamole-ssl
如果用于测试部署,镜像可以自动生成和维护自己的自签名证书:
SELF_SIGNED - 设置为"Y"以自动生成用于测试的自签名证书glyptodon/guacamole-ssl-nginx 镜像将在启动时重新生成自签名证书。由于证书在生成后30天过期,镜像还将每21天自动重新生成证书以确保其不会过期。
每次证书重新生成时,将记录证书过期日期和指纹,允许基本的服务器身份验证。
除下面记录的环境变量外,还接受 官方Docker Nginx镜像 支持的所有环境变量,因为官方Nginx镜像是此镜像的基础。
ACCEPT_EULA ACCEPT_EULA 环境变量必须设置为"Y",以表示您接受 Glyptodon Enterprise EULA。此Docker镜像只能在EULA条款下使用。
SSL_HOSTNAME 运行Docker的服务器的面向公众的主机名。此环境变量是必需的,应该是用于通过互联网访问Guacamole的完整公共域名,已与到达运行Docker和此镜像的服务器的IP地址相关联。
GUACAMOLE_HOSTNAME Guacamole服务器的内部主机名或IP地址。此环境变量是必需的,应该是Nginx在处理连接时将在内部连接的主机名/地址。
请注意,此处提供的主机名/地址的Guacamole服务应仅在内部网络上可访问。只有SSL终止服务(此镜像)应面向公众。
GUACAMOLE_PORT Guacamole服务器正在监听的TCP端口号。此环境变量是可选的。如果省略,将默认使用典型的8080端口。
GUACAMOLE_CONTEXT_PATH Guacamole服务所在的路径。此环境变量是可选的。默认情况下,这将为空,表示Guacamole从根路径提供服务。与 glyptodon/guacamole 镜像的 GUACAMOLE_CONTEXT_PATH 环境变量一样,此参数不能包含斜杠。
例如,如果Guacamole在内部运行于 http://some-host/guacamole/,则应将 GUACAMOLE_CONTEXT_PATH 设置为 guacamole。
SELF_SIGNED 如果设置为"Y",则请求为 SSL_HOSTNAME 自动生成自签名证书,而不是使用现有证书或从Let's Encrypt获取新证书。
自签名证书本质上是不安全的。此选项应仅用于测试。
CERTIFICATE_FILE 和 PRIVATE_KEY_FILE SSL证书和相关私钥的PEM文件路径。这些路径是相对于Docker容器的文件系统的。需要使用Docker卷挂载将外部提供的SSL证书PEM文件暴露在容器内。
这些环境变量仅在提供自己的证书时需要。如果使用 SELF_SIGNED 进行测试的自签名证书,它们将被忽略。
LETSENCRYPT_ACCEPT_TOS 如果打算使用Let's Encrypt,LETSENCRYPT_ACCEPT_TOS 环境变量必须设置为"Y",以表示您接受 https://letsencrypt.org/repository/%E3%80%82%E9%99%A4%E9%9D%9E%E5%90%8C%E6%84%8F%E7%9B%B8%E5%85%B3%E6%9C%8D%E5%8A%A1%E6%9D%A1%E6%AC%BE%EF%BC%8C%E5%90%A6%E5%88%99%E4%B8%8D%E8%83%BD%E4%BD%BF%E7%94%A8Let's Encrypt。
此环境变量仅在使用Let's Encrypt时需要。如果使用 CERTIFICATE_FILE 和 PRIVATE_KEY_FILE 提供自己的证书,或使用 SELF_SIGNED 进行测试的自签名证书,则会被忽略。
LETSENCRYPT_EMAIL 请求证书时应提供给Let's Encrypt的电子邮件地址。此环境变量是可选的,如果使用 CERTIFICATE_FILE 和 PRIVATE_KEY_FILE 提供自己的证书,或使用 SELF_SIGNED 进行测试的自签名证书,则会被忽略。
虽然此环境变量是可选的,但请注意Let's Encrypt强烈建议在使用其服务获取证书时提供电子邮件地址。来自certbot工具的帮助内容:
... 强烈不建议这样做,因为在密钥丢失或账户泄露的情况下,您将不可挽回地失去对账户的访问权限。您也将无法收到有关证书即将过期或吊销的通知。订阅协议的更新仍然会影响您,并在网站上发布更新后14天生效。
LETSENCRYPT_STAGING 如果设置为"Y",则请求使用 https://letsencrypt.org/docs/staging-environment/ 获取SSL证书,而非生产环境。如果只是测试Let's Encrypt功能,应使用此选项。
除了直接在环境变量中传递数据外,可以为该镜像支持的任何环境变量添加 _FILE 后缀,以强制从容器内的指定文件读取该变量。由于Docker secrets将敏感数据存储在容器内 /run/secrets/ 下的文件中,这可用于从Docker secrets加载敏感数据。
例如,从Docker secrets加载Let's Encrypt账户电子邮件:
shelldocker run --name some-guacamole-ssl \ -e ACCEPT_EULA=Y \ -e LETSENCRYPT_ACCEPT_TOS=Y \ -e LETSENCRYPT_EMAIL_FILE=/run/secrets/letsencrypt-email \ -d docker.xuanyuan.run/glyptodon/guacamole-ssl-nginx
此Docker镜像仅根据 Glyptodon Enterprise EULA 的条款提供。通过将环境变量 ACCEPT_EULA 的值设置为"Y",表示您拥有有效的Glyptodon Enterprise许可证,并且接受您对此Docker镜像的使用受这些条款约束。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务