前言

什么是Guacamole?

Apache Guacamole 是无客户端远程桌面网关,是基于 HTML5 的远程桌面控制框架。它支持标准协议,例如 VNC,RDP和SSH。

Guacamole是无客户端的远程桌面网关。它支持VNC,RDP和SSH等标准协议。 之所以称为无客户端,就是因为不需要插件或客户端软件。

感谢HTML5,一旦Guacamole安装在服务器上,你访问各种系统桌面就只需要一个Web浏览器。

【好玩的Docker项目】无需安装客户端!从任何地方远程访问一个或多个桌面!——部署Guacamole远程桌面网关服务

关于 guacamole 更多的介绍,可以到这里看看:https://github.com/TelDragon/guacamole

一、效果展示

GitHub项目地址:https://github.com/TelDragon/guacamole

官网地址:https://guacamole.apache.org/

Docker地址:https://hub.docker.com/r/jwetzell/guacamole

1、登录界面

【好玩的Docker项目】无需安装客户端!从任何地方远程访问一个或多个桌面!——部署Guacamole远程桌面网关服务

Guacamole登录后显示的页面:

【好玩的Docker项目】无需安装客户端!从任何地方远程访问一个或多个桌面!——部署Guacamole远程桌面网关服务

2、VNC展示

“CentOS 7 TigerVNC”连接结果,主要测试TigerVNC,采用VNC协议

【好玩的Docker项目】无需安装客户端!从任何地方远程访问一个或多个桌面!——部署Guacamole远程桌面网关服务

“Ubuntu x11vnc”,测试x11vnc

【好玩的Docker项目】无需安装客户端!从任何地方远程访问一个或多个桌面!——部署Guacamole远程桌面网关服务

3、RDP展示

“Windows 10(Test)”连接的结果展示,测试RDP

【好玩的Docker项目】无需安装客户端!从任何地方远程访问一个或多个桌面!——部署Guacamole远程桌面网关服务

4、SSH展示

“CentOS SSH”连接结果,测试SSH

【好玩的Docker项目】无需安装客户端!从任何地方远程访问一个或多个桌面!——部署Guacamole远程桌面网关服务

二、搭建环境

  • 服务器:腾讯香港轻量应用服务器24元/月VPS一台(最好是选非大陆的服务器)(购买链接
  • 系统:Debian 10(DD脚本 非必需DD用原来的系统也OK)
  • 域名一枚,并做好解析到服务器上(域名购买、域名解析 视频教程
  • 安装好Docker、Docker-compose(相关脚本
  • 【非必需二选一】安装好宝塔面板,并安装好Nginx(安装地址
  • 【非必需二选一】安装好Nginx Proxy Manager(相关教程

三、搭建视频

YouTube:https://youtu.be/ynhsGY8rX-c

哔哩哔哩【完整版本可以点击去吐槽到B站观看】:

四、开始部署

1、搭建Docker环境

参考这篇:【Docker系列】不用宝塔面板,小白一样可以玩转VPS服务器!

2、部署代码

sudo su  cd ~  mkdir -p data/docker_data/guacamole  cd /root/data/docker_data/guacamole  nano docker-compose.yml 

docker-compose.yml文件内容:

version: "3" services:   guacamole:     image: jwetzell/guacamole     container_name: guacamole     volumes:       - ./postgres:/config     ports:       - 8181:8080 volumes:   postgres:     driver: local 

运行

docker-compose up -d  

在浏览器中打开Guacamole Web应用,访问

http://ip:8181 

默认账号:guacadmin
默认密码:guacadmin

建议新建一个用户,然后删除默认的账户。

3、放行相关端口

遇到访问不了,请在宝塔面板的防火墙和服务商的后台防火墙里打开对应端口。

4、配置反向代理

详情参考视频,注释掉Nginx配置文件中的这部分内容:

    location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$     {         expires      30d;         error_log /dev/null;         access_log off;     }      location ~ .*.(js|css)?$     {         expires      12h;         error_log /dev/null;         access_log off;      } 

代码如下:

location / {     proxy_pass http://127.0.0.1:8181/;     rewrite ^/(.*)$ /$1 break;     proxy_redirect off;     proxy_set_header Host $host;     proxy_set_header X-Forwarded-Proto $scheme;     proxy_set_header X-Real-IP $remote_addr;     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;     proxy_set_header Upgrade-Insecure-Requests 1;     proxy_set_header X-Forwarded-Proto https; } 

5、测试连接

SSH

【好玩的Docker项目】无需安装客户端!从任何地方远程访问一个或多个桌面!——部署Guacamole远程桌面网关服务 【好玩的Docker项目】无需安装客户端!从任何地方远程访问一个或多个桌面!——部署Guacamole远程桌面网关服务

RDP

【好玩的Docker项目】无需安装客户端!从任何地方远程访问一个或多个桌面!——部署Guacamole远程桌面网关服务 【好玩的Docker项目】无需安装客户端!从任何地方远程访问一个或多个桌面!——部署Guacamole远程桌面网关服务

返回首页,点击图标即可连接。

【好玩的Docker项目】无需安装客户端!从任何地方远程访问一个或多个桌面!——部署Guacamole远程桌面网关服务

6、高级设置——两步验证(可选)

docker-compose.yml文件内容:

version: "3" services:   guacamole:     image: jwetzell/guacamole     container_name: guacamole     volumes:       - ./postgres:/config     ports:       - 8181:8080     environment:       - EXTENSIONS=auth-totp volumes:   postgres:     driver: local 

建议使用的二步验证工具——Authy

不要用Google的那个Google Authenticator!

不要用Google的那个Google Authenticator!

不要用Google的那个Google Authenticator!

五、更新Guacamole

参考:【Docker系列】Docker更新容器镜像的三种方法

第一步

进入到你docker-compose所在的文件夹下,执行

docker-compose pull 

第二步

重启你的容器

docker-compose up -d --remove-orphans 

第三步(可选)

删除掉旧的镜像

docker image prune  

六、最后

祝大家用得开心,有问题可以去GitHub提Issues,也可以在评论区互相交流探讨。

七、参考资料

https://hub.docker.com/r/jwetzell/guacamole

https://www.youtube.com/watch?v=DGw6P5Lkj-U&t=44s

https://www.youtube.com/watch?v=gsvS2M5knOw&t=964s

https://laosu.ml/2020/10/16/%E9%83%A8%E7%BD%B2Guacamole%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2%E7%BD%91%E5%85%B3%E6%9C%8D%E5%8A%A1/