关于搭建guacamole-server.1.4.0简单步骤,及问题记录

2023-05-16

问题1: 在guacamole-server.1.4.0目录下,执行./configure,发现记录中出现以下警告,并且VNC没有成功加载(libvncserver.devel已经导入yum的情况下)

libvncserver appears to be built against
   libgcrypt, but the libgcrypt headers
   could not be found. VNC will be disabled.

解决: 需要加载 libgcrypt: 执行yum -y install crypt*(一般执行这一步就可以了);yum install libgcrypt*(可以不支执行)

简单安装步骤:

1、下载guacamole相关资源包:Apache Guacamole™: 1.4.0

2、guacamole相关依赖参考官网-Installing Guacamole natively — Apache Guacamole Manual v1.4.0

预备安装

yum install gcc

基础依赖

 yum -y install cairo-devel libjpeg-turbo-devel libpng-devel uuid-devel

扩展依赖,如VNC、RDP、SSH协议等等

 yum -y install ffmpeg-devel(如果导入失败,则执行以下操作,安装ffmpeg时间有点长)

安装ffmpeg时需要提前安装yasm插件。下面开始安装

# wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
# tar -xvf yasm-1.3.0.tar.gz
# cd yasm-1.3.0/
# ./configure && make && make install

添加可选依赖

yum -y install cairo-devel libjpeg-turbo-devel libpng-devel uuid-devel
yum -y install freerdp-devel pango-devel
yum -y install libssh2-devel libtelnet-devel libvncserver-devel libwebsockets-devel
yum -y install pulseaudio-libs-devel openssl-devel
yum -y install libvorbis-devel libwebp-devel


开始安装ffmpeg,时间有点长

# wget http://ffmpeg.org/releases/ffmpeg-4.2.2.tar.gz
# tar -xvf ffmpeg-4.2.2.tar.gz
# cd ffmpeg-4.2.2/
# ./configure && make && make install 

解压之前下载好的服务端包:guacamole-server-1.4.0.tar.gz
tar -zxvf guacamole-server-1.4.0.tar.gz
cd guacamole-server-1.4.0

预编译,并检查添加依赖是否生效
./configure --with-init-dir=/etc/init.d
make && make install
ldconfig

因为我这边只需要安装服务端,只需要在/etc/guacamole目录下新增配置文件guacd.conf:

[daemon]
pid_file = /var/run/guacd.pid
log_level = info

[server]
bind_host = 0.0.0.0
bind_port = 4822

[ssl]
server_certificate = /etc/ssl/certs/guacd.crt
server_key = /etc/ssl/private/guacd.key
 

简单写springboot 集成自定义guacamole客户端,为了方便使用我采用集成GuacamoleWebSocketTunnelEndpoint

 @Override
    public GuacamoleTunnel createTunnel(Session session, EndpointConfig endpointConfig) throws GuacamoleException {
        System.out.println("createTunnel WebSocket start");
        String guacaMoleHostName = "127.0.0.1"
        int guacaMolePort = 4822;
      
        // 获取前端参数
        Map<String, List<String>> requestMap = session.getRequestParameterMap();
        Integer height = Integer.valueOf(getMapByKey(requestMap, "height"));
        Integer width = Integer.valueOf(getMapByKey(requestMap, "width"));
        GuacamoleClientInformation information = new GuacamoleClientInformation();
//        information.setOptimalScreenHeight(height);
//        information.setOptimalScreenWidth(width);
        // 获取远程服务器相关信息
        String protocol = getMapByKey(requestMap, "protocol");
        String port = getMapByKey(requestMap, "port");
        String hostName = getMapByKey(requestMap, "hostName");
        String userName = getMapByKey(requestMap, "userName");
        String password = getMapByKey(requestMap, "password");

        String dataTime = DateUtils.getNowTime(SysConstant.DATE_LONG_PATTERN);

        // 通过自定义SpringContextUtils获取springboot容器内的bean
      
        ComServerServiceImpl comServerService = SpringContextUtils.getBean(ComServerServiceImpl.class);
        
        
        GuacamoleConfiguration configuration = new GuacamoleConfiguration();
        // 注意:后台不要自定义configuration.setConnectionID, 否则前端无法连接tunnel
        configuration.setProtocol(protocol);
        configuration.setParameter("hostname", hostName);
        configuration.setParameter("port", port);
        configuration.setParameter("username", userName);
        configuration.setParameter("password", password);
        configuration.setParameter("ignore-cert", "true");

//        String fileName = DateUtils.getNowTime() + ".guac";//文件名
//        String outputFilePath = "/home/guacamole";
//        //添加会话录制--录屏
//        configuration.setParameter("recording-path", outputFilePath);
//        configuration.setParameter("create-recording-path", "true");
//        configuration.setParameter("recording-name", fileName);

        GuacamoleSocket socket = new ConfiguredGuacamoleSocket(
                new InetGuacamoleSocket(guacaMoleHostName, guacaMolePort),
                configuration,
                information
        );

        GuacamoleTunnel tunnel = new SimpleGuacamoleTunnel(socket);
        System.out.println("createTunnel WebSocket success");
        return tunnel;
    }

