# Установка Guacamle

!!!Info "Вариант установки"
    Есть 2 варианта установки:

    1. **Ручная** - Компиляция **Guacd**, установка **tomcat** с клиентом **Guacamole** и подключение к **базе данных**.
    2. **Docker** контейнеры - **mysql**, **guacd**, **guacamole**.
    
    Будет описана установка Guacamole с помощью Docker.

## Примечание
Проверьте, что у вас установлен **Docker**.

## Готовые файлы

`docker-compoae.yaml`:
```yaml
services:
  guacamole:
    image: guacamole/guacamole
    container_name: guacamole
    restart: always
    env_file:
      - ./.env
    depends_on:
      - guacd
      - mysql
    ports:
      - "80:8080"
    environment:
      GUACD_HOSTNAME: guacd
      MYSQL_HOSTNAME: mysql
      MYSQL_DATABASE: guacamole_db
      MYSQL_USER: "guacamole"
      MYSQL_PASSWORD: "guacamole"
    volumes:
      - ./data/guacamole/data:/app/data

  guacd:
    image: guacamole/guacd
    container_name: guacd
    restart: always
  
  mysql:
    image: mysql:8.0
    container_name: mysql
    restart: always
    env_file:
      - ./.env
    environment:
      MYSQL_ROOT_PASSWORD: ${ROOTPASS}
      MYSQL_DATABASE: guacamole_db
      MSQL_USER: ${GUACUSER}
      MYSQL_PASSWORD: ${GUACPASS}
    volumes:
      - ./data/mysql/data:/var/lib/mysql
      - ./data/mysql/script:/script
  pma:
    image: phpmyadmin
    restart: always
    ports:
      - 8080:80
    environment:
      PMA_HOST: mysql
```

`.env`:
```
GUACUSER=CHANGE-ME
GUACPASS=CHANGE-ME
ROOTPASS=CHANGE-ME
```

## Первая настройка
Перед запуском, нужно настроить базу данных.

Запускаем все контейнеры
```bash
docker compose up -d
```

Создаем файл базы данных **initdb.sql**
```bash
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh > ./initdb.sql
```

Файл базы данных **initdb.sql** должен появиться в активном каталоге.

Добавим самым простым способом в базу данных mysql, использую **PhpMyAdmin**.

1. Заходим на **PhpMyAdmin** и вводим логин и пароль. `{address}:8080`
2. Переходим в базу данных, которую будет использовать **Guacamole**. В наем случае это **guacamole_db**.
3. Выбираем вкладку **SQL**.
4. Открываем **initdb.sql**, копируем содержимое и вставляем в большое поле.
5. После вставки, нажимаем **Вперёд**.

| ![phpmyadmin login](../../media/phpmyadmin-login.png) | ![phpmyadmin main page](../../media/phpmyadmin-main_page.png) |
| :---: | :---: |
| Страница авторизации | Главная страница | 

| ![phpmyadin paste data](../../media/phpmyadmin-paste-sql-data-from-database.png) |
| :---: |
| Вставленные данные |


## Вход на Guacamole

Переходим на сайт Guacamole и вводим логин и пароль учетной записи.

- Логин: `guacadmin`
- Пароль: `guacadmin`

| ![guacamole login](../../media/guacamole-login.png) |
| : --- : |
| Вход на Guacamole |

Если все сделали корректно, то аунтификация должна пройти успешно.

## Ссылки

- [Оф. сайт](https://guacamole.apache.org/)
- [Документация](https://guacamole.apache.org/doc/gug/) - на английском
