Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH. We call it clientless because no plugins or client software are required. Thanks to HTML5, once Guacamole is installed on a server, all you need to access your desktops is a web browser.

Guacamole is separated into two pieces: guacamole-server, which provides the guacd proxy and related libraries, and guacamole-client, which provides the client to be served by your servlet container, usually Tomcat.

一、安装 guacamole-server

guacamole-server,提供guacd代理和相关库。

Guacamole -server包含Guacamole连接到远程桌面所需的所有本地服务器端组件。它提供了一个通用的C库libguac(所有其他本地组件都依赖它),还为每种支持的协议提供了独立的库,以及guacd (guacd是Guacamole的核心)。

guacd是运行在Guacamole服务器上的代理守护进程,它接受通过Guacamole web应用程序隧道化的用户连接,然后代表用户连接到远程桌面。构建guacd将创建一个名为guacd的可执行文件,它可以手动运行,也可以在计算机启动时自动运行。

要构建guacamole-server,需要一个C编译器(比如gcc)和guacamole-server所依赖的库。有些依赖是必需的,而有些则是可选的。可选依赖项的存在支持其他特性。

1.1 安装编译环境

yum install gcc

1.2 安装依赖环境

必须安装

  • libguac使用Cairo进行图形渲染。如果没有安装Cairo,guacamole就无法运作。
  • libguac使用libjpeg-turbo提供JPEG支持。没有这个库,guacamole就无法build。 如果libjpeg-turbo在您的平台上不可用,并且您不希望从源代码构建它,那么libjpeg也可以工作,尽管它的速度没有那么快: libjpeg-devel
  • libguac使用libpng来写入PNG图像,这是Guacamole协议使用的核心图像类型。guacamole运转离不开libpng。
  • 在构建过程中使用Libtool。libtool创建Guacamole所需的编译库。
  • libguac使用OSSP UUID为每个Guacamole连接分配唯一的id。这些惟一的id是连接共享支持的基础。
yum install -y cairo-devel libjpeg-turbo-devel libpng-devel libtool uuid-devel

可选安装

guacamole的可选依赖关系决定了guacamole-server的哪些部分将被构建。这包括对各种远程桌面协议的支持,以及这些协议的任何附加特性。

  • VNC支持依赖于libvncclient库,它是libVNCServer的一部分。PulseAudio提供libpulse, Guacamole的VNC支持使用它来提供实验性的音频支持。如果您不打算使用VNC的实验性音频支持,则不需要这个库。

    yum install libvncserver-devel pulseaudio-libs-devel 
  • RDP支持依赖于最新版本的FreeRDP(1.0或更高版本,但请不要来自git的非发布版本)。

    yum install freerdp-devel
  • SSH支持依赖于libssh2、OpenSSL和Pango (Guacamole的内置终端仿真器使用的字体渲染和文本布局库)。

    yum install libssh2-devel openssl-devel pango-devel
  • Telnet依赖于libtelnet和Pango。(libtelnet-devel不在CentOS7官方yum源内,可先安装epel-release源)

    yum install epel-release
    yum install libtelnet-devel pango-devel
  • Kubernetes的支持依赖于libwebsockets、OpenSSL和Pango。

    yum install libwebsockets-devel openssl-devel pango-deve

需要什么协议安装对应的依赖即可。

其他的一些依赖。

  • libvorbis提供了对Ogg Vorbis的支持,Ogg Vorbis是一种免费和开放的声音压缩标准。如果安装了,libguac将支持Ogg Vorbis,并且支持音频的协议将在可能的情况下使用Ogg Vorbis压缩。否则,声音将被编码为WAV(未压缩),并且只有当你的浏览器也支持WAV时才可用。

    yum install libvorbis-devel
  • libguac使用libwebp来编写WebP图像。虽然Guacamole协议并没有强制要求对WebP的支持,但是如果浏览器和libguac都支持WebP图像,那么就会使用WebP图像。由于缺乏WebP支持,Guacamole将在它更喜欢WebP的情况下简单地使用JPEG。

    yum install libwebp-devel
  • guacenc(将屏幕录制转换为视频)实用程序 依赖于FFmpeg,并且仅在安装了FFmpeg提供的libavcodec,libavutil和 libswscale库时才构建 。(ffmpeg-devel不在CentOS7官方yum源内,可先安装DEXTOP源) 不需要屏幕录制功能时,可不安装。

    rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
    yum install ffmpeg-devel

为了体验完整功能,以上全部安装。

1.3 获取源码

http://guacamole.apache.org/releases/获取最新版本

tar -xzf guacamole-server-1.3.0.tar.gz

1.4 编译

cd guacamole-server-1.3.0/
./configure --with-init-dir=/etc/init.d

运行结果如下。如果,检测状态含有no,需要检查上方的第三方库是否安装正确。我有个libpulse就没有安装上,不过也不影响,我也用不到。

------------------------------------------------
guacamole-server version 1.3.0
------------------------------------------------

   Library status:

     freerdp2 ............ yes
     pango ............... yes
     libavcodec .......... yes
     libavformat.......... yes
     libavutil ........... yes
     libssh2 ............. yes
     libssl .............. yes
     libswscale .......... yes
     libtelnet ........... yes
     libVNCServer ........ yes
     libvorbis ........... yes
     libpulse ............ no
     libwebsockets ....... yes
     libwebp ............. yes
     wsock32 ............. no

   Protocol support:

      Kubernetes .... yes
      RDP ........... yes
      SSH ........... yes
      Telnet ........ yes
      VNC ........... yes

   Services / tools:

      guacd ...... yes
      guacenc .... yes
      guaclog .... yes

   FreeRDP plugins: /usr/lib64/freerdp2
   Init scripts: /etc/init.d
   Systemd units: no

编译安装

## 编译
make
## 安装build需要的组件
make install
## 更新系统中已安装库的缓存
ldconfig
## 启动
/etc/init.d/guacd start

二、安装 guacamole-client

三、自己编写guacamole客户端

参考资料

http://guacamole.apache.org/

http://guacamole.apache.org/doc/gug/installing-guacamole.html