# Installazione Ubuntu 24.04 automatica Questa famiglia di script separa tre problemi diversi: 1. `scripts/install/ubuntu2404-laravel-base.sh` Prepara una macchina Ubuntu 24.04 nuova per progetti Laravel in generale. Installa stack di base: PHP, Composer, Node.js, MySQL, Nginx, Redis, Supervisor. Se non disattivato, installa anche XFCE, XRDP e Visual Studio Code. 2. `scripts/install/laravel-site-bootstrap.sh` Pubblica un singolo progetto Laravel su una macchina gia pronta. Usa chiavi univoche per sito, file Nginx, cron e Supervisor. Di default si rifiuta di sovrascrivere directory, vhost e database gia esistenti. 3. `scripts/install/netgescon-node-bootstrap.sh` Prende una macchina gia pronta con lo stack Laravel e installa un nodo NetGescon pronto per il login iniziale e per la pagina `admin-filament/supporto/aggiornamento-nodo`. ## Installazione via curl Se il nodo che espone l'applicazione e raggiungibile, puoi usare direttamente gli endpoint pubblici in `public/installers`. Indice rapido browser: - `http://192.168.0.200:8000/installers/` - `https://staging.netgescon.it/installers/` Script base macchina: ```bash curl -fsSL http://192.168.0.200:8000/installers/ubuntu2404-laravel-base.php -o /tmp/ubuntu2404-laravel-base.sh sudo bash /tmp/ubuntu2404-laravel-base.sh curl -fsSL https://staging.netgescon.it/installers/ubuntu2404-laravel-base.php -o /tmp/ubuntu2404-laravel-base.sh sudo bash /tmp/ubuntu2404-laravel-base.sh ``` Versione server-only senza XFCE, VS Code e XRDP: ```bash curl -fsSL http://192.168.0.200:8000/installers/ubuntu2404-laravel-base.php -o /tmp/ubuntu2404-laravel-base.sh sudo bash /tmp/ubuntu2404-laravel-base.sh --without-xfce --without-vscode --without-xrdp ``` Bootstrap sito Laravel generico: ```bash curl -fsSL http://192.168.0.200:8000/installers/laravel-site-bootstrap.php -o /tmp/laravel-site-bootstrap.sh sudo bash /tmp/laravel-site-bootstrap.sh \ --site-key demo-app \ --project-name "Demo App" \ --repo-url git@your-gitea:studio/demo-app.git \ --branch main \ --app-url http://demo.example.local \ --server-name demo.example.local \ --db-password 'StrongDbPass123!' ``` Bootstrap nodo NetGescon: ```bash curl -fsSL http://192.168.0.200:8000/installers/netgescon-node-bootstrap.php -o /tmp/netgescon-node-bootstrap.sh sudo bash /tmp/netgescon-node-bootstrap.sh \ --site-key netgescon-prod \ --repo-url git@your-gitea:studio/netgescon.git \ --branch main \ --app-url http://192.168.0.200 \ --server-name 192.168.0.200 \ --db-password 'StrongDbPass123!' \ --admin-email admin@netgescon.local \ --admin-password 'StrongAdminPass123!' ``` La stessa chiamata su staging puo diventare: ```bash curl -fsSL https://staging.netgescon.it/installers/netgescon-node-bootstrap.php -o /tmp/netgescon-node-bootstrap.sh sudo bash /tmp/netgescon-node-bootstrap.sh \ --site-key netgescon-staging \ --repo-url git@your-gitea:studio/netgescon.git \ --branch main \ --app-url https://staging.netgescon.it \ --server-name staging.netgescon.it \ --db-password 'StrongDbPass123!' \ --admin-email admin@netgescon.local \ --admin-password 'StrongAdminPass123!' ``` ## 1. Base machine Laravel Esecuzione consigliata: ```bash sudo bash scripts/install/ubuntu2404-laravel-base.sh ``` Varianti utili: ```bash sudo bash scripts/install/ubuntu2404-laravel-base.sh --without-xfce --without-vscode sudo bash scripts/install/ubuntu2404-laravel-base.sh --projects-dir /srv/laravel-projects ``` Cosa fa: - aggiorna Ubuntu 24.04 - mostra una schermata iniziale con stato corrente macchina e componenti gia presenti - chiede prima di partire quali blocchi installare o saltare - installa PHP 8.3 e moduli Laravel comuni - installa Composer e Node.js - installa MySQL, Nginx, Redis e Supervisor - apre firewall per SSH, HTTP, HTTPS e XRDP se richiesto - crea una base di lavoro per progetti Laravel in `/srv/laravel-projects` - opzionalmente installa XFCE, XRDP e VS Code Se vuoi saltare la schermata interattiva e usare lo script in automazione, puoi aggiungere `--non-interactive` al comando. ## 2. Bootstrap sito Laravel generico Esempio completo: ```bash sudo bash scripts/install/laravel-site-bootstrap.sh \ --site-key frontoffice-demo \ --project-name "Frontoffice Demo" \ --repo-url git@your-gitea:studio/frontoffice-demo.git \ --branch main \ --app-url https://frontoffice-demo.example.it \ --server-name frontoffice-demo.example.it \ --db-password 'StrongDbPass123!' ``` Cosa fa: - clona il repository applicativo in una directory dedicata, di default `/var/www/` - crea un database e un utente MySQL dedicati al sito - prepara `.env`, chiave applicativa e cache Laravel - installa dipendenze Composer e, se presenti, builda gli asset frontend - crea un file Nginx dedicato e separato dagli altri siti pubblicati - configura cron scheduler e, se richiesto, un worker Supervisor dedicato - rifiuta per default di sovrascrivere directory applicative, database o vhost gia esistenti Flag utili per riuso controllato: - `--allow-existing-app-dir` permette di riusare una worktree git Laravel gia esistente - `--allow-existing-database` permette di riusare database e utente MySQL gia presenti - `--replace-nginx-site` permette di sostituire esplicitamente un vhost gia presente - `--with-queue-worker` abilita un worker Supervisor dedicato al sito Questo e il pezzo da usare per avere 2 o 3 siti diversi sulla stessa macchina, per esempio frontoffice, demo e produzione, senza collisioni sui file di servizio. ## 3. Bootstrap nodo NetGescon Esempio completo: ```bash sudo bash scripts/install/netgescon-node-bootstrap.sh \ --site-key netgescon-prod \ --repo-url git@your-gitea:studio/netgescon.git \ --branch main \ --app-url https://netgescon.example.it \ --server-name netgescon.example.it \ --db-password 'StrongDbPass123!' \ --admin-email admin@netgescon.example.it \ --admin-password 'StrongAdminPass123!' ``` Cosa fa: - clona il repository applicativo in `/var/www/netgescon` - clona una seconda copia Git sorgente in `/var/www/netgescon-git-source` - collega il repository sorgente a `storage/app/support/git-source` - configura `.env` con `NETGESCON_GIT_SYNC_SOURCE_REPO` - crea database e utente MySQL - installa dipendenze Composer e, se presenti, builda gli asset frontend - esegue migrazioni - crea un utente iniziale con ruoli `super-admin` e `admin` - configura Nginx, cron scheduler e Supervisor queue worker - lascia il nodo pronto per aprire `admin-filament/supporto/aggiornamento-nodo` Guard-rail aggiunti: - usa `--site-key` per rendere univoci file Nginx, cron e Supervisor - non sovrascrive piu automaticamente directory, database o vhost gia esistenti - per riusare una installazione esistente servono flag espliciti come `--allow-existing-app-dir`, `--allow-existing-database` e `--replace-nginx-site` ## Note operative - Gli script sono pensati per Ubuntu 24.04. - Lo script NetGescon presuppone che la macchina abbia gia PHP, Composer, Node, MySQL e Nginx installati. - Lo script Laravel generico e quello da riusare per altri progetti non NetGescon sulla stessa macchina. - Se il repository Gitea usa SSH, la macchina deve avere gia la chiave deploy o la chiave utente autorizzata. - Se vuoi una macchina solo server senza desktop, usa la base machine con `--without-xfce --without-vscode --without-xrdp`. - Dopo il bootstrap del nodo conviene configurare subito HTTPS e backup automatici. - Gli endpoint curl leggono direttamente gli script versionati nel repository, quindi dopo pull/deploy espongono sempre la versione aggiornata senza copiare file a mano.