infra/bootstrap.sh é o script que prepara o ambiente antes de qualquer docker compose up. Ele não sobe containers — só deixa o terreno pronto.
Quando rodar
- Primeira instalação do servidor.
- Servidor novo (mudança de máquina), depois de copiar
/opt/server/infra/. - Sempre que adicionar um novo serviço com
.env.examplee quiser gerar segredos.
O que ele faz
Cria a rede Docker `server_net`
Se já existir, deixa quieto. Sem essa rede, nenhum compose sobe (todos declaram
external: true).Copia .env.example → .env em cada serviço
Só se o
.env ainda não existe. Você nunca perde um .env configurado.Gera senhas aleatórias nos campos vazios
Usa
openssl rand -hex 24 (48 caracteres hex). Substitui apenas onde está vazio ou changeme:POSTGRES_PASSWORD→ senha do superuser do PostgresREDIS_PASSWORD→ senha do RedisN8N_ENCRYPTION_KEY→ chave que o n8n usa pra criptografar credenciais salvas
Ajusta o dono de n8n/data/
O n8n roda como user Sem sudo, sem senha — só precisa de Docker acessível.
node (UID 1000) dentro do container e não faz self-chown do volume (diferente de postgres/redis). Se a pasta estiver com dono errado, o bootstrap roda um container alpine descartável pra corrigir:O que ele NÃO faz
- Não sobe nenhum serviço da stack (
docker compose upcontinua manual). Roda apenas umalpinedescartável pra corrigir permissão. - Não cria os bancos das aplicações (isso é o
create-db.sh). - Não configura proxy hosts no NPM (isso é via UI em
:81).
Como rodar
Onde estão os segredos depois
Cada serviço tem seu próprio.env:
create-db.sh salvam em infra/postgres/secrets/<nome>.env (modo 600).