guacamole 认识

article/2025/9/24 14:57:32

简介:guacamole是apache开源的一款连接远程机器(类似window机器的mstsc工具以及linux的 xfreerdp远程工具)的web应用。

官网:http://guacamole.apache.org/

一、介绍

1、先看看官网提供的架构图

  • 其中guacamole将架构图中  HTML5(JavaScript编写)以及guacamole server中的guacamole(Java编写)部分打成了一个war包,称之为guacamole-client,部署在tomcat等容器中。
  • guacamole server中的guacd(C编写) 称之为guacamole-server,提供了代理和相关的依赖库。
  • 最终由 guacd 部分通过rdp、vnc等协议(利用依赖库)连接到远程的机器。

2、介绍:guacamole是一个开源的用于连接远程桌面(支持RDP、SSH、VNC等协议) 的Web应用程序,可以实现对远程桌面的访问。用户可以不用安装客户端,而直接通过浏览器访问到不受限制的远程机器。

3、连接流程:用户发起对远程桌面的连接时,浏览器会通过建立在http协议基础上的guacamole协议与web容器中的guacamole部分建立连接,然后将桌面的登录数据发送给后端。web容器中的guacamole获取到前端发送的请求后转发给guacd(本地Guacamole代理),由guacd根据获取的数据进行相应协议的连接。之后浏览器发起的桌面操作也都是先发送给web后端,再由后端转发给guacd,guacd再实际去操作对应的桌面进行鼠标/键盘等控制。

4、guacd:guacd是guacamole实现远程连接的核心,是一个安装在guacamole后台运行的守护进程。

二、guacamole服务端(guacd)部署

服务端为 guacamole-server,为c语言编写的服务。 下面讲两种部署方式:

命令部署方式:

1、编译 guacamole-server 需要安装如下依赖:

sudo yum install cairo-devel libjpeg-turbo-devel libpng-devel libtool uuid-devel

2、安装可选依赖,根据要求安装

(1)提供视频转换功能:    sudo yum install ffmpeg-devel

(2)rdp支持,RDP支持需要FreeRDP 2.0.0或更高版:sudo yum install freerdp-devel

(3)基于终端 ssh、telnet的支持:sudo yum install pango-devel

(4)构建ssh的支持:sudo yum install libssh2-devel

(5)构建telnet支持:sudo yum install libtelnet-devel

(6)构建vnc支持:sudo yum install libvncserver-devel

(7)构建Kubernetes支持: sudo yum install libwebsockets-devel

(8)VNC的实验性音频支持:sudo yum install pulseaudio-libs-devel

(9)加密的支持:sudo yum install openssl-devel

(10)对声音进行压缩:sudo yum install libvorbis-devel

3、下载最新guacd服务包

地址:http://guacamole.apache.org/releases/1.1.0/

包:guacamole-server-1.1.0.tar.gz

4、解压

tar -xzf guacamole-server-1.1.0.tar.gz

5、进入目录

cd guacamole-server-1.1.0/

6、运行configure之后,您可以看到找到了哪些库,以及应该构建哪些库的列表,-with init dir=/etc/init.d将guacd的启动脚本安装到/etc/init.d目录中,命令如下:

sudo ./configure --with-init-dir=/etc/init.d   

7、编译安装:

sudo make && make install  

8、更新系统中已安装库的缓存:

ldconfig

9、启动guacd服务

sudo /etc/init.d/guacd start

10、修改服务配置(guacamole默认的配置文件目录为  /etc/guacamole)

根据上面启动后,默认服务端口为 4822, 可以通过 netstat -antl | grep  4822  命令查看主机对该端口进行了监听

可以通过下面方式修改配置:

创建配置文件: /etc/guacamole/guacd.conf,内容如下:

[daemon]
pid_file = /var/run/guacd.pid
log_level = info
[server]
bind_host = 127.0.0.1
bind_port = 4821    #对应服务启动端口号

这个时候重启服务,监听的端口改为 4821

11、配置文件存放路径设置

默认guacamole配置文件存放路径为 /etc/guacamole,我们也可以设置哪些路径的文件作为我们的配置文件:

  • 通过设置系统的 GUACAMOLE_HOME 变量,定义一个存放配置文件的路径
  • 启动程序的用户目录下的  .guacamole 目录下定义的配置文件也会被读
  • 系统的 guacamole.home 属性对应的路径下的配置文件

