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_passwordepg_app_passwordsão lidas pelo Postgres apenas na primeira inicialização do volumepgdata. 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
- Copie a chave atual para
secrets/encryption_key_previouse gere uma novasecrets/encryption_key. - No
.env, aumenteBP_ENCRYPTION_KEY_VERSION(ex.: de 1 para 2). - No
docker-compose.yml, adicione o segredoencryption_key_previouse as variáveisBP_ENCRYPTION_PREVIOUS_KEY_FILEeBP_ENCRYPTION_PREVIOUS_KEY_VERSION(com a versão antiga) aos serviçosapieworker. - Suba os containers e rode
docker compose run --rm api admin rotate-key. - Depois que o comando informar que tudo foi recifrado, remova a chave anterior do Compose e da pasta.