Passo a passo instalação Apache Guacamole.
Recentemente resolvi testar o Apacha Guacamole e documentar o processo de instalação.
O Guacamole é um software de código aberto que permite o acesso remoto a desktops e servidores através de um navegador web.
A opção que achei mais fácil foi usando Docker, segue link para documentação oficial.
Os procedimentos a seguir foram executados em um Debian.
Install Docker
Adicionando repositório Docker
1
2
3
4
5
6
7
8
9
10
11
12
13
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
Instalando pacotes Docker:
1
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Podemos verificar se a instalação ocorreu com sucesso executando:
1
docker -v
Adicionaremos o usuário atual ao grupo Docker para evitar executar comandos como sudo.
1
sudo usermod -aG docker $USER
Nesse caso estou instalando as imagens mais recentes, mas se for utilizar em produção, seria interessante instalar a imagem com a tag da versão, para evitar possíveis problemas de compatibilidade em upgrade, migração…
Pode verificar as imagens no DockerHub Guacamole
1
2
3
docker pull guacamole/guacd
docker pull guacamole/guacamole
docker pull mariadb
Podemos verificar as imagens com o comando
1
docker images
Agora que estamos com as imagens baixadas, precisamos iniciar o banco de dados com o comando:
1
docker run --rm guacamole/guacamole:latest /opt/guacamole/bin/initdb.sh --mysql > initdb.sql
Devemos criar um arquivo .env
onde colocaremos as credenciais de acesso.
1
nano .env
1
2
3
4
MYSQL_ROOT_PASSWORD=SuperSecretP@sswr0rd!@#$%^&*
MYSQL_DATABASE=guacamole_db
MYSQL_USER=guacamole_user
MYSQL_PASSWORD=SecretP@sswr0rd!@#$%^&*
Criaremos o nosso docker-compose.yml
1
nano docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: "3"
services:
guacdb:
container_name: guacamoledb
image: mariadb:latest
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
volumes:
- "./db-data:/var/lib/mysql"
volumes:
db-data:
Após isso podemos iniciar com docker compose:
1
docker compose up -d
docker-compose up -d
se tiver instalado docker-compose ao ínves de docker-compose-plugin.
Em seguida, vamos precisar copiar nosso arquivo initdb.sql
para dentro do container.
1
docker cp initdb.sql guacamoledb:/initdb.sql
Teremos que instalar o mysql client dentro do docker guacamoledb.
1
docker exec -it guacamoledb bash
1
2
3
apt-get update && apt-get install -y default-mysql-client
cat /initdb.sql | mysql -u root -p guacamole_db
exit
Após isso podemos derrubar o guacamoledb.
1
docker compose down
Como boa prática, recomenda-se salvar o arquivo de inicialização do banco.
1
mv docker-compose.yml docker-compose.yml.bak
Iremos criar o novo docker-compose.yml com todas as informações necessárias.
1
nano docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
version: "3"
services:
guacdb:
container_name: guacamoledb
image: mariadb:latest
restart: unless-stopped
user: mysql
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
volumes:
- "./db-data:/var/lib/mysql"
guacd:
container_name: guacd
image: guacamole/guacd:latest
restart: unless-stopped
guacamole:
container_name: guacamole
image: guacamole/guacamole:latest
restart: unless-stopped
ports:
- 8080:8080
environment:
GUACD_HOSTNAME: "guacd"
MYSQL_HOSTNAME: "guacdb"
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
TOTP_ENABLED: "true"
depends_on:
- guacdb
- guacd
volumes:
db-data:
Agora podemos iniciar nosso serviço Guacamole.
1
docker compose up -d
Acesso ao guacamole
Devemos acessar usando http://meuip:8080/guacamole
Dica
O Guacamole não é acessível diretamente pela raiz, é necessário adicionar /guacamole ao endereço.
Perigo
As credenciais padrão são guacadmin/guacadmin
Aviso
No nosso docker-compose habilitamos o TOTP, assim será necessário um aplicativo como authy, 2fas, google authenticator para iniciar nossas credenciais. Caso deseje, pode remover a linha
TOTP_ENABLED: "true"
Lembrando de liberar o tráfego de entrada na porta 8080:
1
2
3
4
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
sudo apt-get install iptables-persistent
sudo netfilter-persistent save
sudo iptables -L
Referência:
Gostou de Ler este Artigo?
Aqui estão alguns artigos relacionados que você pode gostar de ler: