# Apache guacamole 安裝 -Ubuntu 20.04 LTS

### **Apache guacamole简介**

* guacamole是一个免费开源并可以透过Web浏览器操控远端电脑的闸道器(gateway)，它支援多种的连线，如ssh、rdp，在此说明的是本地安装且只安装ssh、rdp的连线方式，如想使用docker安装可以参考官方的说明[https://](https://guacamole.apache.org/doc/gug/guacamole-docker.html)[guacamole.apache.org/doc/gug/guacamole-docker.html](http://guacamole.apache.org/doc/gug/guacamole-docker.html)
    

### **安装流程**

* 更新apt
    
    * `sudo apt update`
        
* 安装必备套件
    
    * `sudo apt install libcairo2-dev`#libguac会使用Cairo进行图形渲染
        
    * `sudo apt install libjpeg-turbo8-dev`#libguac会使用libjpeg-turbo支援JPEG
        
    * `sudo apt install libpng-dev` #libpng12-dev 不适用于16.04后的版本，ibguac会使用llibpng编译PNG
        
    * `sudo apt install libtool-bin`#libtool用于创建Guacamole所需的编译库
        
    * `sudo apt install uuid-dev`
        
    * FFmpeg
        
        * 如果不需要将对话纪录转换成影片档的话，可不用安装
            
        * `sudo apt install libavcodec-dev libavformat-dev libavutil-dev libswscale-dev`
            
    * libwebp
        
        * `sudo apt install libwebp-dev`
            
    * 使用rdp protocol
        
        * freerdp
            
            * `sudo apt install freerdp2-dev`
                
    * 使用ssh protocol
        
        * libssh2
            
            * `sudo apt install libssh2-1-dev`
                
        * libssl-dev
            
            * `sudo apt install libssl-dev`
                
        * libpango1.0-dev
            
            * `sudo apt install libpango1.0-dev`
                
* 到官网下载guacamole Server
    
    * `wget` [`https://apache.org/dyn/closer.lua/guacamole/1.4.0/source/guacamole-server-1.4.0.tar.gz`](https://apache.org/dyn/closer.lua/guacamole/1.4.0/source/guacamole-server-1.4.0.tar.gz)
        
    * 解压缩guacamole-server-1.4.0.tar.gz
        
        * `tar -xzf guacamole-server-1.4.0.tar.gz`
            
* 建立guacamole Server
    
    * `cd guacamole-server-1.4.0`
        
    * `./configure --with-init-dir=/etc/init.d`
        
    * 执行configure 会得知有哪些library 已安装还有已确定应该建置哪些library 的列表，`--with-init-dir=/etc/init.d`准备将guacd 的启动shell安装到`/etc/init.d`目录中，稍后可以轻松地将guacd 配置为在启动时自动启动。如果不希望guacd自动启动可移除`--with-init-dir=`。
        
    * 当发现有一些library未安装(显示为no)，可将这些library安装完成后再次执行configure 即可
        
    * 如不想要检查是否相依可在指令后加上`--disable-dependency-tracking`
        
    * `make`开始编译
        
    * `sudo make install`安装刚刚已经建好的模组
        
    * `sudo ldconfig`更新已安装的library
        
* 到官网下载guacamole Client
    
    * `cd ..`
        
    * `wget` [`https://apache.org/dyn/closer.lua/guacamole/1.4.0/source/guacamole-client-1.4.0.tar.gz`](https://apache.org/dyn/closer.lua/guacamole/1.4.0/source/guacamole-client-1.4.0.tar.gz)
        
    * 解压缩guacamole-client1.4.0.tar.gz
        
        * `tar -xzf guacamole-client-1.4.0.tar.gz`
            
* 建立guacamole Client
    
    * 如无Maven需先安装`sudo apt install maven`
        
    * `mvn package`
        
    * 上方指令会使用Maven 自动建立和打包所有元件，在guacamole/target/产生一个包含整个Web的文件: .war
        
    * 使用Maven 需要使用java编译器可先使用 `javac -version` 查看是否有安装，如无安装所需的java编译器在此安装的是openjdk-16-jdk-headless，请注意要看是否与目前Maven的版本有没有冲突
        
    * 删除java参考文件: [https://www.codegrepper.com/code-examples/java/uninstall+java+17+ubuntu](https://www.codegrepper.com/code-examples/java/uninstall+java+17+ubuntu)
        
    * 安装maven参考文件: [https://linuxize.com/post/how-to-install-apache-maven-on-ubuntu-20-04/](https://linuxize.com/post/how-to-install-apache-maven-on-ubuntu-20-04/)
        
* Deploy guacamole
    
    * 将war档复制到tomcat的目录下(可能会因tomcat安装方式，tomcat9名称可能会有所不同)
        
        * `cp guacamole-1.4.0.war /var/lib/tomcat9/webapps/guacamole.war`
            
        * 如需安装tomcat `sudo apt install tomcat9`  
            tomcat9的9为版本如需安装其他版本可修改成其他数字
            
        * 重启tomcat并启动guacd
            
            * `systemctl restart tomcat9`
                
            * `/etc/init.d/guacd start`
                
* 建置guacamole的配置目录
    
    * `sudo mkdir /etc/guacamole`
        
    * `sudo mkdir /usr/share/tomcat9/.guacamole`
        
* 定义Guacamole如何连接guacd，需在/etc/guacamole创建guacamole.properties
    
    * `sudo vim /etc/guacamole/guacamole.properties`
        
    * [让Tomcat可以读guacamole.properties](http://让Tomcat可以读guacamole.properties)
        
        * `sudo ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat9/.guacamole/`
            
    * 建立user-mapping.xml
        
        * `sudo nano /etc/guacamole/user-mapping.xml`
            
        * 配置内容参考
            
            ```plaintext
            <user-mapping>
                    <authorize 
                            username="username" 
                            password="md5password" 
                            encoding="md5">
                            <connection name="Ubuntu">
                                    <protocol>ssh</protocol>
                                    <param name="hostname">xxx.xx.x.xx</param>
                                    <param name="port">xx</param>
                                    <param name="username">yourusename</param>
                            </connection>
                    </authorize>
            </user-mapping>
            ```
            
    * 重启Tomcat 与guacd
        
        * `systemctl restart tomcat9`
            
        * `systemctl restart suacd`
            

### **测试连接**

* 登入画面( [http://Ip:8080/guacamole](http://Ip:8080/guacamole) )  
    
* 登入画面
    
    ![](https://i.imgur.com/DUadwwm.png align="left")
    

### **参考资料**

* [https://guacamole.apache.org/doc/gug/installing-guacamole.html](https://guacamole.apache.org/doc/gug/installing-guacamole.html)
    
* [https://guacamole.apache.org/doc/gug/configuring-guacamole.html](https://guacamole.apache.org/doc/gug/configuring-guacamole.html)
    
* [https://www.tecmint.com/guacamole-access-remote-linux-windows-machines-via-web-browser/](https://www.tecmint.com/guacamole-access-remote-linux-windows-machines-via-web-browser/)
    
* [https://kifarunix.com/install-apache-guacamole-on-ubuntu/](https://kifarunix.com/install-apache-guacamole-on-ubuntu/)
