- App FastAPI (main.py, app/): rotas /health e /dados_retorno, middleware anti-scanner, logging configurado - Config via configs.json (Pydantic); segredos fora do codigo e do git (.gitignore) - Dockerfile (oracledb thin, HEALTHCHECK) + requirements.txt + .dockerignore - Deploy Podman/Quadlet + Caddy em deploy/ - Docs: CLAUDE.md + docs/ (arquitetura, deploy, known-issues) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.6 KiB
2.6 KiB
Deploy — API-Scardua
Ambiente: VPS Hostinger (Debian 13), Podman rootless + Quadlet, Caddy (proxy + TLS), user admin.
No ar: https://api-scardua.flstecnologia.tech
Acesso à VPS
- SSH:
ssh vps-fls(alias já configurado → 179.197.230.154, porta 3115, useradmin). - ⚠️ No Windows use o OpenSSH nativo (PowerShell/cmd) — o Git Bash não enxerga o
known_hosts/config e falha. - Porta 22 é fechada no firewall. Sempre
-p 3115(ou o alias). systemctl --usersempre (rootless) — nuncasudo systemctlpros containers.
Arquitetura
- Imagem: hoje buildada local na VPS =
localhost/api-scardua:latest(sem registry ainda). - Container
api-scarduana redefls— só o Caddy alcança; a porta 8000 não é publicada no host. - Config:
configs.jsonmontado read-only de~/.config/api-scardua/configs.json. - Quadlet:
~/.config/containers/systemd/api-scardua.container. - Caddy:
api-scardua.flstecnologia.tech→api-scardua:8000, TLS automático (Let's Encrypt). Caddyfile em/srv/containers/stacks/caddy/Caddyfile.
Atualizar a app (hoje é manual)
# 1. copiar o código atualizado pro build dir da VPS (scp de main.py / app/ / etc.)
# 2. na VPS:
cd ~/build/api-scardua
podman build --format docker -t localhost/api-scardua:latest . # --format docker é OBRIGATÓRIO
systemctl --user restart api-scardua
⚠️
--format docker: em formato OCI (padrão do Podman) oHEALTHCHECKdo Dockerfile é ignorado.
Mexer no Caddy (com segurança)
cd /srv/containers/stacks/caddy
cp Caddyfile Caddyfile.bak # backup
# editar Caddyfile...
podman exec caddy caddy validate --config /etc/caddy/Caddyfile # valida ANTES
podman exec caddy caddy reload --config /etc/caddy/Caddyfile # recarrega sem downtime
Comandos úteis
systemctl --user status api-scardua # estado do serviço
podman logs -f api-scardua # logs ao vivo
podman ps --filter name=api-scardua # estado + health
podman healthcheck run api-scardua # roda o healthcheck na hora
Healthcheck
Embutido na imagem (HEALTHCHECK no Dockerfile, exec-form). Bate em /health a cada 30s.
É o sinal que o podman auto-update vai usar pra rollback quando o registry/CI estiver pronto.
Evolução planejada
- Registry + CI (Forgejo Actions): buildar e publicar em
git.flstecnologia.tech/<owner>/api-scardua, trocar o Quadlet pro alvo emdeploy/api-scardua.container(imagem do registry +AutoUpdate=registry) → deploy pull-based. - Backup do Postgres da VPS (pendência geral do servidor).