前端html测试代码


            var encodePara = "34d8b7e8c4145911969f9246688ad39c4a";
            var param = "sid="+sid+"&height=768&width=1024&protocol=rdp&port=3389&hostName=116.196.106.221&userName=administrator&password="+encodePara;
             
            var guac = new Guacamole.Client(
                //new Guacamole.HTTPTunnel("/guacamole/tunnel")
                // websoket "&":表示结束,注意特殊字符encodeURIComponent(val)编码
                new Guacamole.WebSocketTunnel("/webSocket?"+ param +"&")
             );

            // Add client to display div
            display.appendChild(guac.getDisplay().getElement());

            // Error handler
            guac.onerror = function(error) {
                alert(JSON.stringify(error));
            };

            param = "height=768&width=1024&protocol=ssh&port=22&hostName=172.17.5.9&userName=test&password=test";
            // httpServlet request params Connect
            guac.connect(/*param*/);

            // Disconnect on close
            window.onunload = function() {
                guac.disconnect();
            }

参考地址:Guacamole系列一:服务端安装_橄榄丝的博客-CSDN博客_guacamole安装

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于搭建guacamole-server.1.4.0简单步骤,及问题记录 的相关文章

  • GD32F303移植FreeRTOS

    GD32F303移植FreeRTOS 一 移植环境 系统 xff1a WIN7 MDK xff1a keil v5 26 开发板 xff1a GD32F303C EVAL 固件库 xff1a V1 0 2 FreeRTOS版本 xff1a
  • FreeRTOS静态创建任务

    一 静态方式创建任务和删除任务 1 gt 测试环境 系统 xff1a WIN7 MDK xff1a keil v5 26 开发板 xff1a GD32F303C EVAL 固件库 xff1a V1 0 2 FreeRTOS版本 xff1a
  • python实现smote处理正负样本失衡问题

    机器学习中难免遇到正负样本不平衡问题 xff0c 处理办法通常有梁总 xff0c 一 xff1a 过采样 xff0c 增加正样本数据 xff1b 二 xff1a 欠采样 xff0c 减少负样本数据 xff0c 缺点是会丢失一些重要信息 sm
  • echarts 饼图hover效果,饼图中间显示自定义信息

    option 61 tooltip show true trigger 39 item 39 position 39 35 39 39 32 39 backgroundColor 39 implements 39 textStyle col
  • MATLAB在线工具

    在线Matlab工具 xff0c 不用安装matlab了 xff0c 里面的语法几乎和matlab相同 matlab网页版 xff1a 1 octave online http octave online net 2 matlab onli
  • Apache IoTDB下载与安装

    1 中文官方文档 xff1a https iotdb apache org zh 2 下载地址 xff1a https iotdb apache org zh Download 发行版本踩了个小坑 xff1a 1 0 0版本启动时如果作为单
  • 【游戏开发】游戏开发书籍汇总

    1 游戏设计的艺术 2 游戏设计的100个原理 3 我在美国学游戏设计 4 游戏新手村 xff1a 从零开始做游戏 5 Directx游戏开发终极指南 6 Windows游戏编程大师技巧 7 快乐之道 xff1a 游戏设计的黄金法则 人类的
  • 【获奖公布】“我的2016”主题征文活动

    还记得2015的年末 xff0c 2016的新年伊始 xff0c 你给自己定下的目标 xff0c 对自己许下的诺言么 xff1f 时光荏苒 xff0c 一年又在指缝间溜走了 xff0c 离2016的结束还剩十多天 xff0c 在接下来的这十
  • Dockerfile介绍与指令解析

    一 Dockerfile介绍 镜像是容器的基础 xff0c 每次执行docker run的时候都会指定哪个镜像作为容器运行的基础 我们之前的例子都是使用来自docker hub的镜像 xff0c 直接使用这些镜像只能满足一定的需求 xff0
  • Kubernetes快速上手指南,让你所见即所得

    版权声明 xff1a 本文为 ABC实验室 原创文章 xff0c 版权所有 xff0c 侵权必究 xff01 编者语 Kubernetes作为新一代云计算平台 xff0c 自2014年开源以来得到快速发展 xff08 2016年 xff09
  • 使用github管理科研文献

    使用github管理科研文献 一 准备工作 xff1a 二 建立远程科研文献库三 远程科研文献数据库的维护四 其他PC客户端的访问 每个科研工作者都需要建立自己的科研文献库 以楼主本人为例 xff0c 我通常在实验室的台式机上完成科研文献的
  • RBF神经网络逼近在线自适应控制(MATLAB实现之S函数模块分析)

    上次用了参考模型的方法用RBF神经网络试了一下放到自适应控制模型上 xff0c 其实跟踪效果还可以 xff0c 放大了有点不舒服就是了 xff0c 差了一点点 xff0c 然后看了看书的第四章 xff0c 知道采用梯度下降法调整神经网络权值
  • 基于RBF神经网络的Flexible Robot自适应控制(论文笔记)

    上一篇笔记 https blog csdn net qq 24182661 记录的是第一篇论文2015 Continuum Robots for Medical Applications A survey的论文笔记 xff0c 主要做的笔记
  • Golang 解析xml文件标签带冒号( : )解决方案

    背景 xff1a 我们有项目需要使用golang语言解析rabbitmq xml 并把里面的内容解析出来 xff0c 但是在解析的时候遇到了问题 xff0c 最后通过google搜索 xff0c 在stackoverflow上找到了解决方案
  • 【Python】Python中 在函数内部对函数外的变量进行操作

    在Python中 xff0c 如果想函数内部对函数外的变量进行操作 xff0c 有一些问题 xff08 一些在Java xff0c C中再正常不过的操作这里就不行 xff09 正常情况下 xff0c 在函数外定义的变量是可以直接在函数体内部
  • 关于proteus中串口发送数据与实际不符的问题(如发00h,收80h)

    工程实训要用到串口 xff0c 51单片机 xff0c 串口工作方式一 xff0c 只发不接受 在proteus中用VIRTUAL TERMINAL xff08 虚拟终端 xff09 监视串口发送数据 现象 xff1a 不论是用虚拟终端还是
  • Jetson TX2的各种坑.md

    最近在使用Jetson TX2 在跑实验 xff0c 然后遇到下面问题 xff0c 做笔记 xff0c 记录一下 内存出错无法 xff0c 中断 出现下面那种错误 2019 01 11 19 41 46 959970 E tensorflo
  • 基于STM32的FreeRTOS开发(1)----FreeRTOS简介

    为什么使用freertos FreeRTOS 是一个免费和开源的实时操作系统 xff0c 它主要用于嵌入式系统 它非常轻量级 xff0c 可以在很小的硬件资源上运行 xff0c 因此非常适合在限制硬件资源的嵌入式系统中使用 FreeRTOS
  • 获奖公布 | 征文——从高考到程序员

    每年的这几天 xff0c 空气中总会弥漫着紧张的味道 xff0c 2017 全国统一高考如期而至 朋友圈里的各种高考热文如流水般 xff0c 不停歇地出现在眼前 xff0c 难免会勾起自己曾经的青涩时光 还记得 xff0c 考试前 xff0
  • STM32驱动ESP8266连接阿里云(2)----接入阿里IoT Studio实现Web可视化

    烧录MQTT固件 概述 阿里IoT Studio是一个物联网开发平台 xff0c 可用于快速构建基于云端的物联网应用 它提供了丰富的物联网组件和工具 xff0c 使得开发者可以轻松地进行设备接入 数据存储 数据分析等操作 要实现Web可视化