12、其他配置文件讲解

在配置文件目录下,我们还可以定义其他配置文件:

(1)logback.xml(日志文件的设置,Guacamole使用Logabck来记录日志, 默认记录到console, 也可以指定自己的Logback配置文件):

<configuration><!-- Appender for debugging --><appender name="GUAC-DEBUG" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><!-- 定义日志级别 --><root level="debug"><appender-ref ref="GUAC-DEBUG"/></root>
</configuration>

(2)extensions/ 目录

会在对应的配置文件存放目录的 extensions 目录下存放Guacamole的插件, 启动时默认会加载所有以 .jar结尾的文件

(3)lib/

会在对应的配置文件存放目录的 lib 目录下存放Guacamole插件所需要的依赖, 目录下的.jar文件需要对所有插件可读

docker部署方式:

1、pull镜像:docker pull guacamole/guacd

2、启动镜像(映射本地端口4822):docker run --name my-guacd -d -p 4822:4822 guacamole/guacd

3、另外可以在启动镜像的时候带参数,如下:

定义guacd的日志级别:docker run -e GUACD_LOG_LEVEL=debug -d guacamole/guacd

使用本地的网络:docker run --name my-guacd --network host guacamole/guacd

三、guacamole客户端部署

1、命令部署方式:

(1)获取最新war包

官网地址: http://guacamole.apache.org/releases/1.1.0/   

对应的压缩包:guacamole-client-1.1.0.tar.gz

通过tar命令解压获取到一个war包(或者直接源码打包获取):guacamole-1.1.0.war

(2)在配置文件定义目录下,如/etc/guacamole 下,创建配置文件guacamole.properties,该配置文件指定guacamole-client连接哪个机器的guacd以及对应的端口等信息:

# Hostname and port of guacamole proxy
#Guacamole代理的监听地址, 默认localhost
guacd-hostname: localhost 
#Guacamole代理的监听端口, 默认4822
guacd-port:     4821#Guacamole会话的空连接时间,单位:分钟;  默认:60
#api-session-timeout:

(3)将war包部署到tomcat,启动即可

2、docker部署方式:

(1)pull镜像:docker pull guacamole/guacamole

(2)启动镜像(注意依赖于服务端的 my-guacd):

docker run --name my-guacamole --link my-guacd -d -p 8080:8080 guacamole/guacamole

(3)如果guacd不是通过docker部署的,则启动的时候需要设置guacd的配置:

docker run --name my-guacamole -e GUACD_HOSTNAME=127.0.0.1 -e GUACD_PORT=4822  -d -p 8080:8080 guacamole/guacamole

四、访问

(1)部署完 guacamole-server 和 guacamole-client 后,可以通过浏览器访问,我们启动了8080端口,直接浏览器:

http://127.0.0.1:8080  ,但是这个时候没有任何桌面以及用户信息

(2)在 /etc/guacamole 目录下创建配置文件 user-mapping.xml,内容如下:
 

<user-mapping><!-- 登陆账号密码 --><authorize username="admin" password="123"><!-- 定义一个通过rdp协议登录的window桌面 --><connection name="windows"><protocol>rdp</protocol><param name="hostname">192.168.1.1</param><param name="port">3389</param><!-- 桌面用户名密码 --><param name="username">user</param><param name="password">password</param><!-- 大小自动变化 --><param name="resize-method">display-update</param><!-- 分辨率 --><param name="dpi">100</param><param name="console">true</param><param name="disable-audio">true</param><param name="enable-drive">true</param><param name="drive-path">/usr/guacamole/upload/</param><param name="create-drive-path">true</param><param name="ignore-cert">true</param></connection><!-- 定义一个通过ssh协议登录的centos桌面 --><connection name="centos ssh"><protocol>ssh</protocol><param name="hostname">192.168.1.2</param><param name="port">22</param></connection><!-- 定义一个通过vnc协议登录的桌面 --><connection name="vnc"><protocol>vnc</protocol><param name="hostname">vncdesktop</param><param name="port">3244</param><param name="password">VNCPASS</param></connection></authorize>
</user-mapping>

这个时候访问浏览器, 输入账号: admin, 密码:123 进行登录。 登录成功后选择对应名称的桌面即可进行相应的登录。

(3)另外可以依赖mysql数据库,将桌面等信息存放到mysql,并支持实时添加桌面进行连接


