1. Scegli il computer che resterà acceso
Un VPS è un computer Linux affittato con un indirizzo Internet pubblico. Quando il tuo Mac va in stop, perde la rete o si riavvia, il VPS continua a servire i clienti e a ricevere le notifiche di pagamento. Usa il Mac per amministrarlo. Tieni il servizio commerciale sul VPS.
Apri il listino di Hetzner Cloud o DigitalOcean Droplets. Imposta regione europea, Linux e un budget iniziale di €8–10 al mese. Prima di confermare, leggi il totale per la tua regione, inclusi IVA, indirizzo IPv4, copie di sicurezza e traffico. Il budget è una stima. Annota l’IP pubblico e la spesa mensile effettiva.
Crea l’istanza con accesso SSH a chiave. Consenti SSH dal tuo indirizzo di amministrazione e apri le porte 80 e 443 al pubblico. Installa Docker Engine con Compose. Conserva fuori dal VPS copie ripristinabili del database e delle chiavi di firma. Prova il ripristino prima di accettare clienti.
Listini: Hetzner · DigitalOcean.
2. Collega il dominio e avvia il servizio
Compra il dominio da un registrar. Nel suo pannello DNS crea un record A per il nome scelto, per esempio scudo.tuodominio.it, con l’IPv4 del VPS. Inserisci un record AAAA solo se hai configurato IPv6. Verifica che il risultato di dig +short scudo.tuodominio.it A sia il tuo IP.
Sul computer di preparazione, dalla cartella del prodotto, crea l’immagine per la CPU del VPS. Per un VPS Intel/AMD usa il comando seguente. Per uno ARM sostituisci linux/amd64 con linux/arm64. Serve Docker con buildx. Il compilatore genera i 31 moduli .so per Linux. L’immagine finale contiene il motore solo in forma binaria, il suo manifesto e l’applicazione necessaria a servirlo. I .so con nome darwin del Mac non funzionano su Linux.
docker buildx build --platform linux/amd64 --load -t scudo-app:passo22 -f build_dist/Dockerfile .
docker run --rm --entrypoint python scudo-app:passo22 -c 'from avvia_scudo_saas import activate_core, DIST; activate_core(); assert len(list(DIST.rglob("*.so")))==31'
docker save scudo-app:passo22 | gzip > scudo-app.tar.gz
scp scudo-app.tar.gz utente@IP_VPS:~/
scp -r sales_and_deploy/deploy_cloud_production utente@IP_VPS:~/
Sostituisci utente e IP_VPS con quelli ricevuti dal provider. Collegati con SSH. Sul VPS carica l’immagine e prepara la configurazione privata.
docker load -i ~/scudo-app.tar.gz
cd ~/deploy_cloud_production
cp .env.example .env
chmod 600 .env
nano .env
Imposta SCUDO_DOMAIN, il segreto whsec_ del webhook Stripe richiesto dal kit e lascia AUTO per i due segreti generati al primo avvio. Aggiungi SCUDO_RELEASE_IMAGE=scudo-app:passo22. Per Stripe inserisci SCUDO_STRIPE_GROWTH_PRODUCT (ID del Payment Link), SCUDO_STRIPE_GROWTH_URL (URL del checkout in abbonamento da €899/mese) e gli equivalenti STARTER. Registra /v1/webhooks/stripe sul dominio. Per Paddle o Lemon Squeezy configura i rispettivi prodotti e segreti secondo api_server/multi_payment_gateway.py e registra /v1/webhooks/paddle o /v1/webhooks/lemonsqueezy.
Esegui bash deploy_one_click.sh. Attendi “Console disponibile”, apri la console e prova un checkout in modalità test prima di configurare prodotti e segreti live. Se il controllo HTTPS fallisce, verifica DNS, porte e docker compose -f docker-compose.prod.yml logs --tail=50.
3. Decidi chi venderà il servizio
Strada A · Paddle o Lemon Squeezy. Un Merchant of Record vende al cliente e gestisce il pagamento e le imposte indirette sulla vendita. Apri l’account, sottoponi il prodotto, completa l’identificazione, registra l’IBAN e conserva contratto, prospetto e documento di ciascun accredito. Paddle dispone normalmente bonifici mensili sopra soglia. Lemon Squeezy crea due liquidazioni al mese, soggette a soglia e tempi di disponibilità. Paddle · Lemon Squeezy.
Per un avvocato italiano la scelta dipende dall’attività effettivamente svolta. Prima di vendere, sottoponi all’Ordine il ruolo concreto, compresi gestione del servizio e assistenza continuativa. Fai esaminare al commercialista titolarità del software, contratto e trattamento fiscale e previdenziale. Un bonifico del rivenditore può essere qualificato come royalty da diritto d’autore solo se ne ricorrono i presupposti. La cadenza del bonifico e la sua causale da sole non li dimostrano. Legge 247/2012, art. 18.
Strada B · LLC nel Delaware. Prima di spendere verifica compatibilità del tuo ruolo con la professione, costi annuali e obblighi italiani e USA. Poi scegli un registered agent, deposita il Certificate of Formation, conserva gli atti e richiedi l’EIN direttamente all’IRS. Presenta domanda a Mercury per il conto aziendale con dati veritieri su soci, indirizzo e attività. Mercury opera tramite banche partner. Dopo l’approvazione chiedi l’attivazione di Stripe US a nome della LLC e collega il conto. Completa le verifiche dei due fornitori prima di promettere una data di lancio. Delaware · IRS · Mercury · Stripe.
Carta fisica aziendale. Usala per spese documentate della LLC, come hosting o dominio. Salva ricevuta e finalità per ogni acquisto, imposta un limite e riconcilia l’estratto conto ogni mese. Paga le spese personali con mezzi personali. Per compensi, distribuzioni o un addebito personale accidentale, chiedi al consulente come registrare e regolare l’operazione.
4. Pubblica i tre ingressi al servizio
Obiettivo di cinque minuti per l’invio quando account, permessi, pacchetti e servizio sono già pronti. Ogni vetrina ha tempi propri di verifica. Pubblica solo gli strumenti client contenuti in marketplace_bundles. Controlla versione, nome disponibile e URL del servizio.
PyPI · Nella cartella marketplace_bundles/pypi_package, con build e twine installati e una directory dist dedicata alla sola versione corrente, esegui i tre comandi. Controlla l’elenco dei file prima dell’upload. Usa le credenziali di pubblicazione del progetto.
python -m build
python -m twine check dist/*
python -m twine upload dist/*
npm · Entra in marketplace_bundles/npm_package con un account autorizzato allo scope @kinetiproof. Esegui npm pack --dry-run, controlla il contenuto, poi npm publish --access public. Installa la versione pubblicata in un progetto vuoto e prova la prima richiesta. Fai la stessa prova con il pacchetto PyPI.
RapidAPI · In Studio crea la scheda e importa marketplace_bundles/rapidapi_bundle/openapi_rapidapi_ready.json. Imposta il tuo ingresso HTTPS. Configura il controllo X-RapidAPI-Proxy-Secret, l’associazione utente/licenza e i piani BASIC, PRO, ULTRA e MEGA. Prova un audit e il rifiuto di un segreto errato prima di rendere pubblica la scheda. La checklist completa è in ISTRUZIONI_RAPIDAPI_NPM_PYPI.md nella stessa cartella.
5. Accompagna il primo cliente dalla prova a Growth
Invia al cliente il dominio HTTPS e chiedigli di aprire la dashboard. Nel modulo Free Trial inserisce l’email aziendale, attiva la prova e conserva la chiave mostrata. La prova dura fino a 14 giorni e comprende 25 audit complessivi. Per ciascun audit il suo server richiede un nonce con POST /v1/challenge e usa subito quel nonce in POST /v1/audit-session.
Per la diagnosi apre “KinetiProof 24/7 AI Sales & Tech Concierge”, sceglie Italiano e incolla i dati diagnostici privi di segreti. Il Concierge integrato spiega i quadranti riconosciuti e suggerisce il piano. È disponibile finché il servizio è online.
Al tentativo numero 26 l’API risponde HTTP 429 con upgrade_url. Il cliente apre quel collegamento, sceglie Growth da €899/mese e completa il pagamento sul checkout. Attendi il webhook firmato. La stessa chiave abilita i certificati. Con la stessa chiave il server del cliente richiede un nuovo nonce e chiama POST /v1/generate-certificate con nonce, plan e brand_name. Salva certificates.html per leggere la prescrizione dei quadranti critici. Per la ricevuta commerciale B2B interroga GET /v1/invoices, prende l’id e scarica GET /v1/invoices/ID.html con la stessa autenticazione Bearer.
6. Controlla gli incassi da iPhone
In Safari apri https://TUO-DOMINIO/admin.html. Inserisci il token amministratore, conservato nel gestore di password, e tocca “Collega console”. Puoi aggiungere la pagina alla schermata Home. La console aggiorna i dati circa ogni cinque secondi.
Leggi MRR (somma dei canoni mensili attivi) e cerca la riga del cliente Growth. Per il primo cliente pagante, partendo da zero, il valore atteso è €899. Tocca “Elenca documenti” e scarica la ricevuta HTML o JSON. Controlla cliente, piano e importo.
Per verificare il denaro arrivato, abbina la transazione nel pannello del provider al suo prospetto di liquidazione e poi all’accredito bancario. Commissioni, rimborsi, imposte e tempi di bonifico possono spiegare la differenza rispetto al canone esposto in console. Apri la console del tuo servizio.