随机推荐

  • ‘gbk‘ codec can‘t encode character解决方法

    一 问题 xff1a 在将网络数据流导入文件时 xff0c 有可能遇到 39 gbk 39 codec can 39 t encode characte 错误 二 分析 xff1a 1 在windows下面 xff0c 新文件 xff08
  • ROS中的tf(transform)的理解 ,你追我小乌龟的深入剖析

    对于ros中的tf其实一直理解不是很深 xff0c 最近工作上一直在用 xff0c 就很懵逼 xff0c 出来混果然是要还的 xff5e 于是这两天把ros官方提供的小乌龟版的你追我 xff0c 如果你追到我 xff0c 我就让你xxx x
  • 线程同步之信号量(sem_init,sem_post,sem_wait)

    信号量和互斥锁 mutex 的区别 xff1a 互斥锁只允许一个线程进入临界区 xff0c 而信号量允许多个线程同时进入临界区 不多做解释 xff0c 要使用信号量同步 xff0c 需要包含头文件semaphore h 主要用到的函数 xf
  • 老程序员给的10条建议,句句经典

    1 想清楚 xff0c 再动手写代码 刚入行的新手 xff0c 为了展示自己的能力 xff0c 拿到需求迫不及待地就开始上手写代码 xff0c 大忌 xff01 2 不交流 xff0c 就会头破血流 不爱说话和沟通 xff0c 需求都理解错
  • Clickhouse快速上手 原理篇

    1 背景 公司目前使用Greenplum作为报表实时聚合查询的OLAP数据库 xff0c 当时主要是其使用门槛相对较低 xff0c 同时支持事务 xff0c 能在用户访问时候事务更新数据 xff0c 使用云厂商的产品 xff0c 技术支持也
  • Clickhouse快速上手 使用篇

    接着clickhouse原理篇 xff0c 下面来介绍他的具体使用场景 xff0c 包括数据导入 xff0c 更新等 文章目录 1 数据导入调研计划实施1 cos文件系统集成2 编码获取 2 数据更新和使用 1 数据导入 根据官方介绍 Cl
  • linux基本服务之sshd

    这段时间在学习linux常用服务 xff0c 这里将学习内容以及自己的实验心得记录下来 在自己忘记的时候也好复习 实验环境 xff1a centos 6 7 64bit 1 简介 SSHD服务 介绍 xff1a SSH协议 xff1a 安全
  • Git+VSCode基本使用

    前言 由于工作需要 xff0c 最近简单学习了git xff0c 巧合发现了VSCODE编辑器正好集成了git命令 xff0c 使得本地代码管理变得更加容易 因为最后是在linux下交叉编译 xff0c 但是我更习惯windows下写代码
  • 掌握音频开发基础知识

    文章目录 基本概念几种CODEC介绍实时调度相关缓冲区两种类型编写要点遇到的问题 解码能力的自适应混音模块回声消除的延时控制能量统计双声道支持ALSA设备 代码相关 基本概念 采样率 Hz 每秒去取样本的个数 xff0c eg 48000H
  • CSDN日报20170616 ——《从裁缝到码农》

    程序人生 从裁缝到码农 作者 xff1a 修电脑的裁缝酱 我伸出颤抖的手去抓 xff0c 发现曾经遥不可及的梦想 xff0c 经过坚持和努力之后 xff0c 真的可以抓住 我把它抓在手心 xff0c 紧紧地 点击阅读全文 机器学习 一文了解
  • Java中char类型详解

    1 基本定义 char类型的值可以表示为十六进制值 xff0c 其范围从 u0000 到 uffff xff0c 由两个字节构成 char类型原本用于表示单个字符 xff0c 但是现在情况有所变化 xff0c 有些Unicode字符需要一个
  • Git命令行简单使用小结

    最近复习了一下git 总结了一下命令行的基本使用 0 基本理论 a 基本概念 Working Directory 就是平时存放项目代码的地方 Stage Index 用于临时存放改动 事实上他只是一个文件 保存即将提交的文件列表信息 Rep
  • 无外接环境下,单笔记本直连浪潮服务器BMC灌装系统

    1 环境因素 xff1a 单服务器无网络无显示器等外接 xff0c 需要对浪潮防火墙灌装系统 xff1b 2 所需材料 xff1a 1 浪潮服务器 2 可接网线笔记本电脑 xff08 Windows平台 xff09 3 网线一根 3 连接拓
  • python抽样方法详解及实现

    抽样方法概览 随机抽样 总体个数较少 每个抽样单元被抽中的概率相同 xff0c 并且可以重现 随机抽样常常用于总体个数较少时 xff0c 它的主要特征是从总体中逐个抽取 1 抽签法 2 随机数法 xff1a 随机数表 随机数骰子或计算机产生
  • ROS 1.0 学习笔记(6)CMakeLists.txt 使用说明

    ROS1中每个PKG的配置都是在CMakeList txt中 xff0c 本文从官方 WiKi 资料中翻译而来 1 概览 文件CMakeLists txt是CMake编译系统的配置文件 xff0c 用于配置需要编译软件包 任何兼容CMake
  • LQR控制算法推导以及简单分析

    首先 xff0c 这篇文章是看了几个大神的博客后 xff0c 自己抄录以及整理的内容 xff0c 其中有些自己的想法 xff0c 但是原理部分基本都是学习大神们的 xff0c 在此先说明一下 1 全状态反馈控制系统 在介绍LQR之前 xff
  • C++ Primer(第五版)|练习题答案与解析(第三章:字符串、向量和数组)

    C 43 43 Primer 第五版 练习题答案与解析 第三章 字符串 向量和数组 本博客主要记录C 43 43 Primer 第五版 中的练习题答案与解析 参考 C 43 43 Primer C 43 43 Primer 练习题3 2 编
  • ROS学习(五)导航、路径规划、SLAM

    主要涉及到3个基本包 用于让机器人在制定框架内移动到目标位置的move base包 用于从激光扫描仪 深度摄像机来绘制地图的gmapping包 用于在现有的地图中定位的amcl包 先阅读 http wiki ros org navigati
  • 微服务架构模型和进程间通信

    微服务架构 微服务的扩展模型X轴扩展在多个相同实例之间实现请求的负载均衡Y轴扩展根据功能将应用程序拆分为服务Z轴扩展根据请求的属性路由请求微服务架构与SOA的异同微服务架构的好处微服务架构的弊端 微服务进程间通信基于同步远程过程调用模式的通
  • 关于搭建guacamole-server.1.4.0简单步骤,及问题记录

    问题1 xff1a 在guacamole server 1 4 0目录下 xff0c 执行 configure 发现记录中出现以下警告 xff0c 并且VNC没有成功加载 xff08 libvncserver devel已经导入yum的情况