netgescon-master/docs/03-scripts-automazione/setup-vm-post-transfer.sh

232 lines
6.0 KiB
Bash

#!/bin/bash
# 🔧 NETGESCON - CONFIGURAZIONE POST-TRASFERIMENTO VM
# Creato: 19/07/2025 - Setup completo su VM target
echo "🔧 === NETGESCON - CONFIGURAZIONE VM POST-TRASFERIMENTO ==="
echo "📅 $(date '+%Y-%m-%d %H:%M:%S')"
echo ""
# Da eseguire SULLA VM 192.168.0.200 dopo il trasferimento
# === 1. AGGIORNAMENTO SISTEMA ===
echo "🔄 1. Aggiornamento sistema Ubuntu..."
sudo apt update && sudo apt upgrade -y
# === 2. INSTALLAZIONE STACK LAMP ===
echo ""
echo "📦 2. Installazione stack LAMP..."
# Apache
sudo apt install -y apache2
sudo systemctl enable apache2
sudo systemctl start apache2
# MySQL
sudo apt install -y mysql-server
sudo systemctl enable mysql
sudo systemctl start mysql
# PHP 8.1
sudo apt install -y php8.1 php8.1-mysql php8.1-xml php8.1-mbstring php8.1-zip php8.1-gd php8.1-curl php8.1-dom php8.1-common php8.1-cli
# Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer
# Node.js
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
echo " ✅ Stack LAMP installato"
# === 3. CONFIGURAZIONE GIT ===
echo ""
echo "🔧 3. Configurazione Git..."
cd /home/michele/netgescon
# Configura Git globalmente
git config --global user.name "NetGescon VM Master"
git config --global user.email "master@netgescon.local"
git config --global init.defaultBranch master
# Inizializza repository se necessario
if [ ! -d ".git" ]; then
git init
echo " 📦 Repository Git inizializzato"
fi
# Commit tutto
git add .
git commit -m "🚀 NETGESCON - Primo commit su VM Master
📋 Migrazione completa da Windows WSL
🔄 Primo setup su VM Linux 192.168.0.200
📅 $(date '+%Y-%m-%d %H:%M:%S')
🎯 Repository master operativo"
echo " ✅ Git configurato e commit iniziale creato"
# === 4. CONFIGURAZIONE LARAVEL ===
echo ""
echo "🔧 4. Configurazione Laravel..."
cd /home/michele/netgescon/netgescon-laravel
# Installa dipendenze
if [ -f "composer.json" ]; then
composer install --no-dev --optimize-autoloader
echo " ✅ Dipendenze Composer installate"
fi
# Configura .env
if [ ! -f ".env" ] && [ -f ".env.example" ]; then
cp .env.example .env
php artisan key:generate
echo " ✅ File .env configurato"
fi
# Configura database in .env
sed -i 's/DB_DATABASE=.*/DB_DATABASE=netgescon/' .env
sed -i 's/DB_USERNAME=.*/DB_USERNAME=netgescon/' .env
sed -i 's/DB_PASSWORD=.*/DB_PASSWORD=netgescon2025/' .env
# Permessi
sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod -R 775 storage bootstrap/cache
echo " ✅ Laravel configurato"
# === 5. CONFIGURAZIONE DATABASE ===
echo ""
echo "🗄️ 5. Configurazione database MySQL..."
# Configura MySQL
sudo mysql << 'EOF'
CREATE DATABASE IF NOT EXISTS netgescon;
CREATE USER IF NOT EXISTS 'netgescon'@'localhost' IDENTIFIED BY 'netgescon2025';
GRANT ALL PRIVILEGES ON netgescon.* TO 'netgescon'@'localhost';
FLUSH PRIVILEGES;
EXIT;
EOF
echo " ✅ Database MySQL configurato"
# Esegui migrazioni
cd /home/michele/netgescon/netgescon-laravel
if [ -f "artisan" ]; then
php artisan migrate --force
echo " ✅ Migrazioni database eseguite"
fi
# === 6. CONFIGURAZIONE APACHE ===
echo ""
echo "🌐 6. Configurazione Apache VirtualHost..."
# Crea VirtualHost
sudo tee /etc/apache2/sites-available/netgescon.conf > /dev/null << 'EOF'
<VirtualHost *:80>
ServerName netgescon.local
ServerAlias 192.168.0.200
DocumentRoot /home/michele/netgescon/netgescon-laravel/public
<Directory /home/michele/netgescon/netgescon-laravel/public>
AllowOverride All
Require all granted
DirectoryIndex index.php
</Directory>
<Directory /home/michele/netgescon/netgescon-laravel>
AllowOverride None
Require all denied
</Directory>
ErrorLog ${APACHE_LOG_DIR}/netgescon_error.log
CustomLog ${APACHE_LOG_DIR}/netgescon_access.log combined
</VirtualHost>
EOF
# Abilita moduli e sito
sudo a2enmod rewrite
sudo a2ensite netgescon
sudo a2dissite 000-default
sudo systemctl reload apache2
echo " ✅ Apache VirtualHost configurato"
# === 7. INSTALLAZIONE DOCKER PER GITEA ===
echo ""
echo "🐳 7. Installazione Docker per Gitea..."
# Installa Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo systemctl enable docker
sudo systemctl start docker
# Aggiunge utente al gruppo docker
sudo usermod -aG docker michele
echo " ✅ Docker installato"
# === 8. SETUP GITEA ===
echo ""
echo "🏢 8. Setup Gitea (Git Server)..."
# Crea directory
sudo mkdir -p /var/lib/gitea
# Avvia Gitea con Docker
sudo docker run -d \
--name=gitea \
--restart=unless-stopped \
-p 3000:3000 \
-p 2222:22 \
-v /var/lib/gitea:/data \
-e USER_UID=1000 \
-e USER_GID=1000 \
gitea/gitea:1.21.0
echo " ✅ Gitea avviato"
# === 9. CONFIGURAZIONE FIREWALL ===
echo ""
echo "🔥 9. Configurazione firewall UFW..."
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 3000/tcp
sudo ufw allow 2222/tcp
sudo ufw --force enable
echo " ✅ Firewall configurato"
# === 10. TEST FINALE ===
echo ""
echo "🧪 10. Test configurazione finale..."
echo "📊 === STATUS SERVIZI ==="
echo "Apache: $(sudo systemctl is-active apache2)"
echo "MySQL: $(sudo systemctl is-active mysql)"
echo "Docker: $(sudo systemctl is-active docker)"
echo "Gitea: $(sudo docker ps --filter name=gitea --format "table {{.Status}}" | tail -1)"
echo ""
echo "📋 === INFORMAZIONI ACCESSO ==="
echo "🌐 NetGescon: http://192.168.0.200"
echo "🏢 Gitea: http://192.168.0.200:3000"
echo "📂 Progetto: /home/michele/netgescon"
echo ""
echo "📋 === PROSSIMI PASSI ==="
echo "1. 🌐 Aprire http://192.168.0.200:3000 per configurare Gitea"
echo "2. 🏢 Creare organizzazione 'netgescon' in Gitea"
echo "3. 📦 Creare repository 'netgescon-main' in Gitea"
echo "4. 🔄 Configurare remote Git e push del codice"
echo "5. 🧪 Testare NetGescon su http://192.168.0.200"
echo ""
echo "🎯 Configurazione VM completata!"
echo "📅 $(date '+%Y-%m-%d %H:%M:%S')"