Instalando o Passbolt no Docker

Gostaria de começar esse post com a seguinte pergunta: Onde você salva as suas senhas?

O local onde as senhas de acesso são armazenadas deve receber atenção máxima, pois isso é fundamental para evitar vazamentos de dados e consequentemente, impedir acessos indevidos.

Buscando ajudar, gostaria de apresentar a vocês uma excelente ferramenta que nos auxilia a manter a segurança das senhas. Essa ferramenta se chama Passbolt, um gerenciador de senhas extremamente eficaz e repleto de recursos.

Vamos para instalação

Há várias formas de se instalar o Passbolt e todas elas estão descritas na documentação oficial do projeto Documentação Passbolt.

No meu caso eu vou instalar em meu ambiente Docker, se você não tem esse ambiente preparado eu vou deixar o video aqui em baixo pra você também montar o seu ambiente.

Estou levando em consideração que você já tem o seu ambiente preparado com o Docker e o Docker Compose, vamos seguindo.

A documentação oficial informa que precisamos baixar o arquivo compose exemplo, o Docker Engine esta instalado em meu Debian 12, eu vou acessar o terminal e vou executar os seguintes comandos:


curl -LO https://download.passbolt.com/ce/docker/docker-compose-ce.yaml
curl -LO https://github.com/passbolt/passbolt_docker/releases/latest/download/docker-compose-ce-SHA512SUM.txt

O primeiro arquivo docker-compose-ce.yaml contém toda as configurações dos conteiners que compõem a Stack, o segundo arquivo docker-compose-ce-SHA512SUM.txt contém uma hash que servirá para validar se o arquivo docker-compose-ce.yaml não foi corrompido.

Executando o comando abaixo em seu terminal é possível fazer uma validação, se tudo tiver certo o resultado desse comando será um docker-compose-ce.yaml: OK


sha512sum -c docker-compose-ce-SHA512SUM.txt

Ao abrir o arquivo docker-compose-ce.yaml usando o seu editor de texto (nano ou VIM) você verá um exemplo, como o descrito abaixo:


services:
  db:
    image: mariadb:10.11
    restart: unless-stopped
    environment:
      MYSQL_RANDOM_ROOT_PASSWORD: "true"
      MYSQL_DATABASE: "passbolt"
      MYSQL_USER: "passbolt"
      MYSQL_PASSWORD: "P4ssb0lt"
    volumes:
      - database_volume:/var/lib/mysql

  passbolt:
    image: passbolt/passbolt:latest-ce
    #Alternatively you can use rootless:
    #image: passbolt/passbolt:latest-ce-non-root
    restart: unless-stopped
    depends_on:
      - db
    environment:
      APP_FULL_BASE_URL: https://passbolt.local
      DATASOURCES_DEFAULT_HOST: "db"
      DATASOURCES_DEFAULT_USERNAME: "passbolt"
      DATASOURCES_DEFAULT_PASSWORD: "P4ssb0lt"
      DATASOURCES_DEFAULT_DATABASE: "passbolt"
    volumes:
      - gpg_volume:/etc/passbolt/gpg
      - jwt_volume:/etc/passbolt/jwt
    command:
      [
        "/usr/bin/wait-for.sh",
        "-t",
        "0",
        "db:3306",
        "--",
        "/docker-entrypoint.sh",
      ]
    ports:
      - 80:80
      - 443:443
    #Alternatively for non-root images:
    # - 80:8080
    # - 443:4433

volumes:
  database_volume:
  gpg_volume:
  jwt_volume:

Porém vamos ajustar esse arquivo conforme a nossa necessidade, eu vou deixar aqui abaixo o meu arquivo ajustado:


version: "3.8"

services:
  # Container de Banco de Dados
  passbolt-banco:
    image: mariadb:10.11
    restart: unless-stopped
    environment:
      MYSQL_RANDOM_ROOT_PASSWORD: "true"
      MYSQL_DATABASE: passbolt_db
      MYSQL_USER: passbolt
      MYSQL_PASSWORD: passbolt
    volumes:
      - /minha-pasta/passbolt/banco:/var/lib/mysql
    networks:
      - rede-passbolt-local

  # Container com o Passbolt Server
  passbolt-server:
    image: passbolt/passbolt:latest-ce
    container_name: passbolt-server
    environment:
      APP_FULL_BASE_URL: https://passbolt.meudominio.com
      DATASOURCES_DEFAULT_HOST: passbolt-banco
      DATASOURCES_DEFAULT_USERNAME: passbolt
      DATASOURCES_DEFAULT_PASSWORD: passbolt
      DATASOURCES_DEFAULT_DATABASE: passbolt_db
      DATASOURCES_DEFAULT_PORT: 3306
    volumes:
      - /minha-pasta/passbolt/config/gpg:/etc/passbolt/gpg:rw
      - /minha-pasta/passbolt/config/jwt:/etc/passbolt/jwt:rw
    command:
      [
        "/usr/bin/wait-for.sh",
        "-t",
        "0",
        "passbolt-banco:3306",
        "--",
        "/docker-entrypoint.sh"
      ]
    ports:
      - 80:80
      - 443:443
    networks:
      - rede-externa
      - rede-passbolt-local

