Files
2026-10-23 22:31:02 -03:00
..
2026-10-23 22:31:02 -03:00

Segredos

Esta pasta guarda os arquivos lidos como Docker secrets. Nunca coloque o conteúdo deles em Markdown, no .env, em logs ou no chat.

Arquivo Uso Obrigatório
pg_password Senha do usuário dono do banco (botpontos), usado só pelas migrations e pelo backup sim
pg_app_password Senha do usuário da aplicação (botpontos_app), usado pela API e pelo worker sim
encryption_key Chave AES-256 das senhas da PontoMais (mínimo 32 caracteres). Guarde uma cópia fora do servidor sim
telegram_token Token do bot criado no @BotFather sim (o worker não sobe sem ele)
holiday_api_key Chave da API feriadosapi.com o arquivo precisa existir, mas pode ficar vazio

Gerar os arquivos

No Git Bash ou no Debian, a partir da pasta do projeto:

openssl rand -base64 32 | tr -d '\n' > secrets/pg_password
openssl rand -base64 32 | tr -d '\n' > secrets/pg_app_password
openssl rand -base64 48 | tr -d '\n' > secrets/encryption_key

O token do Telegram e a chave da feriadosapi.com são colados à mão, sem quebra de linha no final:

printf '%s' 'COLE_O_TOKEN_AQUI' > secrets/telegram_token
printf '%s' 'COLE_A_CHAVE_AQUI' > secrets/holiday_api_key

Sem chave de feriados, crie o arquivo vazio:

: > secrets/holiday_api_key

Permissões no servidor Debian

Restrinja pela pasta, não pelos arquivos:

chmod 700 secrets
chmod 644 secrets/*

O Docker Compose monta cada arquivo dentro do container mantendo dono e permissões do host. Os arquivos precisam ser legíveis pelos usuários dos containers (Postgres usa UID 70; a API e o worker, UID 65532). Com chmod 600, eles não conseguiriam ler. Quem protege os segredos no host é a pasta com 700.

Atenção

  • pg_password e pg_app_password são lidas pelo Postgres apenas na primeira inicialização do volume pgdata. Trocar os arquivos depois não troca as senhas no banco.
  • Sem a encryption_key, as senhas da PontoMais gravadas não podem ser recuperadas. Guarde uma cópia num cofre de senhas.

Trocar a chave de criptografia

  1. Copie a chave atual para secrets/encryption_key_previous e gere uma nova secrets/encryption_key.
  2. No .env, aumente BP_ENCRYPTION_KEY_VERSION (ex.: de 1 para 2).
  3. No docker-compose.yml, adicione o segredo encryption_key_previous e as variáveis BP_ENCRYPTION_PREVIOUS_KEY_FILE e BP_ENCRYPTION_PREVIOUS_KEY_VERSION (com a versão antiga) aos serviços api e worker.
  4. Suba os containers e rode docker compose run --rm api admin rotate-key.
  5. Depois que o comando informar que tudo foi recifrado, remova a chave anterior do Compose e da pasta.