Deploy stack su Proxmox / deploy (push) Failing after 3s
Monorepo npm con apps/public (Angular SSR), apps/private (Angular SPA), apps/api (Fastify), packages/shared e packages/styles; Medusa 2.21 in medusa/; infrastruttura Docker (Postgres PostGIS+pgvector, Redis, Caddy, backup) e workflow Gitea Actions per il deploy via SSH a ogni push su master. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018jQyT6dR9czzGwqb7FkG6u
1.8 KiB
1.8 KiB
33 — Produzione: Docker Compose e Caddy
Leggi CLAUDE.md.
Obiettivo
Deploy completo sulla VPS con sottodomini sullo stesso dominio.
Cosa fare
- Dockerfile multi-stage per
apps/api,apps/public(server SSR Node),medusa;apps/privatebuildata come statico e servita da Caddy. docker-compose.prod.yml: postgres, redis, medusa, api, public, caddy. Rete interna; solo Caddy espone 80/443. Volumi: dati Postgres, uploads (condiviso api/caddy), file Medusa, log.Caddyfilecon dominio da variabile ({$DOMAIN}):{$DOMAIN}ewww→public(redirect www → root);area.{$DOMAIN}→ staticoapps/privatecon fallback SPA aindex.html;api.{$DOMAIN}→api;shop-admin.{$DOMAIN}→ dashboard Medusa, protetto da basic auth e/o whitelist IP;media.{$DOMAIN}→ sola cartellauploads/public(maiprivate);- Medusa Store API non esposta pubblicamente, tranne l'endpoint webhook Stripe;
- header di sicurezza (HSTS, X-Content-Type-Options, Referrer-Policy, CSP di base compatibile con Stripe), compressione, cache lunga per asset con hash.
- Script npm
deploy:build,deploy:up,db:migrate:prode procedura di backup giornaliero (dump di entrambi i database + cartella uploads) con rotazione, da integrare con il backup già presente sulla VPS. - Documenta i record DNS necessari.
Criteri di accettazione
docker compose -f docker-compose.prod.yml up -dsu una macchina pulita porta su tutti i servizi con HTTPS automatico.api.{$DOMAIN}/health→ 200; area privata ricarica correttamente qualunque route (fallback SPA).- I file in
uploads/privatenon sono raggiungibili via URL. - Dashboard Medusa non accessibile senza credenziali/IP consentito.
- Ripristino da backup provato e documentato.
CLAUDE.mdaggiornato con la procedura di deploy.