Três Sites Um Admin Um Postgres
Três sites, um Postgres, $8/mês. Esse é o meu stack Wagtail em produção.

Três sites, um Postgres, $8/mês. Esse é o meu stack Wagtail em produção.
O que tive logo de início:
1. Multi-site por hostname. Um projecto Wagtail, o modelo Site encaminha www / tech / books para árvores e templates separados. Um só admin, um só Postgres.
2. Traduções por campo como padrão de primeira classe. Cada model tem field + field_pt; uma pequena template tag escolhe com base na língua activa (cookie). As strings da UI usam gettext/rosetta.
3. Search sem infra extra. Model SearchField + backend da DB → /search/?q=... com scope por host, sem Elasticsearch.
4. Feeds Atom/RSS. django.contrib.syndication + um dispatch aware do host → três feeds independentes em /feed/ por subdomínio.
5. Sitemaps multi-site. wagtail.contrib.sitemaps respeita o routing do host automaticamente.
6. Revisions, drafts, scheduling, media library, image renditions — tudo no admin, sem código customizado.
O que escrevi realmente:
1. Um padrão de propriedade display_* nos posts dos livros para renderizarem sempre na língua nativa do livro (e não no cookie do visitante).
2. Dois comandos AI de manage.py: traduzir campos de páginas EN↔PT através de um platform prompt, e extrair títulos reais + resumos de 25–40 palavras a partir de markdown.
Como o executo:
1. VM AWS Lightsail (eu-west-1) ~ $8/mês: Postgres 16 + gunicorn + nginx + Certbot.
2. Media no S3 com signed URLs; as renditions do Wagtail servem o tamanho certo.
3. Deploy com um comando a partir do portátil desencadeia um script na VM: pull, migrate, collectstatic, compilemessages, bootstrap idempotente, restart, health-check HTTP, auto-rollback para a SHA anterior em caso de non-200.
4. A observabilidade é coerente: logs estruturados de access/error do gunicorn via journalctl; health-checks bloqueiam deploys; systemd Restart=on-failure; linhas de log em cada passo de backup e deploy.
5. Backups: pg_dump semanal para S3 (encriptado, lifecycle guarda os últimos N). Restore testado.
6. Apex 301 para www, HTTPS em todo o lado, HSTS em todos os três subdomínios.
Não precisas de Elasticsearch para search pequeno em Wagtail. Também deixei de fora o App Runner — a forma errada para multi-site com admin partilhado.
O que acrescentaria a seguir: Plausible Analytics (já ligado, por agora desligado) e APM/tracing a sério só quando o tráfego justificar.
Se estás a correr Django/Wagtail em produção, qual é a configuração mínima de observabilidade + rollback em que tu realmente confias antes de acrescentares APM?
P.S. Ao vivo: https://www.bilouro.com/ • Código: https://github.com/bilouro/bilouro-web
P.S. Novo post tech toda a quarta-feira.