← Torna alla Home

πŸ—οΈ Infrastruttura Web4Student

Guida tecnica completa al setup dell'ambiente di sviluppo educativo

🎯 Panoramica dell'Infrastruttura

Web4Student Γ¨ un ambiente di sviluppo educativo completo ospitato su infrastruttura cloud. Questa guida documenta tutti i componenti tecnici necessari per replicare o comprendere l'architettura del sistema.

🌐 Dominio

filippobilardo.it
Provider: Aruba

☁️ Cloud VM

Oracle Cloud Infrastructure
Free Tier: 4 CPU, 24GB RAM, 200GB

🐳 Container

Docker + Docker Compose
Isolamento e portabilitΓ 

πŸ”’ Reverse Proxy

Nginx Proxy Manager
HTTPS + Let's Encrypt

🌐 1. Dominio di Secondo Livello

Il primo passo per rendere accessibile il servizio Γ¨ l'acquisizione di un dominio personalizzato.

Provider Utilizzato: Aruba

Dominio: filippobilardo.it
Provider: Aruba (aruba.it)
Costo annuale: ~€12-15
Caratteristiche: DNS management incluso, supporto italiano

Alternative Popolari

Provider Prezzo (€/anno) DNS Management Supporto Pro
Aruba 12-15 βœ… Incluso Italiano Supporto locale eccellente
Namecheap 8-12 βœ… Incluso Inglese Prezzi competitivi
GoDaddy 15-20 βœ… Incluso Multilingua Grande varietΓ  servizi
OVH 10-15 βœ… Incluso Francese/Inglese Server inclusi
Register.it 12-18 βœ… Incluso Italiano Focus italiano

Configurazione DNS

Dopo l'acquisizione del dominio, configura i record DNS per puntare al tuo server:

# Record A per il dominio principale filippobilardo.it β†’ [IP_DEL_TUO_SERVER] # Record CNAME per sottodomini (opzionale) *.filippobilardo.it β†’ filippobilardo.it

☁️ 2. Macchina Virtuale Remota

La scelta del provider cloud Γ¨ cruciale per performance, costi e affidabilitΓ .

Provider Utilizzato: Oracle Cloud Infrastructure (OCI)

Provider: Oracle Cloud Infrastructure
Piano: Always Free Tier
Specifiche: 4 CPU, 24GB RAM, 200GB NVMe SSD
Costo: €0/mese (per sempre)
Regione: Frankfurt (Europa)
πŸ’‘ Vantaggi del Free Tier OCI:
- Completamente gratuito senza scadenza
- Performance eccellenti per carichi di lavoro leggeri
- 200GB di storage NVMe veloce
- Ampia gamma di servizi aggiuntivi gratuiti

Alternative Cloud Principali

Provider Free Tier CPU/RAM/Storage Costo Mensile Pro
Oracle OCI βœ… Sempre gratuito 4/24GB/200GB €0 Free tier senza limiti
AWS Lightsail βœ… 3 mesi 1/512MB/20GB €3.50 Semplice da usare
Google Cloud βœ… $300 credito Variabile €0-5 IA/ML integrato
Azure βœ… 12 mesi 1/750MB/10GB €0-4 Integrazione Microsoft
DigitalOcean ❌ 1/1GB/25GB €6 Developer-friendly
Vultr ❌ 1/1GB/25GB €2.50 Prezzi bassi
Hetzner ❌ 2/4GB/40GB €3.50 Hardware eccellente

Setup OCI Free Tier

  1. Registrazione: Crea account su oracle.com/cloud/free/
    Richiede carta di credito per verifica (non viene addebitato)
  2. Verifica identitΓ : Completa il processo KYC
  3. Crea VM: Ubuntu 22.04, Free Tier shape (VM.Standard.A1.Flex)
  4. Configura sicurezza: Aggiungi regole firewall per SSH (22), HTTP (80), HTTPS (443)
  5. Genera chiavi SSH: Per accesso sicuro senza password

🐳 3. Installazione Docker

Docker Γ¨ essenziale per creare, gestire e distribuire container applicativi.

PerchΓ© Docker?

Installazione su Ubuntu 22.04

# Aggiorna il sistema sudo apt update && sudo apt upgrade -y # Installa dipendenze sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release # Aggiungi chiave GPG ufficiale Docker curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # Aggiungi repository Docker echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Installa Docker Engine sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin # Avvia e abilita Docker sudo systemctl start docker sudo systemctl enable docker # Aggiungi utente al gruppo docker (opzionale, ma raccomandato) sudo usermod -aG docker $USER
⚠️ Importante: Dopo aver aggiunto l'utente al gruppo docker, effettua il logout e login per applicare i cambiamenti, oppure usa newgrp docker

Verifica Installazione

# Verifica versione Docker docker --version docker compose version # Test con container hello-world docker run hello-world

πŸ”’ 4. Nginx Proxy Manager per HTTPS

Nginx Proxy Manager fornisce un'interfaccia web per gestire reverse proxy con supporto SSL automatico.

PerchΓ© Nginx Proxy Manager?

Deploy con Docker Compose

