Ir para o conteúdo principal

Docker compose

Valtwarden - Fork do Bitwarden
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    volumes:
      - ./vw-data/:/data/
    ports:
      - 0.0.0.0:8000:80
    environment:
      SMTP_HOST: smtp.eu.mailgun.org
      SMTP_FROM: postmaster@mailgun.baldezti.com.br
      SMTP_PORT: 587
      SMTP_SECURITY: starttls
      SMTP_USERNAME: postmaster@mailgun.baldezti.com.br
      SMTP_PASSWORD: "senha-smtp"
      SMTP_AUTH_MECHANISM: Login
      SIGNUPS_ALLOWED: "false"
      DOMAIN: "https://iam.baldezti.com.br"

# Instalação


##### 1. Fazer pull das imagens necessárias.


```bash

docker pull guacamole/guacamole

docker pull guacamole/guacd

docker pull mysql/mysql-server

```


##### 2. <span style="color: rgb(94, 96, 101); font-family: 'Source Sans Pro', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'segoe ui', Roboto, 'helvetica neue', Arial, 'noto sans', sans-serif, 'apple color emoji', 'segoe ui emoji', 'segoe ui symbol', 'noto color emoji'; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;">Crie um script de inicialização de banco de dados para criar uma tabela para autenticação:</span>


```bash

docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql

```


Esse comando criará um arquivo sql que será executado no container do mysql.

<span style="color: rgb(53, 152, 219);">Saída do comando:</span>


```bash

root@docker:~/guacamole# docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > initdb.sql

root@docker:~/guacamole# ls

initdb.sql

```


##### 3. Gere uma senha de uso único para root do MySQL. Visualize a senha gerada nos logs:


```bash

docker run --name example-mysql -e MYSQL_RANDOM_ROOT_PASSWORD=yes -e MYSQL_ONETIME_PASSWORD=yes -d mysql/mysql-server

docker logs example-mysql

```


<span style="color: rgb(53, 152, 219);">Saída do comando:</span>


```bash

Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.

Warning: Unable to load '/usr/share/zoneinfo/leapseconds' as time zone. Skipping it.

Warning: Unable to load '/usr/share/zoneinfo/tzdata.zi' as time zone. Skipping it.

Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.

Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.

[Entrypoint] GENERATED ROOT PASSWORD: N.s0T*2IV1/3dXuFkj#31j2w?0J%d^:S


[Entrypoint] ignoring /docker-entrypoint-initdb.d/*


```


##### 4. Copiar o arquivo para o container.


```bash

docker cp initdb.sql example-mysql:/guac_db.sql

```


##### 5. Abrir um shell no container do mysql.



```bash

docker exec -it example-mysql bash

```


##### 6. Abrir gerenciamento do mysql.



```bash

mysql -u root -p

```


Utilize a senha que foi gerada no paso 3.


##### 7. Criar tabelas e configurar os privilégios.



```

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

CREATE DATABASE guacamole_db;

CREATE USER 'guacamole_user'@'%' IDENTIFIED BY 'password';

GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'%';

FLUSH PRIVILEGES;

```


##### 8. Executar o script sql gerado no passo 2.



```bash

cat guac_db.sql | mysql -u root -p guacamole_db

```


<p class="callout info">Aqui será solicitado a senha do root cadastrado no passo 7.

</p>


##### 9. Verificar se as tabelas foram criadas.



```bash

mysql -u guacamole_user -p

USE guacamole_db;

SHOW TABLES;

quit

```


<span style="background-color: rgb(255, 255, 255);"><span style="color: rgb(53, 152, 219);">Saída do comando</span>:

</span>


```sql


mysql> USE guacamole_db;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A


Database changed

mysql> SHOW TABLES;

+---------------------------------------+

| Tables_in_guacamole_db |

+---------------------------------------+

| guacamole_connection |

| guacamole_connection_attribute |

| guacamole_connection_group |

| guacamole_connection_group_attribute |

| guacamole_connection_group_permission |

| guacamole_connection_history |

| guacamole_connection_parameter |

| guacamole_connection_permission |

| guacamole_entity |

| guacamole_sharing_profile |

| guacamole_sharing_profile_attribute |

| guacamole_sharing_profile_parameter |

| guacamole_sharing_profile_permission |

| guacamole_system_permission |

| guacamole_user |

| guacamole_user_attribute |

| guacamole_user_group |

| guacamole_user_group_attribute |

| guacamole_user_group_member |

| guacamole_user_group_permission |

| guacamole_user_history |

| guacamole_user_password_history |

| guacamole_user_permission |

+---------------------------------------+

23 rows in set (0.00 sec)


```


#### Configurando o container do guacamole

1. Criar o container do guacd



```bash

docker run --name example-guacd -d guacamole/guacd

```


##### 2. Por fim, crie o container do app fazendo a ligação com o db e o guacd.



```bash

docker run --name example-guacamole --link example-guacd:guacd --link example-mysql:mysql -e MYSQL_DATABASE=guacamole_db -e MYSQL_USER=guacamole_user -e MYSQL_PASSWORD=guacamole_user_password -d -p 8080:8080 guacamole/guacamole

```


##### 3. Acessando o guacamole via web.



```

http://localhost:8080/guacamole/

```


> Usuário: guacadmin e Senha: guacadmin