Guacamole 远程桌面网关搭建教程

Apache Guacamole 是一个无客户端的远程桌面网关,用户只需通过 Web 浏览器就能访问 RDP、VNC、SSH 和 Telnet 等远程连接。它非常适合作为统一的远程访问入口,管理多台服务器或工作站。本文将介绍如何在搬瓦工 VPS 上通过 Docker 部署 Guacamole,并配置多种远程连接。

一、Guacamole 核心优势

  • 无客户端:纯 HTML5 实现,无需安装任何插件或客户端软件。
  • 多协议支持:同时支持 RDP、VNC、SSH、Telnet、Kubernetes 终端。
  • 集中管理:在一个 Web 界面中管理所有远程连接。
  • 用户权限:支持多用户,可以精细控制每个用户能访问哪些连接。
  • 会话录制:可以录制远程会话,便于审计和回放。
  • 文件传输:支持在远程桌面和本地之间传输文件。
  • 剪贴板共享:远程和本地之间可以共享剪贴板内容。

二、架构说明

Guacamole 由三个组件组成:

  • guacamole-client:Web 前端应用(运行在 Tomcat 上)。
  • guacd:Guacamole 守护进程,负责实际的远程连接处理。
  • 数据库:存储用户、连接配置等信息(支持 MySQL 或 PostgreSQL)。

三、环境准备

  • 搬瓦工 VPS 一台,建议 1GB 以上内存(使用优惠码 NODESEEK2026 享受 6.77% 折扣)。
  • 已安装 Docker 和 Docker Compose(参考 Docker 安装教程)。
  • 域名一个(推荐配置 HTTPS)。

3.1 创建项目目录

mkdir -p /opt/guacamole/{init,data}
cd /opt/guacamole

3.2 生成数据库初始化脚本

docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --postgresql > /opt/guacamole/init/initdb.sql

四、Docker Compose 部署

cat > /opt/guacamole/docker-compose.yml <<'EOF'
version: '3.8'

services:
  guacd:
    image: guacamole/guacd:latest
    restart: always
    volumes:
      - /opt/guacamole/drive:/drive
      - /opt/guacamole/record:/record

  postgres:
    image: postgres:15-alpine
    restart: always
    environment:
      POSTGRES_DB: guacamole_db
      POSTGRES_USER: guacamole
      POSTGRES_PASSWORD: your_db_password_here
    volumes:
      - /opt/guacamole/init:/docker-entrypoint-initdb.d
      - pg_data:/var/lib/postgresql/data

  guacamole:
    image: guacamole/guacamole:latest
    restart: always
    depends_on:
      - guacd
      - postgres
    ports:
      - "8080:8080"
    environment:
      GUACD_HOSTNAME: guacd
      POSTGRESQL_HOSTNAME: postgres
      POSTGRESQL_DATABASE: guacamole_db
      POSTGRESQL_USER: guacamole
      POSTGRESQL_PASSWORD: your_db_password_here

volumes:
  pg_data:
EOF

五、启动服务

cd /opt/guacamole
docker compose up -d

等待所有容器启动完成:

docker compose ps

访问 http://VPS_IP:8080/guacamole,默认登录账号为 guacadmin,密码为 guacadmin

安全提醒:登录后请立即修改默认密码!

六、配置 Nginx 反向代理

cat > /etc/nginx/sites-available/guacamole <<'EOF'
server {
    listen 80;
    server_name remote.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:8080/guacamole/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_buffering off;
    }

    client_max_body_size 1g;
}
EOF

ln -sf /etc/nginx/sites-available/guacamole /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d remote.yourdomain.com

七、添加远程连接

7.1 添加 SSH 连接

  1. 登录 Guacamole 管理界面。
  2. 进入「设置」 > 「连接」 > 「新建连接」。
  3. 协议选择 SSH,填入主机地址、端口(22)、用户名和密码。
  4. 保存后即可在首页看到该连接并点击使用。

7.2 添加 RDP 连接

连接 Windows 远程桌面:

  1. 新建连接,协议选择 RDP。
  2. 填入 Windows 主机地址和端口(默认 3389)。
  3. 填入 Windows 用户名和密码。
  4. 在「显示」设置中可以调整分辨率和色深。

7.3 添加 VNC 连接

连接 VNC 服务器:

  1. 新建连接,协议选择 VNC。
  2. 填入 VNC 主机地址和端口(默认 5900)。
  3. 填入 VNC 密码。

八、会话录制

Guacamole 支持录制远程会话,便于审计回放:

  1. 编辑连接设置,找到「屏幕录制」部分。
  2. 设置录制路径为 /record
  3. 设置录制文件名,如 ${GUAC_DATE}-${GUAC_TIME}

录制文件保存在宿主机的 /opt/guacamole/record 目录下,可以使用 guacenc 工具转换为视频:

docker run --rm -v /opt/guacamole/record:/record guacamole/guacamole guacenc /record/session_file

九、数据备份

docker compose exec postgres pg_dump -U guacamole guacamole_db > /opt/guacamole/backup_$(date +%Y%m%d).sql

十、常见问题

RDP 连接黑屏

可能是 Windows 安全设置导致,尝试在连接设置中将安全模式设置为 NLA(网络级别认证)或 RDP。

WebSocket 连接失败

确保 Nginx 配置中包含 WebSocket 代理设置。检查是否有其他代理或 CDN 阻断了 WebSocket。

总结

Apache Guacamole 是一个功能强大的远程桌面网关,适合需要管理多台服务器或工作站的用户。配合 RustDesk 使用可以覆盖更多远程访问场景。选购搬瓦工 VPS 请访问 bwh81.net,使用优惠码 NODESEEK2026 享受 6.77% 折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。