使用Apache Guacamole,让浏览器也能rdp远程桌面连接

前言

众所周知,我们连接windows server服务器或者处于同一内网里的其他电脑时,一般都会使用mstsc客户端,手机/移动端则是windows app。然而有时也会遇到不方便安装客户端,或是想要随时随地管理服务器的情况,这时候Apache Guacamole就是一个极好的选择。

观前准备

1、一台大带宽服务器

2、已安装docker环境mysql数据库

(建议使用1panel管理服务器,本文将会使用此面板进行演示)

3、科学上网环境

*如果没有,但需要解决Github在国内连接缓慢的问题,可以尝试使用Github Proxy

4、手和脑子

5、编不下去了()

不知道在哪里购买服务器?推荐雨云,价格可接受,操作方便,开箱即用。不论地区选择国内还是国外,一定要注意带宽!!!笔者测试了实际带宽5M的服务器,rdp远程连接时很容易卡住!请一定注意,否则后续用起来会很难受!

创建并初始化mysql数据库

创建一个数据库,填写并记录数据库名,数据库用户名,数据库密码,编码选择utf8mb4,权限选择所有人(%),单击确定保存。

这里笔者选择的数据库名是guacamole_db,用户名是guacamole,密码是GDWzKjaiQHmnx2iA。

接下来,我们测试一下mysql数据库是否正常。

mysql -h 127.0.0.1 -P 3306 -u root -p

如果提示"Enter Password:",就输入你的mysql数据库root密码(1panel用户可在下图位置找到):

如果没有提示,出现找不到mysql命令之类的报错,则说明mysql-client没有安装,执行以下命令安装

# (Ubuntu/Debian)
sudo apt install mysql-client-core-8.0 

安装完成后再次执行刚才的命令即可。

来到这个界面则说明连接成功!

既然数据库没有问题,我们就可以输入EXIT;退出mysql客户端了。

在安装Guacamole之前,我们还需要初始化一下数据库,否则后续Guacamole会出现报错。

通过Github仓库下载“001-create-schema.sql”和“002-create-admin-user.sql”并上传到服务器。

接下来,执行这两条命令将初始化所需表单添加到数据库中。

*注意将“guacamole”替换为你自己的用户名,后续如果提示"Enter Password"输入你刚才选择的密码不是ROOT密码

mysql -h 127.0.0.1 -P 3306 -u guacamole -p guacamole_db < 001-create-schema.sql
mysql -h 127.0.0.1 -P 3306 -u guacamole -p guacamole_db < 002-create-admin-user.sql

接下来,通过刚才检测数据库的命令重新进入mysql命令行管理界面。

执行以下两条命令(注意将“guacamole_db”替换为你自己的数据库名

USE guacamole_db;
SHOW TABLES;

显示以下内容则代表初始化成功,恭喜你!

部署guacamole

我们使用docker-compose进行安装。

输入

nano docker-compose.yml

创建一个docker-compose文件并编辑。

输入以下内容,注意按注释要求修改部分内容:

services:
  guacamole:
    image: guacamole/guacamole
    container_name: guacamole
    restart: always
    ports:
      - "8080:8080" # guacamole最终暴露在公网的端口,如要修改,请更改第一个数字
    depends_on:
      - guacd
    environment:
      GUACD_HOSTNAME: guacd
      MYSQL_HOSTNAME: mysql # 你的mysql数据库地址,如果你的mysql不是通过docker部署,应当改为你的宿主机ip(可通过ip addr | grep inet获得)
      MYSQL_DATABASE: guacamole_db # 你刚才记录的的数据库名
      MYSQL_USER: guacamole # 你刚才记录的的数据库用户名
      MYSQL_PASSWORD: GDWzKjaiQHmnx2iA # 你刚才记录的的数据库密码
    volumes:
      - ./guac-config:/etc/guacamole
    networks:
      - 1panel-network # mysql所处在的docker网络,使用1panel的用户不要更改

  guacd:
    image: guacamole/guacd
    container_name: guacd
    restart: always
    networks:
      - 1panel-network # mysql所处在的docker网络,使用1panel的用户不要更改

networks:
  1panel-network: # mysql所处在的docker网络,使用1panel的用户不要更改
    external: true

按下Ctrl+O保存,再按Ctrl+X退出。

执行sudo docker compose up -d开始拉取镜像。

后续可通过sudo docker compose down停止服务,其他命令笔者不再整理,有需要可以自行查找。

恭喜,guacamole部署成功!

配置账户

在浏览器输入"http://服务器ip:端口号/guacamole"即可看到登录页。

默认用户名、密码为guacadmin、guacadmin。

来到首页,点击设置:

如果想修改用户名或密码,可以前往用户选项卡,创建一个新账户,只需配置以下两个项目,其它全部留空即可:

点击保存,退出guacadmin账户并登录你刚才创建的账户,再次回到用户选项卡,删除guacadmin账户即可。

配置远程连接

来到"连接",选择新建连接:

我们修改这几处:

剩余部分按自己需求填写,笔者不再过多赘述。

单击保存,返回首页连接你的远程桌面即可!

效果展示:

结语

至此,你应该已经跟着我一起,成功搭建guacamole了,以后可以通过网页连接你的云电脑/服务器/个人电脑了~

笔者尝试了使用guacamole连接到服务器并游玩视觉小说,效果不是特别好(当然这也因带宽而异)。但笔者尝试发现可以达到日用需求,所以请放心!

最后,或许你会有通过反向代理guacamole实现域名访问的想法,不过笔者这里并不推荐这种做法,因为经尝试一层反向代理会降低rdp流畅度。

感谢你读到这里!

如果这篇文章帮到了你或者遇到问题,欢迎在评论区留言,这是对我最大的鼓励与支持,谢谢!


使用Apache Guacamole,让浏览器也能rdp远程桌面连接
https://www.leonxie.cn/archives/guacamole-webrdp
作者
LeonXie
发布于
2025年07月27日
更新于
2025年07月27日
许可协议