β Torna alla Home
π― 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
- Registrazione: Crea account su oracle.com/cloud/free/
Richiede carta di credito per verifica (non viene addebitato)
- Verifica identitΓ : Completa il processo KYC
- Crea VM: Ubuntu 22.04, Free Tier shape (VM.Standard.A1.Flex)
- Configura sicurezza: Aggiungi regole firewall per SSH (22), HTTP (80), HTTPS (443)
- Genera chiavi SSH: Per accesso sicuro senza password
π³ 3. Installazione Docker
Docker Γ¨ essenziale per creare, gestire e distribuire container applicativi.
PerchΓ© Docker?
- Isolamento: Ogni container ha il suo ambiente separato
- PortabilitΓ : Stessa configurazione su qualsiasi host
- Efficienza: Condivisione kernel del sistema operativo
- Versionamento: Immagini riproducibili e versionate
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?
- Interfaccia Web: Gestione semplificata senza configurazione manuale
- SSL Automatico: Certificati Let's Encrypt integrati
- Load Balancing: Distribuzione del traffico
- Access Control: Autenticazione e autorizzazioni
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
- Avvia il container:
docker compose up -d
- Accedi all'interfaccia: http://tuo-server:81
- Credenziali iniziali: admin@example.com / changeme
- Cambia password: Subito dopo il primo login
- 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
- Accedi alla Console OCI: oracle.com/cloud/
- Seleziona VCN: Virtual Cloud Network della tua VM
- Security Lists: Modifica le security list
- 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
- Log dei container:
docker logs [nome_container]
- Stato risorse:
docker stats
- Aggiornamenti:
docker compose pull && docker compose up -d
- Backup: Backup regolare delle directory volumes/
π‘ 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