====== Установка Apache Guacamole ======

{{:screens:ag.jpg?nolink&400 |}}

<WRAP center round info 60%>
Инструкция актуальна для Debian 10 и 11
</WRAP>

**Официальная страница загрузки:** [[https://guacamole.apache.org/releases/|https://guacamole.apache.org/releases/]]

<WRAP center round download 60%>
**Скрипт установки:**
{{sh:guac-install.sh}}
</WRAP>


===== Подготовительный этап =====

  - Обновим список репозиториев в системе <code bash>apt update</code>
  - Устанавливам необходимые пакеты для установки AG <code bash>apt install -y build-essential libcairo2-dev libjpeg62-turbo-dev libpng-dev \
libtool-bin libossp-uuid-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev \
libpango1.0-dev libssh2-1-dev libvncserver-dev libtelnet-dev \
libssl-dev libvorbis-dev libwebp-dev libpulse-dev mysql-client</code>
  - Добавляем репозиторий для установки **FreeRDP** <code bash>echo "deb http://deb.debian.org/debian buster-backports main" > /etc/apt/sources.list.d/backports.list</code><WRAP center round important 60%>
В зависимости от версии ОС, не забудьте сменить кодовое название в строке репозитория
</WRAP>
  - Обновим список репозиториев в системе <code bash>apt update</code>
  - Устанавливаем **FreeRDP** <code bash>apt install freerdp2-dev</code>

===== Установка Guacamole Server =====

  - Задаем переменную с версией Guacamole <code bash>VER=1.4.0</code>
  - Скачиваем архив с сервером <code bash>wget https://downloads.apache.org/guacamole/$VER/source/guacamole-server-$VER.tar.gz</code>
  - Распаковываем архив <code bash>tar xzf guacamole-server-$VER.tar.gz</code>
  - Переодим в распакованный катало <code bash>cd guacamole-server-$VER</code>
  - Запускаем //configure// для //make// <code bash>./configure --with-init-dir=/etc/init.d</code>
  - Запускаем сборку и установку сервера <code bash>make && make install</code>
  - Затем запустите команду //ldconfig//, чтобы создать необходимые ссылки и кэшировать самые последние общие библиотеки, найденные в каталоге сервера гуакамоле <code bash>ldconfig</code>
  - Перезапускаем системного демона <code bash>systemctl daemon-reload</code>
  - Стартуем сервер <code bash>systemctl start guacd</code>
  - Добавляем сервер в атозагрузку <code bash>systemctl enable guacd</code>

===== Устанавка Tomcat Servlet =====
  - Устанавливаем //Tomcat// <code bash>apt install tomcat9 tomcat9-admin tomcat9-common tomcat9-user -y</code>

===== Установка Guacamole Client =====

  - Создаем каталог <code bash>mkdir /etc/guacamole</code>
  - Скачиваем <code bash>wget https://downloads.apache.org/guacamole/$VER/binary/guacamole-$VER.war -O /etc/guacamole/guacamole.war</code>
  - Создаем симлинк клиента в каталог //webapps Tomcat// <code bash>ln -s /etc/guacamole/guacamole.war /var/lib/tomcat9/webapps/</code>
  - Перезапускаем //Tomcat// <code bash>systemctl restart tomcat9</code>
  - Перезапускаем //guacd// <code bash>systemctl restart guacd</code>

===== Настройка Apache Guacamole =====

  - Создаем дополнительные каталоги <code bash>mkdir /etc/guacamole/{extensions,lib}</code>
  - Задаем переменную для домашняго каталога //Guacamole// в //Tomcat// <code bash>echo "GUACAMOLE_HOME=/etc/guacamole" >> /etc/default/tomcat9</code>

==== Настройка с локальным файлом для авторизации ====

  - Создаем файл конфигурации <code bash>nano /etc/guacamole/guacamole.properties</code>
  - Добавляем в файл следующие параметры <code bash>guacd-hostname: localhost
guacd-port: 4822
user-mapping:   /etc/guacamole/user-mapping.xml
auth-provider:  net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider</code>
  - Создаем симлинк <code bash>ln -s /etc/guacamole /usr/share/tomcat9/.guacamole</code>
  - Создаем файл авторизации и хостами <code bash>nano /etc/guacamole/user-mapping.xml</code>
  - Вставляем следующую конфигурацию <code bash><user-mapping>
        
    <!-- Per-user authentication and config information -->

    <!-- A user using md5 to hash the password
         guacadmin user and its md5 hashed password below is used to 
             login to Guacamole Web UI-->
    <authorize 
            username="guacadmin"
            password="5f4dcc3b5aa765d61d8327deb882cf99"
            encoding="md5">

        <!-- First authorized Remote connection -->
        <connection name="Ubuntu 20.04 Server SSH">
            <protocol>ssh</protocol>
            <param name="hostname">192.168.57.3</param>
            <param name="port">22</param>
        </connection>

        <!-- Second authorized remote connection -->
        <connection name="Windows 7 RDP">
            <protocol>rdp</protocol>
            <param name="hostname">192.168.56.103</param>
            <param name="port">3389</param>
            <param name="username">koromicha</param>
            <param name="ignore-cert">true</param>
        </connection>

    </authorize>

</user-mapping></code>
  - Перезапускаем служы <code bash>systemctl restart tomcat9 guacd</code>

<WRAP center round tip 60%>
Пароль формируем следующим способом (одним из):
  * <code bash>echo -n password | openssl md5</code>
  * <code bash>printf '%s' password | md5sum</code>
</WRAP>

==== Настройка с использование БД MySQL ====

  - Заходим в MySQL <code bash>mysql -u root -p</code>
  - Создаем БД для AG <code bash>CREATE DATABASE guacamole_db;</code>
  - Создаем пользователя для работы с БД <code bash>CREATE USER 'guacamole_user'@'localhost' IDENTIFIED BY 'StrongPassword';</code>
  - Перезагружаем права <code bash>FLUSH PRIVILEGES;</code>
  - Скачиваем расширения для работы AG с MySQL <code bash>wget https://dlcdn.apache.org/guacamole/1.4.0/binary/guacamole-auth-jdbc-$VER.tar.gz</code>
  - Распаковываем архив <code bash>tar -xf guacamole-auth-jdbc-$VER.tar.gz</code>
  - Переходим в распакованный каталог <code bash>cd guacamole-auth-jdbc-$VER/mysql/</code>
  - Импортируем схему в БД <code bash>cat schema/*.sql | mysql -u root -p guacamole_db</code>
  - Проверям список файлов. Нас интересует guacamole-auth-jdbc-mysql-$VER.jar<code bash>ls -lah</code>
  - Копируем файл в рабочую директорию AG <code bash>cp guacamole-auth-jdbc-mysql-$VER.jar /etc/guacamole/extensions/guacamole-auth-jdbc-mysql.jar</code>
  - Скачиваем коннектор для MySQL <code bash>wget https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java_8.0.28-1ubuntu20.04_all.deb</code>
  - Устанавливаем коннектор <code bash>dpkg -i mysql-connector-java_8.0.28-1ubuntu20.04_all.deb</code>
  - Копируем коннектор в директорию AG <code bash># copy the MySQL/J connector
cp /usr/share/java/mysql-connector-java-8.0.28.jar /etc/guacamole/lib/mysql-connector.jar</code>
  - Редактируем файл **/etc/guacamole/guacamole.properties**<code bash>nano /etc/guacamole/guacamole.properties</code>
  - Вставляем следующий конфиг <code bash>mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacamole_db
mysql-username: guacamole_user
mysql-password: StrongPassword</code>
  - Редактируем файл **/etc/guacamole/guacd.conf** <code bash>nano /etc/guacamole/guacd.conf</code>
  - Вставляем следующий конфиг <code bash>[server]
bind_host = 0.0.0.0
bind_port = 4822</code>
  - Перезапускаем служы <code bash>systemctl restart tomcat9 guacd</code>

<WRAP center round info 60%>
Пароль и пароль по умолчанию:
  * guacadmin
  * guacadmin
</WRAP>
