netgescon-master/docs/05-SINCRONIZZAZIONE-AMBIENTE.md
Pikappa2 480e7eafbd 🎯 NETGESCON - Setup iniziale repository completo
📋 Commit iniziale con:
-  Documentazione unificata in docs/
-  Codice Laravel in netgescon-laravel/
-  Script automazione in scripts/
-  Configurazione sync rsync
-  Struttura organizzata e pulita

🔄 Versione: 2025.07.19-1644
🎯 Sistema pronto per Git distribuito
2025-07-19 16:44:47 +02:00

798 lines
22 KiB
Markdown

# 5. SINCRONIZZAZIONE E CONFIGURAZIONE AMBIENTE
## 📋 **INDICE CAPITOLO**
- [5.1 Architettura di Sincronizzazione](#51-architettura-di-sincronizzazione)
- [5.2 Configurazione Ambiente Locale](#52-configurazione-ambiente-locale)
- [5.3 Configurazione Server Remoto](#53-configurazione-server-remoto)
- [5.4 Script di Sincronizzazione](#54-script-di-sincronizzazione)
- [5.5 Attivazione Nuova Macchina](#55-attivazione-nuova-macchina)
- [5.6 Gestione Codici Univoci](#56-gestione-codici-univoci)
- [5.7 Troubleshooting](#57-troubleshooting)
- [5.8 Monitoraggio e Automazione](#58-monitoraggio-e-automazione)
---
## 5.1 Architettura di Sincronizzazione
### Modello Centralizzato
```
┌─────────────────────────────────────────────────────────────────┐
│ AMBIENTE NETGESCON │
├─────────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────┐ │
│ │ LOCALE WSL │ │ SERVER REMOTO │ │ BACKUP │ │
│ │ │ │ │ │ │ │
│ │ Dev Environment │◄──►│ Production Env │◄──►│ Archive Data │ │
│ │ michele@SVR-GES │ │ michele@netges │ │ Daily Backup │ │
│ │ 192.168.0.xxx │ │ 192.168.0.43 │ │ Git Repo │ │
│ └─────────────────┘ └─────────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────────┘
```
### Flusso di Sincronizzazione
1. **Sviluppo Locale**: Modifiche codice e database
2. **Sync Automatico**: rsync ottimizzato per trasferimento veloce
3. **Applicazione Remota**: Migration e aggiornamenti automatici
4. **Backup**: Archiviazione versioni e dati
---
## 5.2 Configurazione Ambiente Locale
### Prerequisiti Sistema
```bash
# Verifica sistema operativo
uname -a
lsb_release -a
# Verifica versioni software
php -v
mysql --version
composer --version
node --version
npm --version
```
### Installazione Dipendenze
```bash
# Aggiorna sistema
sudo apt update && sudo apt upgrade -y
# Installa PHP e estensioni
sudo apt install -y php8.2 php8.2-cli php8.2-common php8.2-mysql \
php8.2-xml php8.2-curl php8.2-gd php8.2-mbstring php8.2-zip \
php8.2-bcmath php8.2-intl php8.2-readline php8.2-opcache
# Installa Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer
# Installa Node.js e npm
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
# Installa MySQL/MariaDB
sudo apt install -y mysql-server mysql-client
sudo mysql_secure_installation
```
### Configurazione Laravel
```bash
# Clona o inizializza progetto
cd ~/netgescon
git clone [repository] netgescon-laravel
cd netgescon-laravel
# Installa dipendenze
composer install --no-dev --optimize-autoloader
npm install && npm run build
# Configura ambiente
cp .env.example .env
php artisan key:generate
# Configura database
php artisan migrate
php artisan db:seed
```
### File di Configurazione `.env`
```env
APP_NAME=Netgescon
APP_ENV=local
APP_KEY=base64:xxxxx
APP_DEBUG=true
APP_URL=http://localhost:8000
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=netgescon
DB_USERNAME=netgescon_user
DB_PASSWORD=password_sicura
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your_email@gmail.com
MAIL_PASSWORD=your_app_password
MAIL_ENCRYPTION=tls
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
```
---
## 5.3 Configurazione Server Remoto
### Preparazione Server
```bash
# Connessione al server
ssh michele@192.168.0.43
# Verifica sistema
sudo apt update && sudo apt upgrade -y
# Installa software necessario
sudo apt install -y nginx mysql-server php8.2-fpm php8.2-mysql \
php8.2-xml php8.2-curl php8.2-gd php8.2-mbstring php8.2-zip \
php8.2-bcmath php8.2-intl supervisor redis-server
# Configura Nginx
sudo nano /etc/nginx/sites-available/netgescon
```
### Configurazione Nginx
```nginx
server {
listen 80;
server_name netgescon.local 192.168.0.43;
root /var/www/netgescon/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
client_max_body_size 100M;
fastcgi_read_timeout 300;
}
```
### Configurazione Database
```bash
# Configura MySQL
sudo mysql -u root -p
CREATE DATABASE netgescon CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'netgescon_user'@'localhost' IDENTIFIED BY 'password_sicura';
GRANT ALL PRIVILEGES ON netgescon.* TO 'netgescon_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
```
### Configurazione Permessi
```bash
# Crea directory progetto
sudo mkdir -p /var/www/netgescon
sudo chown -R michele:www-data /var/www/netgescon
sudo chmod -R 755 /var/www/netgescon
# Configura permessi Laravel
sudo chown -R michele:www-data /var/www/netgescon/storage
sudo chown -R michele:www-data /var/www/netgescon/bootstrap/cache
sudo chmod -R 775 /var/www/netgescon/storage
sudo chmod -R 775 /var/www/netgescon/bootstrap/cache
# Abilita sito Nginx
sudo ln -s /etc/nginx/sites-available/netgescon /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
```
---
## 5.4 Script di Sincronizzazione
### File di Esclusione `.rsyncignore`
```plaintext
.git/
node_modules/
vendor/
storage/logs/
storage/framework/cache/
storage/framework/sessions/
storage/framework/views/
bootstrap/cache/
.env
.env.local
.env.example
*.log
.phpunit.result.cache
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
.DS_Store
Thumbs.db
```
### Script di Sincronizzazione `sync-to-remote.sh`
```bash
#!/bin/bash
# Script di sincronizzazione veloce per Netgescon
# Uso: ./sync-to-remote.sh
echo "🔄 Sincronizzazione in corso..."
# Parametri configurabili
LOCAL_PATH="$HOME/netgescon/netgescon-laravel/"
REMOTE_USER="michele"
REMOTE_HOST="192.168.0.43"
REMOTE_PATH="/var/www/netgescon/"
# Controllo connessione
if ! ping -c 1 $REMOTE_HOST &> /dev/null; then
echo "❌ Impossibile raggiungere il server $REMOTE_HOST"
exit 1
fi
# Backup prima della sincronizzazione
echo "📦 Creazione backup remoto..."
ssh $REMOTE_USER@$REMOTE_HOST "cd $REMOTE_PATH && tar -czf backup-$(date +%Y%m%d_%H%M%S).tar.gz --exclude='backup-*.tar.gz' ."
# Comando rsync ottimizzato
echo "🔄 Trasferimento file..."
if [ -f .rsyncignore ]; then
rsync -rz --delete --checksum --exclude-from=.rsyncignore \
$LOCAL_PATH $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH
else
rsync -rz --delete --checksum --exclude='.git' --exclude='node_modules' --exclude='vendor' --exclude='storage/logs' --exclude='storage/framework' --exclude='bootstrap/cache' \
$LOCAL_PATH $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH
fi
if [ $? -eq 0 ]; then
echo "✅ Sincronizzazione completata con successo!"
echo "📊 Statistiche:"
echo " - Solo file modificati trasferiti"
echo " - Compressione attiva"
echo " - File non necessari esclusi"
else
echo "❌ Errore durante la sincronizzazione"
exit 1
fi
# Esecuzione comandi sul server remoto
echo "🔧 Esecuzione comandi sul server remoto..."
ssh $REMOTE_USER@$REMOTE_HOST "cd $REMOTE_PATH && \
composer install --no-dev --optimize-autoloader && \
php artisan migrate --force && \
php artisan config:cache && \
php artisan route:cache && \
php artisan view:cache && \
sudo systemctl restart nginx"
if [ $? -eq 0 ]; then
echo "🚀 Processo completato con successo!"
else
echo "⚠️ Sincronizzazione OK ma errore nei comandi remoti"
exit 1
fi
```
### Comandi Rapidi
```bash
# Sincronizzazione veloce
./sync-to-remote.sh
# Solo rsync senza comandi remoti
rsync -rz --delete --checksum --exclude-from=.rsyncignore $HOME/netgescon/netgescon-laravel/ michele@192.168.0.43:/var/www/netgescon/
# Sync con statistiche
rsync -rz --delete --checksum --stats --exclude-from=.rsyncignore $HOME/netgescon/netgescon-laravel/ michele@192.168.0.43:/var/www/netgescon/
```
---
## 5.5 Attivazione Nuova Macchina
### Checklist Preliminare
- [ ] Sistema operativo supportato (Ubuntu 20.04+ / Debian 11+)
- [ ] Connessione internet attiva
- [ ] Accesso sudo
- [ ] Chiavi SSH configurate
- [ ] Porte 22, 80, 443, 3306 disponibili
### Procedura Completa di Setup
#### Step 1: Configurazione Sistema Base
```bash
# Aggiorna sistema
sudo apt update && sudo apt upgrade -y
# Installa software essenziale
sudo apt install -y curl wget git vim htop unzip
# Configura timezone
sudo timedatectl set-timezone Europe/Rome
# Configura hostname
sudo hostnamectl set-hostname netgescon-server
# Configura hosts
echo "127.0.0.1 netgescon.local" | sudo tee -a /etc/hosts
```
#### Step 2: Installazione Stack LEMP
```bash
# Installa Nginx
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
# Installa MySQL
sudo apt install -y mysql-server
sudo mysql_secure_installation
# Installa PHP 8.2
sudo apt install -y php8.2 php8.2-fpm php8.2-mysql php8.2-xml php8.2-curl \
php8.2-gd php8.2-mbstring php8.2-zip php8.2-bcmath php8.2-intl \
php8.2-readline php8.2-opcache
# Installa Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer
# Installa Node.js
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
```
#### Step 3: Configurazione Database
```bash
# Connetti a MySQL
sudo mysql -u root -p
# Crea database e utente
CREATE DATABASE netgescon CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'netgescon_user'@'localhost' IDENTIFIED BY 'password_sicura_123!';
GRANT ALL PRIVILEGES ON netgescon.* TO 'netgescon_user'@'localhost';
# Configura per trigger e stored procedure
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;
EXIT;
```
#### Step 4: Configurazione Applicazione
```bash
# Crea directory progetto
sudo mkdir -p /var/www/netgescon
sudo chown -R michele:www-data /var/www/netgescon
sudo chmod -R 755 /var/www/netgescon
# Trasferimento iniziale (dal server locale)
rsync -rz --exclude='.git' --exclude='node_modules' --exclude='vendor' \
$HOME/netgescon/netgescon-laravel/ michele@192.168.0.43:/var/www/netgescon/
# Sul server remoto
cd /var/www/netgescon
# Installa dipendenze
composer install --no-dev --optimize-autoloader
npm install && npm run build
# Configura ambiente
cp .env.example .env
php artisan key:generate
# Configura database
php artisan migrate
php artisan db:seed
# Configura permessi
sudo chown -R michele:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cache
```
#### Step 5: Configurazione Nginx
```bash
# Crea configurazione sito
sudo nano /etc/nginx/sites-available/netgescon
# Contenuto configurazione (vedi sezione 5.3)
# Abilita sito
sudo ln -s /etc/nginx/sites-available/netgescon /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
```
#### Step 6: Configurazione Sicurezza
```bash
# Configura firewall
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
# Configura fail2ban
sudo apt install -y fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# Configura chiavi SSH
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# Copia chiave pubblica del server locale
```
#### Step 7: Test Finale
```bash
# Verifica servizi
sudo systemctl status nginx
sudo systemctl status mysql
sudo systemctl status php8.2-fpm
# Test applicazione
curl -I http://192.168.0.43
curl -I http://netgescon.local
# Test database
php artisan tinker
# User::count()
# exit
```
### Script di Installazione Automatica
```bash
#!/bin/bash
# auto-setup-netgescon.sh
echo "🚀 Avvio installazione automatica Netgescon..."
# Controllo root
if [[ $EUID -eq 0 ]]; then
echo "❌ Non eseguire questo script come root"
exit 1
fi
# Aggiornamento sistema
echo "📦 Aggiornamento sistema..."
sudo apt update && sudo apt upgrade -y
# Installazione software
echo "🔧 Installazione software..."
sudo apt install -y nginx mysql-server php8.2-fpm php8.2-mysql \
php8.2-xml php8.2-curl php8.2-gd php8.2-mbstring php8.2-zip \
php8.2-bcmath php8.2-intl curl wget git vim htop unzip
# Configurazione database
echo "🗃️ Configurazione database..."
sudo mysql -e "CREATE DATABASE netgescon CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -e "CREATE USER 'netgescon_user'@'localhost' IDENTIFIED BY 'password_sicura_123!';"
sudo mysql -e "GRANT ALL PRIVILEGES ON netgescon.* TO 'netgescon_user'@'localhost';"
sudo mysql -e "SET GLOBAL log_bin_trust_function_creators = 1;"
sudo mysql -e "FLUSH PRIVILEGES;"
# Configurazione directory
echo "📁 Configurazione directory..."
sudo mkdir -p /var/www/netgescon
sudo chown -R $USER:www-data /var/www/netgescon
sudo chmod -R 755 /var/www/netgescon
echo "✅ Installazione base completata!"
echo "🔄 Ora eseguire la sincronizzazione dal server locale"
```
---
## 5.6 Gestione Codici Univoci
### Trigger MySQL per Codici Univoci
```sql
-- Trigger per amministratori
CREATE TRIGGER generate_codice_univoco_amministratori
BEFORE INSERT ON amministratori
FOR EACH ROW
BEGIN
DECLARE codice_temp VARCHAR(8);
DECLARE codice_exists INT DEFAULT 1;
IF NEW.codice_univoco IS NULL OR NEW.codice_univoco = "" THEN
WHILE codice_exists > 0 DO
SET codice_temp = CONCAT(
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1),
SUBSTRING("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", FLOOR(1 + (RAND() * 36)), 1)
);
SELECT COUNT(*) INTO codice_exists
FROM amministratori
WHERE codice_univoco = codice_temp;
END WHILE;
SET NEW.codice_univoco = codice_temp;
END IF;
END;
```
### Observer Laravel Alternative
```php
<?php
namespace App\Observers;
use App\Models\Amministratore;
use Illuminate\Support\Facades\DB;
class AmministratoreObserver
{
public function creating(Amministratore $amministratore): void
{
if (empty($amministratore->codice_univoco)) {
$amministratore->codice_univoco = $this->generateCodiceUnivoco();
}
}
private function generateCodiceUnivoco(): string
{
$characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
do {
$codice = '';
for ($i = 0; $i < 8; $i++) {
$codice .= $characters[random_int(0, 35)];
}
$exists = DB::table('amministratori')
->where('codice_univoco', $codice)
->exists();
} while ($exists);
return $codice;
}
}
```
---
## 5.7 Troubleshooting
### Problemi Comuni di Sincronizzazione
#### Errore: "No such file or directory"
```bash
# Problema: Path con tilde non espansa
# Soluzione: Usare $HOME invece di ~
LOCAL_PATH="$HOME/netgescon/netgescon-laravel/"
# invece di
LOCAL_PATH="~/netgescon/netgescon-laravel/"
```
#### Errore: "Permission denied"
```bash
# Problema: Permessi SSH o directory
# Soluzione: Configura chiavi SSH
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
ssh-copy-id michele@192.168.0.43
# Verifica permessi directory
sudo chown -R michele:www-data /var/www/netgescon
sudo chmod -R 755 /var/www/netgescon
```
#### Errore: "MySQL connection refused"
```bash
# Problema: MySQL non avviato o configurato male
# Soluzione: Verifica servizio
sudo systemctl status mysql
sudo systemctl start mysql
# Verifica configurazione
sudo mysql -u root -p
SHOW DATABASES;
SHOW GRANTS FOR 'netgescon_user'@'localhost';
```
#### Errore: "Nginx 502 Bad Gateway"
```bash
# Problema: PHP-FPM non funzionante
# Soluzione: Riavvia servizi
sudo systemctl restart php8.2-fpm
sudo systemctl restart nginx
# Verifica configurazione
sudo nginx -t
sudo systemctl status php8.2-fpm
```
### Comandi di Diagnostica
```bash
# Verifica connessione rete
ping 192.168.0.43
ssh -v michele@192.168.0.43
# Verifica servizi
sudo systemctl status nginx
sudo systemctl status mysql
sudo systemctl status php8.2-fpm
# Verifica log
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/mysql/error.log
tail -f /var/www/netgescon/storage/logs/laravel.log
# Verifica permessi
ls -la /var/www/netgescon/
ls -la /var/www/netgescon/storage/
ls -la /var/www/netgescon/bootstrap/cache/
```
---
## 5.8 Monitoraggio e Automazione
### Script di Monitoraggio
```bash
#!/bin/bash
# monitor-netgescon.sh
LOG_FILE="/var/log/netgescon-monitor.log"
ALERT_EMAIL="admin@example.com"
check_service() {
service=$1
if ! systemctl is-active --quiet $service; then
echo "$(date): ❌ $service is not running" | tee -a $LOG_FILE
sudo systemctl start $service
return 1
else
echo "$(date): ✅ $service is running" | tee -a $LOG_FILE
return 0
fi
}
check_disk_space() {
usage=$(df /var/www | awk 'NR==2 {print $5}' | sed 's/%//')
if [ $usage -gt 80 ]; then
echo "$(date): ⚠️ Disk usage is ${usage}%" | tee -a $LOG_FILE
return 1
else
echo "$(date): ✅ Disk usage is ${usage}%" | tee -a $LOG_FILE
return 0
fi
}
check_application() {
response=$(curl -s -o /dev/null -w "%{http_code}" http://localhost)
if [ $response -eq 200 ]; then
echo "$(date): ✅ Application is responding" | tee -a $LOG_FILE
return 0
else
echo "$(date): ❌ Application returned $response" | tee -a $LOG_FILE
return 1
fi
}
# Esegui controlli
check_service nginx
check_service mysql
check_service php8.2-fpm
check_disk_space
check_application
```
### Automazione con Cron
```bash
# Aggiungi al crontab
crontab -e
# Monitoring ogni 5 minuti
*/5 * * * * /home/michele/scripts/monitor-netgescon.sh
# Backup database giornaliero
0 2 * * * mysqldump -u netgescon_user -p netgescon > /var/backups/netgescon_$(date +%Y%m%d).sql
# Sincronizzazione automatica (se necessario)
0 */6 * * * /home/michele/netgescon/netgescon-laravel/sync-to-remote.sh
```
### Script di Backup Automatico
```bash
#!/bin/bash
# backup-netgescon.sh
BACKUP_DIR="/var/backups/netgescon"
DB_NAME="netgescon"
DB_USER="netgescon_user"
DB_PASS="password_sicura_123!"
APP_DIR="/var/www/netgescon"
mkdir -p $BACKUP_DIR
# Backup database
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/db_$(date +%Y%m%d_%H%M%S).sql
# Backup files
tar -czf $BACKUP_DIR/files_$(date +%Y%m%d_%H%M%S).tar.gz -C $APP_DIR .
# Cleanup vecchi backup (mantieni 7 giorni)
find $BACKUP_DIR -name "*.sql" -mtime +7 -delete
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
echo "Backup completato: $(date)"
```
---
## 📚 **COMANDI RAPIDI**
### Sincronizzazione
```bash
# Sync completo
./sync-to-remote.sh
# Solo rsync
rsync -rz --delete --checksum --exclude-from=.rsyncignore $HOME/netgescon/netgescon-laravel/ michele@192.168.0.43:/var/www/netgescon/
# Sync con statistiche
rsync -rz --delete --checksum --stats --exclude-from=.rsyncignore $HOME/netgescon/netgescon-laravel/ michele@192.168.0.43:/var/www/netgescon/
```
### Manutenzione Remota
```bash
# Connessione server
ssh michele@192.168.0.43
# Riavvio servizi
sudo systemctl restart nginx php8.2-fpm mysql
# Verifica stato
sudo systemctl status nginx mysql php8.2-fpm
# Update applicazione
cd /var/www/netgescon
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan config:cache
```
### Diagnostica
```bash
# Verifica connessione
ping 192.168.0.43
ssh -v michele@192.168.0.43
# Log monitoring
sudo tail -f /var/log/nginx/error.log
tail -f /var/www/netgescon/storage/logs/laravel.log
# Test applicazione
curl -I http://192.168.0.43
```
---
**Data ultima modifica**: 18 Luglio 2025
**Versione**: 1.0
**Stato**: Aggiornato con script di sincronizzazione ottimizzati