33 lines
1.6 KiB
Markdown
33 lines
1.6 KiB
Markdown
# 04 — Segurança do Deploy
|
|
|
|
## Segredos
|
|
- **Nunca** commitar tokens, senhas, JWT ou secrets. Use `.env` (no `.gitignore`) e
|
|
`EnvironmentFile=` no systemd.
|
|
- Tokens distintos por projeto: **WEBHOOK_TOKEN** (Gitea → listener) e **GITEA_TOKEN** (listener → API).
|
|
- Rotacionar tokens periodicamente.
|
|
|
|
## SSH
|
|
- Comunicação VPS↔VPS só pela VPN (`10.99.0.x`).
|
|
- Chave do usuário `deploy` sem passphrase para automação, com acesso restrito (produção + push no Gitea).
|
|
- Usar `-o BatchMode=yes` nos scripts (falha rápido em vez de pedir senha).
|
|
|
|
## Docker rootless na VPS 1 (⚠️ crítico)
|
|
- A VPS 1 roda **Docker rootless**. O `docker.service` (root) fica **desabilitado de propósito**.
|
|
- Sempre exportar `DOCKER_HOST=unix:///run/user/1000/docker.sock` nos comandos remotos.
|
|
- Se o daemon root for reativado e `deploy` estiver no grupo `docker`, um `docker compose up` sem
|
|
`DOCKER_HOST` cria containers **root paralelos**, invisíveis ao `docker ps` rootless e ao Traefik,
|
|
e pode prender portas (`docker-proxy` zumbi).
|
|
|
|
```bash
|
|
# Estado correto da VPS 1:
|
|
sudo systemctl status docker # deve estar: inactive (dead)
|
|
groups deploy # NÃO deve conter "docker"
|
|
DOCKER_HOST=unix:///run/user/1000/docker.sock docker ps
|
|
```
|
|
|
|
## Boas práticas
|
|
- **Commite antes de buildar**: o deploy faz `git reset --hard` e descarta mudanças locais.
|
|
- **Nunca edite arquivos direto na VPS 1**: serão sobrescritos pelo `rsync --delete`.
|
|
- Trava de concorrência (lock file / `isBuilding`) sempre ativa.
|
|
- Acompanhar o `deploy.log` e o status do commit no Gitea após cada deploy.
|