networks:
  rede-passbolt-local:
    driver: bridge

Estando na mesma pasta onde esta o arquivo ajustado docker-compose.yaml execute no terminal o seguinte comando: docker compose up -d

O Docker Engine irá fazer todos os procedimentos como baixar imagens, expor portas, criar volumes, criar as redes e etc.

DICA IMPORTANTE

Todas as configurações que foram realizadas no arquivo, não são indicadas para produção, apenas para laboratório, se que rodar o passbolt em produção, algumas boas práticas devem ser adotadas, são elas: Utilizar uma versão estável, credenciais e algumas informações sensíveis devem ser passadas via variável de ambiente.

Se deseja uma administração do seu ambiente Docker de forma gráfica, considere instalar o Portainer, logo abaixo deixarei o video com a implementação do mesmo.

Criando o primeiro usuário

Com a Stack do Passbolt funcionando, precisamos criar o primeiro usuário que terá acesso administrativo ao Passbolt.

Pra isso precisamos saber o ID do container passbolt-server, para podermos acessar ele remotamente, com o comando docker ps vamos obter o seguinte resultado:


root@srvnexus:~# docker ps
12a29fea696e   passbolt/passbolt:latest-ce  "/usr/bin/wait-for.s…"   26 sec  Up  26 sec 80/tcp, 443/tcp                                    passbolt-server

O código em destaque amarelo é o ID do container passbolt-server, precisamos acessa-lo para executar o comando de criação do usuário administrador, utilize o comando abaixo para realizar a criação:


docker exec 12a29fea696e su -m -c "/usr/share/php/passbolt/bin/cake \
  passbolt register_user \
    -u SEU_EMAIL \
    -f SEU_NOME \
    -l SEU_SOBRENOME \
    -r admin" -s /bin/sh www-data

OBSERVAÇÃO:

Substitua o ID destacado em amarelo pelo seu ID do Container e preencha os campos SEU_EMAIL, SEU_NOME e SEU_SOBRENOME

Utilize um e-mail válido, pois em caso de esquecimento da senha é possível restaurar o acesso.

Após executar o comando acima, ajustado conforme as suas necessidade, se tudo tiver funcionando corretamente você obterá uma saída semelhante a descrita na tela abaixo.


     ____                  __          ____
    / __ \____  _____ ____/ /_  ____  / / /_
   / /_/ / __ `/ ___/ ___/ __ \/ __ \/ / __/
  / ____/ /_/ (__  |__  ) /_/ / /_/ / / /
 /_/    \__,_/____/____/_.___/\____/_/\__/

 Open source password manager for teams
-------------------------------------------------------------------------------
Role not found, using default user role.
User saved successfully.
To start registration follow the link provided in your mailbox or here:
https://passbolt.seudominio.com/setup/start/2181f865-dd11-4608-a753-89a0d18bf9aa/b5c073f6-5159-4946-9e1b-c5b241d34112

Copie o link destacado e cole em seu navegador, preencha o seu email cadastrado e em seguida será solicitado a  criação de uma senha, logo depois será baixado um arquivo de recuperação, SALVE ESSE ARQUIVO COM A SUA VIDA kkkkk

Pois é com este arquivo que você poderá autenticar um outro navegador ou recuperar até mesmo a conta de acesso.

Pronto! Passbolt instalado e pronto para uso, nos próximos posts, irei mostrar como configurar o envio de e-mail pela plataforma, para receber informações de alterações, cadastrar novos usuários e poder também recuperar o acesso através do e-mail.

Quer montar seu ambiente Docker Swarm?

Aprenda a montar e gerenciar seu ambiente Docker Swarm de forma prática e organizada. Neste guia, você verá passo a passo como configurar o cluster

Clique aqui

Se esse material foi útil para você e te ajudou no processo, considere acompanhar o meu trabalho e ficar por dentro de novos conteúdos.

Minhas Redes:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *