Apache Guacamole 是一个开源的远程桌面网关,由 Apache 软件基金会维护。它最核心的特点是无需在客户端安装任何软件——只需一个支持 HTML5 的浏览器,即可访问远程桌面和服务器。
Apache Guacamole 分为两个核心组件:
guacamole-server — 使用 C 语言编写,提供高效的协议代理(guacd 守护进程),负责将 VNC、RDP、SSH 等协议转换为 Guacamole 自有协议。
guacamole-client — 使用 Java(Servlet)编写,提供 Web 界面和用户管理功能。也是让项目真正「无客户端」的关键层:用户通过浏览器访问 Web 页面,JavaScript 客户端通过 HTTP/WebSocket 与 Java Servlet 通信,再由 guacd 连接到实际的目标服务器。
```text 用户浏览器 → Nginx → Guacamole Client (Java/Tomcat) → guacd (C) → 目标服务器 (VNC/RDP/SSH) ```
官方提供了 Docker 镜像,可快速启动:
```text docker run –name guacd -d guacamole/guacd docker run –name guacamole –link guacd -e MYSQL_HOST=db \
```
支持 MySQL、PostgreSQL 和 SQL Server 作为后端存储。
官方 GitHub 仓库提供了完整的 docker-compose 示例,包含 guacd、guacamole、MySQL 三个容器的一键部署方案。
| 优势 | 劣势 |
|---|---|
| 无需安装客户端,开箱即用 | 视频/图形密集型场景性能有限 |
| 集中管理所有连接 | WebSocket 连接需要专用端口 |
| 开源免费(Apache 2.0 协议) | 大规模部署需额外架构设计 |
| 支持多因子认证 | 对 3D/高帧率画面支持一般 |
| 活跃的社区和商业支持(Glyptodon Enterprise) | 中文资料相对较少 |
Apache Guacamole 是一个成熟的、生产级的远程桌面网关方案,特别适合需要统一管理多种远程协议且客户端环境不可控的场景。如果你的团队需要在不同设备上远程访问服务器、桌面,同时又不想在每个设备上都安装客户端软件,Guacamole 是值得优先考虑的免费方案。