Crea il file docker-compose.yml per Nginx Proxy Manager:

version: '3.8' services: nginx-proxy-manager: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped ports: - '80:80' # HTTP - '81:81' # Admin Web Interface - '443:443' # HTTPS volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt environment: DB_SQLITE_FILE: "/data/database.sqlite" networks: - nginx-proxy-manager networks: nginx-proxy-manager: name: nginx-proxy-manager

Configurazione Iniziale

  1. Avvia il container: docker compose up -d
  2. Accedi all'interfaccia: http://tuo-server:81
  3. Credenziali iniziali: admin@example.com / changeme
  4. Cambia password: Subito dopo il primo login
  5. Aggiungi proxy host: Configura il dominio per Web4Student

Configurazione SSL con Let's Encrypt

Parametri per Web4Student:
- Dominio: w4s.filippobilardo.it
- Forward Hostname/IP: web4student (nome container)
- Forward Port: 80
- SSL: Abilita Let's Encrypt
- Email: Il tuo indirizzo email per notifiche

πŸšͺ 5. Apertura Porte sulla VM

Per utilizzare porte non web (SSH, database, etc.) Γ¨ necessario configurare il firewall della VM.

Porte Necessarie per Web4Student

Servizio Porta Protocollo Scopo Accesso
SSH 22 TCP Accesso amministrativo Admin only
HTTP 80 TCP Web server (redirect to HTTPS) Pubblico
HTTPS 443 TCP Web server sicuro Pubblico
MySQL 3307 TCP Database esterno Limitato
SSH Container 2222 TCP Accesso studenti Studenti
Nginx Admin 81 TCP Interfaccia gestione proxy Admin only

Configurazione Firewall OCI

  1. Accedi alla Console OCI: oracle.com/cloud/
  2. Seleziona VCN: Virtual Cloud Network della tua VM
  3. Security Lists: Modifica le security list
  4. Add Ingress Rules: Aggiungi regole per ogni porta necessaria

Regole Firewall Consigliate

# SSH (Porta 22) - Solo dal tuo IP per sicurezza Source Type: CIDR Source CIDR: [IL_TUO_IP]/32 IP Protocol: TCP Destination Port Range: 22 # HTTP (Porta 80) - Pubblico Source Type: CIDR Source CIDR: 0.0.0.0/0 IP Protocol: TCP Destination Port Range: 80 # HTTPS (Porta 443) - Pubblico Source Type: CIDR Source CIDR: 0.0.0.0/0 IP Protocol: TCP Destination Port Range: 443 # MySQL (Porta 3307) - Limitato agli IP degli studenti Source Type: CIDR Source CIDR: [IP_STUDENTI]/32 IP Protocol: TCP Destination Port Range: 3307 # SSH Container (Porta 2222) - Pubblico per studenti Source Type: CIDR Source CIDR: 0.0.0.0/0 IP Protocol: TCP Destination Port Range: 2222 # Nginx Admin (Porta 81) - Solo dal tuo IP Source Type: CIDR Source CIDR: [IL_TUO_IP]/32 IP Protocol: TCP Destination Port Range: 81
πŸ”’ Sicurezza Importante:
- Limita l'accesso SSH (porta 22) solo al tuo IP
- Considera l'uso di chiavi SSH invece delle password
- Monitora regolarmente i log di accesso
- Aggiorna regolarmente il sistema operativo

πŸš€ Deployment Finale

Una volta configurata l'infrastruttura, puoi procedere con il deployment di Web4Student.

Struttura Finale

/opt/web4student/ β”œβ”€β”€ docker-compose.yml # Configurazione principale β”œβ”€β”€ nginx-proxy-manager/ # Reverse proxy con SSL β”‚ └── docker-compose.yml └── web4student/ # Container educativo β”œβ”€β”€ docker-compose.yml β”œβ”€β”€ Dockerfile └── volumes/ β”œβ”€β”€ config/ β”œβ”€β”€ home/ β”œβ”€β”€ logs/ └── mysql/

Comandi di Avvio

# 1. Avvia Nginx Proxy Manager cd /opt/web4student/nginx-proxy-manager docker compose up -d # 2. Configura il proxy host nell'interfaccia web (:81) # 3. Avvia Web4Student cd /opt/web4student/web4student docker compose up -d # 4. Verifica lo stato dei container docker ps

Monitoraggio e Manutenzione

πŸ’‘ Suggerimenti e Best Practices

πŸ”§ Manutenzione Regolare

  • Aggiorna regolarmente Docker e i container
  • Monitora l'utilizzo delle risorse
  • Fai backup dei dati importanti
  • Controlla i log per eventuali errori

πŸ”’ Sicurezza

  • Usa chiavi SSH invece delle password
  • Limita l'accesso alle porte sensibili
  • Aggiorna regolarmente il sistema
  • Monitora i tentativi di accesso

πŸ“Š Monitoraggio

  • Configura alert per l'utilizzo risorse
  • Monitora le performance dei container
  • Tieni traccia degli accessi degli studenti
  • Analizza i log per ottimizzazioni
/ws/container/web4student/volumes/config/infrastruttura.html