netgescon-day0/docs/000-FILAMENT/07-DISTRIBUZIONE-UPDATE.md

99 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 Lets 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