#!/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' ServerName netgescon.local ServerAlias 192.168.0.200 DocumentRoot /home/michele/netgescon/netgescon-laravel/public AllowOverride All Require all granted DirectoryIndex index.php AllowOverride None Require all denied ErrorLog ${APACHE_LOG_DIR}/netgescon_error.log CustomLog ${APACHE_LOG_DIR}/netgescon_access.log combined 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')"