http://chatgpt.dhexx.cn/article/Bb5ERhBD.shtml

相关文章

Guacamole搭建教程

目录 安装系统环境安装依赖环境安装依赖包 下载安装包服务端安装解压并安装&#xff1a;在当前目录下继续执行&#xff1a;安装完成之后&#xff0c;可以使用以下来看guacd是否安装成功&#xff1a; 客户端安装安装安装git安装maven 下载客户端并解压创建/etc/guacamole/文件目…

使用EasyDarwin+FFmpeg实现rtsp推流

一、背景 ​ 最近在学习ffmpeg的基本操作,ffmpeg功能非常强大&#xff0c;可以运行音频和视频多种格式的录影、转换、流功能&#xff0c;包含了libavcodec——这是一个用于多个项目中音频和视频的解码器库&#xff0c;以及libavformat——一个音频与视频格式转换库 可以利用ff…

windows 10 安装EasyDarwin流服务器推流、本地存储

1、EasyDarwin介绍 EasyDarwin 是一款开源的、高性能的rstp流媒体服务器&#xff0c;基于go语言开发。主要功能有&#xff1a;支持rtsp推流分发、支持rtsp拉流分发、录像、检索、回访、关键帧缓存、秒开画面、Restful接口、web后台管理、分布式负载均衡等特点。 2、安装部署&a…

从零开始搭建EasyDarwin环境——Windows系统开发环境Golang的搭建

EasyDarwin在语言上服务端使用的是Golang&#xff0c;前端网页是Vue&#xff0c;因此我们需要有Golang和node的开发环境。上一篇我们介绍了Linux环境下的搭建&#xff0c;本章我们将说明一下如何在Windows下搭建起Golang环境。 一、下载 Go包 Go的官方网站&#xff1a;http://…

EasyDarwin源码分析(三)——rtsp-client

rtsp-client.go 这个模块主要实现了客户端的拉流功能。也就是在网页上点击“拉流分发”按钮后&#xff0c;easydarwin会向用户填写的源地址拉流&#xff0c;然后再转发出去&#xff0c;在向源地址拉流的时候&#xff0c;easydarwin相当于是一个rtsp客户端。所以这里使用rtsp-c…

EasyDarwin源码分析(一)——main.go

main.go ​ easydarwin源码的代码量不是很多&#xff0c;主要的代码也就集中在下面的几个文件夹中&#xff0c;核心业务的代码也就主要集中在rtsp包中。 ​ 而且用Go语言写的代码&#xff0c;不像springboot那样&#xff0c;你在读源码前至少要对Springboot框架有一定的学习&a…

关于EasyDarwin二次开发编译后无法以服务启动的问题

问题描述&#xff1a; 在win7上二次开发EasyDarwin后&#xff0c;编译出的EasyDarwin.exe运行正常&#xff0c;或是使用ServiceInstall-EasyDarwin.exe在系统中注册服务&#xff0c;启动服务也正常。 于是打包将其部署在win server 2008上&#xff0c;发现如果直接运行EasyDar…

EasyDarwin接口的使用——使用C++编写客户端实现与EasyDarwin服务器的交互

EasyDarwin提供了接口供客户端使用&#xff0c;以实现客户端与其的交互。比如&#xff0c;根据EasyDarwin的8.1.0版本的接口文档&#xff0c;有获取推流列表的接口如下所示&#xff1a; 我们可以测试一下上述接口。首先启动EasyDarwin服务器&#xff0c;启动后在浏览器&#xf…

EasyDarwin的交叉编译

easyDarwin的交叉编译 前言一、EasyDarwin简介二、配置环境介绍三、交叉编译过程1.go环境的搭建2.编译 后记 前言 最近项目有个需求是在嵌入式设备中运行一个RTSP服务器&#xff0c;满足推流到该服务器后&#xff0c;其他终端设备能够从这个RTSP服务器中拉RTSP流出来。找来找去…

EasyDarwin 流服务器搭建及相关软件教程

一、产品 运行 exe 文件 启动 服务器 双击 运行 EasyDarwin.exe 会出现如下界面&#xff1a; 在 浏览器打开 http://192.168.10.80:10008 2.解压ffmpeg 添加环境变量&#xff1a;复制C:\SoftWare\ffmpeg-6.0-essentials_build\bin路径&#xff0c;添加环境变量中 的用户变…

