PROTECTED-CUSTOMER-DATA.md - verdetto: la distribuzione CUSTOM ha accesso 'Always available' a Level 1 e Level 2 (email, statusPageUrl): nessuna approvazione Shopify da attendere per gli store live. La review servira' per l'app pubblica (R7). Il fatto che funzioni oggi su pcrt-reso-test non prova nulla: sui development store la review non e' richiesta comunque. I requisiti di sicurezza L1/L2 restano pero' obbligatori. Autovalutazione con evidenze: cifratura a riposo OK (volume Fly ENCRYPTED=true), backup cifrati OK (snapshot Fly), separazione test/prod OK. Gap: retention non documentata, privacy policy assente, incident response assente, password Fly da cambiare, snapshot con sola retention 5gg e nodo singolo (i record legali sono la PROVA del recesso). fly.toml: min_machines_running 0 -> 1. Un cold start misurato ha richiesto ~38s; l'art. 54-bis pretende una funzione sempre accessibile e facilmente utilizzabile.
28 lines
998 B
TOML
28 lines
998 B
TOML
# Fly.io deployment — CUSTOM distribution environment (clienti LIVE).
|
|
# App name: recesso-custom. The future PUBLIC app is a SEPARATE Fly app
|
|
# (recesso-public) with its own DB — deploys here never touch it (PLAN §0-ter).
|
|
#
|
|
# Secrets are NOT stored here. Set them with `fly secrets set` (never commit):
|
|
# DATABASE_URL, SHOPIFY_API_KEY, SHOPIFY_API_SECRET, SHOPIFY_APP_URL
|
|
# (SCOPES can also be set as a secret/env to match shopify.app.toml.)
|
|
|
|
app = "recesso-custom"
|
|
primary_region = "fra" # Frankfurt (EU data residency)
|
|
|
|
[build]
|
|
dockerfile = "Dockerfile"
|
|
|
|
[http_service]
|
|
internal_port = 3000
|
|
force_https = true
|
|
auto_stop_machines = true
|
|
auto_start_machines = true
|
|
# Una macchina sempre calda. Con 0, un cold start misurato ha richiesto ~38s:
|
|
# l'art. 54-bis pretende una funzione "sempre accessibile" e "facilmente
|
|
# utilizzabile", e 38 secondi dopo il clic sono un ostacolo. Costo: 1 macchina.
|
|
min_machines_running = 1
|
|
|
|
[[vm]]
|
|
size = "shared-cpu-1x"
|
|
memory = "512mb"
|