# 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.