netgescon-day0/docker/README_VM_SETUP.md

3.6 KiB

NetGescon Docker Pack - VM Ubuntu nuova

Questa cartella contiene tutto il necessario per preparare una nuova VM Ubuntu e avviare NetGescon con 3 domini:

  • www.netgescon.it (presentazione)
  • app.netgescon.it (produzione)
  • demo.netgescon.it (demo)

Contenuto pronto all'uso

  • docker-compose.multisite.yml
  • .env.multisite.example
  • nginx/prod.conf
  • nginx/demo.conf
  • www/index.html
  • provision-vm.sh
  • install-dev-tools.sh
  • deploy-multisite.sh
  • update-multisite.sh
  • backup-multisite.sh

0) Prerequisiti DNS/Router

Prima di tutto:

  1. Punta i record A dei domini verso IP pubblico della VM/linea:
    • www.netgescon.it
    • app.netgescon.it
    • demo.netgescon.it
  2. Apri/NAT verso la VM le porte:
    • 80/tcp
    • 443/tcp

1) Preparazione VM (una volta sola)

Da repo netgescon-laravel:

cd /percorso/netgescon-laravel/docker
chmod +x provision-vm.sh install-dev-tools.sh deploy-multisite.sh update-multisite.sh backup-multisite.sh
./provision-vm.sh

Logout/Login (o reboot) dopo provision-vm.sh per applicare gruppo Docker.

2) Opzionale: strumenti desktop VM

Se vuoi usare la VM anche come postazione operativa:

cd /percorso/netgescon-laravel/docker
./install-dev-tools.sh

Installa:

  • VS Code
  • XRDP (desktop remoto)
  • ambiente desktop leggero (XFCE)

3) Configurazione ambiente

cd /percorso/netgescon-laravel
cp docker/.env.multisite.example docker/.env.multisite
nano docker/.env.multisite

Imposta almeno:

  • password DB prod/demo
  • email Let's Encrypt
  • domini reali

4) Primo deploy

cd /percorso/netgescon-laravel/docker
./deploy-multisite.sh

5) Aggiornamenti online (procedura standard)

cd /percorso/netgescon-laravel/docker
./update-multisite.sh

La procedura fa:

  1. backup DB prod + demo
  2. aggiorna codice in base alla modalità scelta
  3. rebuild immagine app condivisa prod/demo
  4. restart container applicativi
  5. clean cache Laravel

Modalità update (senza Git obbligatorio)

Nel file docker/.env.multisite imposta UPDATE_MODE:

  • local: usa il codice già presente sulla VM (default)
  • distro: scarica pacchetto privato autorizzato (DISTRO_UPDATE_URL + DISTRO_UPDATE_TOKEN)
  • github: scarica pacchetto release pubblico (GITHUB_RELEASE_URL)

6) Backup manuale rapido

cd /percorso/netgescon-laravel/docker
./backup-multisite.sh

Dump in:

  • storage/backups/prod_*.sql
  • storage/backups/demo_*.sql

7) Comandi utili

Stato container:

docker compose --env-file docker/.env.multisite -f docker/docker-compose.multisite.yml ps

Log in tempo reale:

docker compose --env-file docker/.env.multisite -f docker/docker-compose.multisite.yml logs -f --tail=200

Riavvio stack:

docker compose --env-file docker/.env.multisite -f docker/docker-compose.multisite.yml up -d

8) Esecuzione locale (senza server online)

Per girare tutto in locale su porte dedicate:

cd /percorso/netgescon-laravel
cp docker/.env.multisite.example docker/.env.local
docker compose --env-file docker/.env.local -f docker/docker-compose.local.yml up -d --build

URL locali:

  • Produzione locale: http://localhost:8080
  • Demo locale: http://localhost:8081
  • Sito presentazione: http://localhost:8082

Troubleshooting rapido

Errore exit code 127

Significa quasi sempre "comando non trovato".

Controlla:

which bash
which docker || true
docker compose version || true
docker-compose --version || true

Se Docker manca:

cd /percorso/netgescon-laravel/docker
./provision-vm.sh

Se Docker c'è ma non hai permessi:

sudo usermod -aG docker $USER
newgrp docker
docker ps