# Alteracoes de producao - 2025-12-18 Este documento registra as mudancas aplicadas na VPS para estabilizar o ambiente e padronizar o uso do PostgreSQL 18. ## Resumo - Migracao do banco principal do sistema para o servico `postgres18`. - Desativacao do servico `postgres` (pg16) no Swarm. - Convex backend fixado na tag `ghcr.io/get-convex/convex-backend:6690a911bced1e5e516eafc0409a7239fb6541bb`. - `CONVEX_INTERNAL_URL` ajustado para o endpoint publico, evitando falhas de DNS interno (`ENOTFOUND sistema_convex_backend`). - Tratamento explicito para tokens revogados/expirados/invalidos nas rotas `/api/machines/*` e chat. - Limpeza de documento legado no Convex (`liveChatSessions` id `pd71bvfbxx7th3npdj519hcf3s7xbe2j`). ## Backups gerados - `/root/pg-backups/sistema_chamados_pg16_20251218215925.dump` - `/root/pg-backups/sistema_chamados_pg18_20251218215925.dump` - Convex: `/var/lib/docker/volumes/sistema_convex_data/_data/db.sqlite3.backup-20251218165717` - Observacao: foi gerado um arquivo extra `db.sqlite3.backup-` (sem timestamp) por comando incorreto. ## Procedimento (principais comandos) ``` # 1) Backup dos bancos docker exec -u postgres pg_dump -Fc -d sistema_chamados -f /tmp/sistema_chamados_pg16_20251218215925.dump docker exec -u postgres pg_dump -Fc -d sistema_chamados -f /tmp/sistema_chamados_pg18_20251218215925.dump # 2) Parar o web durante a migracao docker service scale sistema_web=0 # 3) Restaurar dump do pg16 no pg18 docker exec -u postgres psql -c "DROP DATABASE IF EXISTS sistema_chamados;" docker exec -u postgres psql -c "CREATE DATABASE sistema_chamados OWNER sistema;" docker cp /root/pg-backups/sistema_chamados_pg16_20251218215925.dump :/tmp/sistema_chamados_restore.dump docker exec -u postgres pg_restore -d sistema_chamados -Fc /tmp/sistema_chamados_restore.dump # 4) Atualizar stack (com variaveis exportadas) set -a; . /srv/apps/sistema/.env; set +a docker stack deploy --with-registry-auth -c /srv/apps/sistema/stack.yml sistema # 5) Desativar pg16 docker service scale postgres=0 ``` ## Ajustes em stack.yml - `DATABASE_URL` apontando para `postgres18:5432`. - `CONVEX_INTERNAL_URL` apontando para `https://convex.esdrasrenan.com.br`. - Imagem do Convex ajustada para a tag acima. ## Resultado - `sistema_web` voltou com 2 replicas saudaveis. - `sistema_convex_backend` rodando na tag informada. - `postgres` (pg16) desativado no Swarm. - Healthcheck OK: `GET /api/health` e `GET /version`. ## Observacoes operacionais - O deploy do stack precisa de variaveis exportadas do `.env`. Sem isso, `NEXT_PUBLIC_*` fica vazio e o `POSTGRES_PASSWORD` nao e propagado, causando `P1000` no Prisma.