# Distribuzione e aggiornamenti (Open Source) ## Obiettivo Linee guida per pubblicare NetGescon e distribuire aggiornamenti, con focus su Docker. ## Specifiche demo online - Dominio: `demo.netgescon.it` (o `.org`) - TLS: certificato Let’s Encrypt - Server consigliato: 2 vCPU / 4 GB RAM / 40+ GB SSD - Porta HTTP: 80 → Nginx - Porta HTTPS: 443 → Nginx - Stack: Docker Engine + Docker Compose ## Setup online (end-to-end) - Guida completa: `docs/000-FILAMENT/10-ONLINE-SETUP.md` - Compose online (Traefik + app): `docker/docker-compose.online.yml` - Env online: `.env.online.example` ## Opzione consigliata: Docker + Versioning ### Struttura immagini - `netgescon/app` → PHP + Laravel + Filament - `netgescon/nginx` → Nginx - `netgescon/mysql` → DB (opzionale per demo) ### Versionamento - Tag immagine: `vX.Y.Z` - `latest` solo per preview - Release notes su GitHub ### Aggiornamento - Pull nuova immagine - `php artisan migrate --force` - `php artisan optimize:clear` ## Docker (distribuzione pronta) - Dockerfile: `docker/Dockerfile.prod` - Compose: `docker/docker-compose.prod.yml` - Compose demo: `docker/docker-compose.demo.yml` - Nginx: `docker/nginx/default.conf` - Init DB staging: `docker/mysql/init.sql` ### Installazione base 1. Configura file `.env` per DB e APP_URL. 2. Avvia: - `docker compose -f docker/docker-compose.prod.yml up -d` ### DNS (esempio) - `A` record → IP del server - `CNAME` (opzionale) → `demo` → root ### TLS (Nginx esterno) - Termina TLS su reverse proxy (Nginx/Traefik) davanti al container - Forward verso `http://127.0.0.1:8080` ### Demo online - Avvio demo: `scripts/deploy-demo.sh` - Compose demo: `docker/docker-compose.demo.yml` ### Aggiornamento autonomo - Script: `scripts/update-docker.sh` - Azioni: pull immagine → restart → migrate → clear cache ## Database e dati - Volume persistente per DB - Volume persistente per storage - Backup obbligatorio prima di update ## Strategie aggiornamento 1) **Rolling update** (prod) 2) **Blue/Green** (consigliata per installazioni grandi) ## Distribuzione archivi legacy - Non includere in immagini - Montare `/mnt/gescon-archives/gescon` come volume read-only ## Checklist update - backup DB - backup storage - pull immagine - migrate - clear cache - health check ## Note d'aggiornamento - File: `CHANGELOG.md` - Versione: `VERSION` ## Materiale Open Source minimo - `README.md` con setup e run - `CONTRIBUTING.md` con workflow PR e standard - `CHANGELOG.md` - `LICENSE` - Documentazione in `docs/` aggiornata ## Note sicurezza - Non pubblicare credenziali - Configurare `.env` esterno - Permessi minimi sui volumi