/opt/server/ é um repositório git privado hospedado no GitHub. Sua única função é permitir um deploy reproduzível: subiu uma máquina nova, instalou Docker, clonou o repo, rodou o bootstrap — infra de pé.
Filosofia
Só infra, sem projetos
O repo guarda apenas a infra compartilhada e a documentação. Cada projeto em
projetos/ mora em seu próprio repositório.Sem segredos
.env reais, dados de volume, certificados e credenciais geradas nunca entram no repo. Só os .env.example (templates).Reproduzível
Servidor novo =
git clone + ./bootstrap.sh + docker compose up -d. Tudo descrito em Primeiro deploy.Privado
Mesmo sem segredos, o repo é privado. Composes revelam topologia interna que não precisa ser pública.
O que entra no git
projetos/.gitkeep — só pra preservar a pasta vazia (git não rastreia diretórios sem arquivos).
O que NÃO entra (.gitignore)
| Padrão | Por quê não vai pro git |
|---|---|
.env, .env.local | Senhas reais geradas pelo bootstrap |
infra/*/data/ | Dados persistentes (DBs, workflows, configs do NPM) |
infra/npm/letsencrypt/ | Chaves privadas dos certificados TLS |
infra/postgres/secrets/ | Credenciais de DBs criados pelo create-db.sh |
projetos/* (exceto .gitkeep) | Cada projeto é um repo separado |
node_modules/, .next/, .cache/ | Lixo de Node/Mintlify |
.DS_Store, *.swp, .vscode/, .idea/ | Lixo de OS/editor |
Subir num servidor novo
Subir os serviços
Seguir a ordem em Primeiro deploy.
Atualizando o repo
Mudanças na infra (compose, scripts, docs) seguem o ciclo git normal:Backup vs versionamento
Git não substitui backup. O repo só guarda configuração. Os dados reais (infra/*/data/, certificados do NPM) precisam de backup separado — snapshot da VM, rsync periódico, ou tar agendado.