EasyDarwin —— ubuntu搭建rtsp服务,使用FFmpeg进行rtsp推拉流

开源流媒体服务器 EasyDarwin是由国内开源流媒体团队开发和维护的一款开源流媒体平台框架&#xff0c;从2012年12月创建并发展至今&#xff0c;从原有的单服务的流媒体服务器形式&#xff0c;扩展成现在的云平台架构的开源项目&#xff0c;更好地帮助广大流媒体开发者和创业型企…

EasyDarwin测试

EasyDarwin是由国内开源流媒体团队维护的一款开源流媒体平台框架&#xff0c;开发语言是go语言。本文主要使用它作为RTSP服务器使用&#xff0c;并以此进行测试。方便之后记录。 &#xff08;1&#xff09;软件获取&#xff08;自行下载&#xff0c;具体代码编译方式&#xff0…

流媒体开发之EasyDarwin搭建rtsp server

0 背景 EasyDarwin 旭帆科技开源的流媒体服务器软件&#xff0c;EasyDarwin 社区专注于传统安防&#xff08;RTSP/RTP/Onvif&#xff09;流媒体技术&#xff0c;能够帮助开发者快速搭建流媒体服务平台&#xff0c;更快、更简单地实现流媒体直播与点播功能。本文主要介绍 rtsp …

EasyDarwin ffmpeg+EasyDarwin开源流媒体服务器平台试用笔记(视频流rtsp)

服务 Github https://github.com/EasyDarwin/EasyDarwin , server will invoking ffmpeg. 1. download server 下载EasyDarwin-windows-8.1.0-1901141151 双击EasyDarwin.exe 访问http://127.0.0.1:10008/#/ 2. download FFmpeg 下载FFmpeg : https://github.com/BtbN…

从零开始搭建EasyDarwin环境——linux系统共享目录实现

EasyDarwin是一款高性能开源RTSP流媒体服务器&#xff0c;基于Go语言研发&#xff0c;维护和优化&#xff1a;RTSP推模式转发、RTSP拉模式转发、录像、检索、回放、关键帧缓存、秒开画面、RESTful接口、Web后台管理、分布式负载均衡。EasyDarwin从最初的c到后面的nodejs再到现在…

使用EasyDarwin搭建Rtsp Server从大华摄像头拉流进行多路分发

使用EasyDarwin搭建Rtsp Server从大华摄像头拉流进行多路分发 问题服务搭建推流命令大华摄像头配置 问题 大华摄像头&#xff08;型号&#xff1a; DH-IPC-HDW1235C-A 2.8MM 200万高清网络摄像机 &#xff09;目前支持20路连接&#xff0c;实际使用测试过程中&#xff0c;只能…

EasyDarwin —— windows搭建rtsp服务,使用FFmpeg进行rtsp推拉流

开源流媒体服务器 EasyDarwin是由国内开源流媒体团队开发和维护的一款开源流媒体平台框架,从2012年12月创建并发展至今,从原有的单服务的流媒体服务器形式,扩展成现在的云平台架构的开源项目,更好地帮助广大流媒体开发者和创业型企业快速构建流媒体服务平台,更快、更简单地…

简单的流媒体服务器(EasyDarwin的安装搭建)

再项目中需要用到简单的视频播放&#xff0c;想着干脆搭建一个流媒体服务器&#xff0c;后期做视频点播 直播包括视频服务器的负载&#xff0c;所以索性开始自己探索搭建视频流媒体服务器&#xff0c;用于存储和传输视频资源 相关概念 流媒体 流媒体&#xff08;Streaming Me…

【ZYNQ】ZYNQ7000 私有定时器及其驱动应用示例

定时器简介 在 ZYNQ 嵌入式系统中&#xff0c;定时器的资源是非常丰富的&#xff0c;每个 Cortex-A9 处理器都有各自独立的 32 位私有定时器和 32 位看门狗定时器&#xff0c;这两个 CPU 同时共享一个 64 位的全局定时器&#xff08;GT&#xff09;。 系统框图 私有定时器 特…

ZYNQ开发系列——使用AXI4LITE接口进行PS和PL交互

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列——使用AXI4LITE接口进行PS和PL交互 前言PS端AXI接口AXI4LITE slave模块的设计后记前言 前面我们讲到使用AXI4LITE来作为总线接口来实现PS和PL的交互。同时我们为了支持《从零开始研发GPS接收…