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