Piattaforma ITI TECHNOLOGY: monorepo, Medusa, API, sito, area riservata e deploy
Deploy stack su Proxmox / deploy (push) Failing after 3s
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
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
# Produzione (docker-compose.prod.yml). Sulla VPS copiare questo file in `.env` nella root del repo e compilarlo.
|
||||
# Non committare mai il file compilato. Procedura completa in CLAUDE.md → "Deploy".
|
||||
#
|
||||
# Segreti: valori casuali lunghi, SOLO esadecimali (finiscono anche dentro URL postgres://), es.
|
||||
# node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
|
||||
# openssl rand -hex 32
|
||||
|
||||
# --- Dominio e TLS ---
|
||||
# Dominio principale, senza www né protocollo. Sottodomini usati: www, area, api, shop-admin, media
|
||||
DOMAIN=example.it
|
||||
# Email per Let's Encrypt (avvisi di scadenza dei certificati)
|
||||
ACME_EMAIL=admin@example.it
|
||||
|
||||
# --- Dashboard Medusa (shop-admin.DOMAIN) ---
|
||||
SHOP_ADMIN_USER=iti
|
||||
# Hash bcrypt della password di basic auth, TRA APICI SINGOLI (contiene "$"):
|
||||
# docker run --rm caddy:2-alpine caddy hash-password --plaintext 'password-lunga'
|
||||
SHOP_ADMIN_PASSWORD_HASH='$2a$14$sostituire-con-hash-bcrypt'
|
||||
# IP/CIDR ammessi, separati da spazio (vuoto = tutti; la basic auth resta comunque)
|
||||
SHOP_ADMIN_ALLOWED_IPS=
|
||||
|
||||
# --- Postgres ---
|
||||
POSTGRES_USER=postgres
|
||||
POSTGRES_PASSWORD=
|
||||
POSTGRES_DB=postgres
|
||||
APP_DB_NAME=iti_app
|
||||
APP_DB_USER=iti_app
|
||||
APP_DB_PASSWORD=
|
||||
MEDUSA_DB_NAME=iti_medusa
|
||||
MEDUSA_DB_USER=iti_medusa
|
||||
MEDUSA_DB_PASSWORD=
|
||||
|
||||
# --- Segreti condivisi API ↔ Medusa ---
|
||||
INTERNAL_API_SECRET=
|
||||
WEBHOOK_SECRET=
|
||||
|
||||
# --- API (apps/api) ---
|
||||
API_COOKIE_SECRET=
|
||||
API_JWT_SECRET=
|
||||
API_LOG_LEVEL=info
|
||||
# Stampata da `npm run deploy:seed:medusa` al primo avvio (riga MEDUSA_PUBLISHABLE_KEY=pk_...)
|
||||
MEDUSA_PUBLISHABLE_KEY=
|
||||
PRIVACY_POLICY_VERSION=privacy-v1
|
||||
# Destinatari delle notifiche interne, separati da virgola (vuoto = utenti admin attivi)
|
||||
ADMIN_NOTIFY_EMAILS=
|
||||
# Email transazionali: console (NON invia: solo log) | brevo | resend
|
||||
EMAIL_PROVIDER=console
|
||||
EMAIL_FROM=
|
||||
EMAIL_FROM_NAME=ITI TECHNOLOGY
|
||||
EMAIL_REPLY_TO=
|
||||
BREVO_API_KEY=
|
||||
RESEND_API_KEY=
|
||||
# Admin iniziale dell'area riservata (`npm run db:seed:prod`), password almeno 12 caratteri
|
||||
SEED_ADMIN_EMAIL=
|
||||
SEED_ADMIN_PASSWORD=
|
||||
|
||||
# --- Medusa ---
|
||||
MEDUSA_JWT_SECRET=
|
||||
MEDUSA_COOKIE_SECRET=
|
||||
MEDUSA_AUTH_MFA_ENCRYPTION_KEY=
|
||||
# Stripe: chiave segreta (sk_live_… / sk_test_…) e signing secret del webhook
|
||||
# https://api.DOMAIN/hooks/payment/stripe_stripe (vedi CLAUDE.md → Stripe)
|
||||
STRIPE_API_KEY=
|
||||
STRIPE_WEBHOOK_SECRET=
|
||||
|
||||
# --- Sito pubblico (apps/public) ---
|
||||
# Chiave pubblicabile Stripe (pk_live_… / pk_test_…), stesso account di STRIPE_API_KEY
|
||||
STRIPE_PUBLISHABLE_KEY=
|
||||
# true solo sul dominio definitivo: altrimenti noindex ovunque e robots.txt "Disallow: /"
|
||||
SITE_INDEXABLE=false
|
||||
|
||||
# --- Backup (npm run backup:prod) ---
|
||||
# Cartella dell'host dove scrivere i backup (da includere nel backup già presente sulla VPS)
|
||||
BACKUP_DIR=./backups
|
||||
# Numero di backup da tenere
|
||||
BACKUP_KEEP_DAYS=14
|
||||
Reference in New Issue
Block a user