182 lines
3.6 KiB
Markdown
182 lines
3.6 KiB
Markdown
# 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`:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
cd /percorso/netgescon-laravel/docker
|
|
./install-dev-tools.sh
|
|
```
|
|
|
|
Installa:
|
|
|
|
- VS Code
|
|
- XRDP (desktop remoto)
|
|
- ambiente desktop leggero (XFCE)
|
|
|
|
## 3) Configurazione ambiente
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
cd /percorso/netgescon-laravel/docker
|
|
./deploy-multisite.sh
|
|
```
|
|
|
|
## 5) Aggiornamenti online (procedura standard)
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
cd /percorso/netgescon-laravel/docker
|
|
./backup-multisite.sh
|
|
```
|
|
|
|
Dump in:
|
|
|
|
- `storage/backups/prod_*.sql`
|
|
- `storage/backups/demo_*.sql`
|
|
|
|
## 7) Comandi utili
|
|
|
|
Stato container:
|
|
|
|
```bash
|
|
docker compose --env-file docker/.env.multisite -f docker/docker-compose.multisite.yml ps
|
|
```
|
|
|
|
Log in tempo reale:
|
|
|
|
```bash
|
|
docker compose --env-file docker/.env.multisite -f docker/docker-compose.multisite.yml logs -f --tail=200
|
|
```
|
|
|
|
Riavvio stack:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
which bash
|
|
which docker || true
|
|
docker compose version || true
|
|
docker-compose --version || true
|
|
```
|
|
|
|
Se Docker manca:
|
|
|
|
```bash
|
|
cd /percorso/netgescon-laravel/docker
|
|
./provision-vm.sh
|
|
```
|
|
|
|
Se Docker c'è ma non hai permessi:
|
|
|
|
```bash
|
|
sudo usermod -aG docker $USER
|
|
newgrp docker
|
|
docker ps
|
|
```
|