Hosting VPS Blazor

Hosting Blazor Server su UpCloud con Nginx e HTTPS

Ultimo Aggiornamento 11/04/2026

Segui questa guida quando una piccola app Blazor Server necessita di un VPS Ubuntu dedicato invece di una piattaforma gestita. Copre il lavoro reale: DNS, SSH, .NET, Nginx, TLS, riavvii dei servizi, backup e i costi continui di gestione del server.

Il punto di partenza è un server UpCloud semplice a circa 3 €/mese. Può bastare per un lancio di produzione modesto, ma solo se mantieni semplici e ripetibili le abitudini di patching, monitoraggio, rotazione dei log e rollback.

Nota promozionale UpCloud: tu e noi riceviamo ciascuno 25 € di credito. Il prezzo mensile del server non aumenta usando il link di referral.

Risposta rapida

Usa un VPS quando il controllo è più importante della comodità della piattaforma

Un piccolo VPS UpCloud è ideale se vuoi costi stabili, accesso completo a Linux, regole Nginx personalizzate, log diretti e un flusso di deploy ispezionabile. Non è adatto se non vuoi occuparti di patchare Ubuntu, controllare lo spazio disco, testare backup o debug di systemd in momenti scomodi.

Dominio e DNS Accesso con chiave SSH Nginx con TLS Operazioni a carico tuo

Verifica di compatibilità

Un VPS Blazor economico è utile solo se il lavoro operativo è accettabile

Il prezzo del server non è l’unica decisione. Considera il tempo per aggiornamenti, regole firewall, certificati, ripristini, log, monitoraggio e deploy falliti prima di scegliere l’hosting autonomo per un’app di produzione.

Adatto

Scegli questo percorso se vuoi controllo

  • Vuoi il pieno controllo su Nginx, systemd, SSH, log, file e versioni runtime.
  • L’app è abbastanza leggera da partire su un VPS piccolo e scalare poi da snapshot o ricostruzione.
  • Sai gestire aggiornamenti Ubuntu, regole firewall, certificati, backup, ripristini e monitoraggio.
  • Hai bisogno di costi infrastrutturali mensili prevedibili più che della comodità di una piattaforma gestita.
Scelta poco adatta

Scegli hosting gestito se le operazioni sono un rischio

  • Nessuno si occupa di patch, backup, controlli uptime, pressione disco o risposta agli incidenti.
  • L’app necessita di scalabilità gestita, database gestiti, slot di deploy e supporto piattaforma fin dal primo giorno.
  • I colleghi non tecnici devono poter distribuire e recuperare l’app senza toccare Linux.
  • Un breve downtime costerebbe più di una fattura di hosting gestito.

Prima della configurazione

Prepara prima dominio, DNS, SSH, .NET, Nginx e TLS

La maggior parte dei lanci VPS falliti non dipende da Blazor. Succede perché DNS non è pronto, accesso SSH non chiaro, porte bloccate, percorso app improvvisato o certificati configurati prima che il dominio punti al server.

Prerequisito DNS

Punta il DNS prima del TLS

Crea il record A o AAAA per il nome host finale prima di eseguire Certbot. La validazione del certificato richiede che il nome pubblico risolva correttamente.

Accesso SSH

Usa chiavi SSH e un utente deploy

Inizia con accesso basato su chiavi, evita upload root di routine e decidi quale utente possiede la directory dell’app prima del primo rilascio.

Runtime .NET

Scegli dove pubblicare

Installa il runtime ASP.NET Core sul VPS. Aggiungi il SDK completo .NET solo se costruisci o pubblichi intenzionalmente sul server.

Piano server

Inizia con il server da circa 3 €/mese solo se l’app è modesta

Il piano più piccolo è una base di partenza, non una garanzia. Funziona meglio con traffico basso o moderato, asset statici dietro Nginx, database leggero altrove e un team che può scalare prima che memoria o CPU diventino un problema visibile agli utenti.

Riferimento piano circa 3 €
Usalo per
Piccole app di produzione, app di staging, dashboard interne, prototipi con utenti reali e siti a basso traffico.
Evitalo per
App che consumano molta memoria, processi in background rumorosi, grandi database locali, picchi di traffico elevati o team senza tempo per la manutenzione del server.
Segnale di upgrade
Scala quando l’uso dello swap, la saturazione della CPU, i ritardi nelle code o la frequenza dei riavvii diventano evidenti nei log e nei tempi utente.
01

Crea il server

Scegli la regione utile più vicina, un’immagine Ubuntu pulita, chiavi SSH e il piano più piccolo che corrisponde al rischio di lancio.

02

Blocca la rete

Consenti SSH, HTTP e HTTPS. Mantieni privati database, dashboard e porte dell’app a meno che non ci sia un motivo specifico.

03

Fai uno snapshot di base

Crea uno snapshot del server dopo il rafforzamento e prima del primo deploy in produzione per rendere le ricostruzioni più rapide e meno stressanti.

04

Documenta la ricostruzione

Tieni DNS, pacchetti, firewall, percorso app, nome del servizio e passaggi del certificato in un runbook breve.

Configurazione server

Aggiorna Ubuntu, limita la superficie pubblica e installa .NET con cura

Parti da un’immagine pulita di Ubuntu. Applica aggiornamenti, mantieni timestamp prevedibili, installa solo i pacchetti necessari e apri solo SSH, HTTP e HTTPS. L’SDK è opzionale sul server se pubblichi da workstation o CI.

Pacchetti base

Shell
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget unzip apt-transport-https ca-certificates gnupg
sudo timedatectl set-timezone UTC

Firewall e fail2ban

Shell
sudo apt install -y ufw fail2ban
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
sudo systemctl enable --now fail2ban

Pacchetti .NET

Shell
wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt update
sudo apt install -y aspnetcore-runtime-8.0

Flusso di deploy

Pubblica localmente, carica in modo prevedibile e lascia che systemd gestisca il processo app

Per un server piccolo, il deploy manuale più sicuro è semplice: crea un output Release, caricalo in una directory nota, esegui l’app come utente dedicato e lascia a systemd il riavvio e la gestione dei log.

Pubblica e carica

Shell
# Build locally
dotnet publish -c Release -o publish

# Copy to UpCloud (replace user@host)
rsync -avz --delete publish/ user@YOUR_UPCLOUD_IP:/var/www/blazor-app/releases/current/

# On the server, set ownership
sudo useradd -m -s /bin/bash blazorapp || true
sudo chown -R blazorapp:blazorapp /var/www/blazor-app

Servizio systemd

systemd
[Unit]
Description=Blazor Server on UpCloud
After=network.target

[Service]
User=blazorapp
WorkingDirectory=/var/www/blazor-app/releases/current
ExecStart=/usr/bin/dotnet /var/www/blazor-app/releases/current/YourApp.dll --urls http://127.0.0.1:5001
Restart=always
RestartSec=5
Environment=ASPNETCORE_URLS=http://127.0.0.1:5001

[Install]
WantedBy=multi-user.target

Nginx e TLS

Metti Kestrel dietro Nginx e rendi HTTPS l’unica via pubblica

Kestrel dovrebbe ascoltare solo su localhost. Nginx riceve il traffico pubblico, reindirizza HTTP a HTTPS, termina TLS, inoltra host e protocollo originali e mantiene stabile l’URL per utenti e motori di ricerca.

Proxy inverso Nginx

nginx
server {
    listen 80;
    listen [::]:80;
    server_name app.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name app.example.com;

    ssl_certificate     /etc/letsencrypt/live/app.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/app.example.com/privkey.pem;

    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;

    location / {
        proxy_pass         http://127.0.0.1:5001;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection "keep-alive";
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
    }
}

Comandi Certbot

Shell
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d app.example.com --redirect --agree-tos -m [email protected]
sudo certbot renew --dry-run

Operazioni

Mantieni costi onesti pianificando la manutenzione prima dell’arrivo del traffico

La fattura mensile del VPS è prevedibile. I costi operativi non lo sono, a meno che non diventino routine: finestre di manutenzione per applicare patch, controlli di rinnovo dei certificati, rotazione dei log, avvisi sul disco, snapshot, test di ripristino e un breve processo di rollback per rilasci falliti.

Aggiornamenti Ubuntu

Applica patch secondo programma

Esegui aggiornamenti dei pacchetti in una finestra pianificata, poi verifica il servizio Blazor, lo stato di Nginx e il percorso di rinnovo del certificato.

Ripristino backup

Testa il ripristino, non solo la creazione dello snapshot

Gli snapshot sono utili solo quando ne hai già ripristinato uno. Inserisci file dell’app, segreti e backup del database nel piano di recupero.

Log del server

Attenzione ai guasti silenziosi

Usa journalctl, log di Nginx, avvisi disco e controlli uptime per evitare che deploy falliti o traffico bot rimangano invisibili.

Scalabilità VPS

Scala prima che gli utenti se ne accorgano

Passa a un piano più grande, dividi i servizi, aggiungi un CDN o clona da uno snapshot prima che la pressione sulla memoria provochi downtime.

La realtà della SEO

L’hosting supporta la SEO solo se le basi restano stabili

Un VPS non genera posizionamenti da solo. Aiuta quando offre URL stabili, risposte rapide, redirect HTTPS corretti, metadata puliti, JSON-LD coerenti e meno interruzioni rispetto alla soluzione economica usata in precedenza.

01

Reindirizzamenti HTTPS

Reindirizza HTTP una sola volta, mantieni il rinnovo dei certificati ed evita asset a contenuto misto che fanno sembrare le pagine rotte.

02

URL stabili

Usa percorsi leggibili, mantieni coerenti gli URL canonici ed evita percorsi di deploy che cambiano a ogni rilascio.

03

Prestazioni VPS

Misura il TTFB, memorizza nella cache asset statici tramite Nginx, comprimi le risposte e mantieni il caricamento della prima pagina velocemente noioso.

04

Metadati SEO

Allinea titolo, H1, descrizione, immagine Open Graph, schema Article, BreadcrumbList e schema FAQPage con il contenuto visibile.

Opzione di automazione

Usa GhostlyHosting quando ripetere la configurazione manuale è la parte rischiosa

La configurazione manuale è utile per comprendere ogni componente. Se conosci già lo stack e vuoi un percorso di deploy guidato e ripetibile, GhostlyHosting può automatizzare il flusso di lavoro Ubuntu, Nginx, SSL, GitHub e gestione servizi.

Sezione FAQ

FAQ hosting Blazor su UpCloud

Risposte brevi su hosting Blazor Server su UpCloud, costi VPS, .NET, Nginx, HTTPS, SEO e manutenzione per un lancio da circa 3 €/mese.

Posso ospitare Blazor Server su UpCloud a circa 3 €/mese?

Sì, per un’app modesta con aspettative realistiche. Il piano base può gestire un piccolo lancio, ambiente di staging o strumento interno, ma servono monitoraggio, backup, patch e un piano di scalabilità.

Serve il .NET SDK completo sul VPS?

Di solito no. Installa il runtime ASP.NET Core quando pubblichi dalla tua workstation o CI. Installa l’SDK solo se il server deve costruire o pubblicare intenzionalmente l’app.

Kestrel dovrebbe essere esposto direttamente su internet?

No. Associa Kestrel a localhost ed espone Nginx sulle porte 80 e 443. Nginx gestisce TLS, reindirizzamenti, header proxy e l’URL pubblico.

Quali sono i rischi maggiori di un hosting Blazor VPS economico?

I rischi comuni sono pacchetti non aggiornati, certificati scaduti, scarsa igiene SSH, backup mancanti, pressione sul disco, log rumorosi e nessuno che nota riavvii continui del servizio.

L’hosting VPS migliora la SEO di Blazor?

Solo se la configurazione migliora le basi: URL HTTPS stabili, risposte rapide, metadati puliti, JSON-LD coerente, uptime e reindirizzamenti prevedibili. L’hosting da solo non è una scorciatoia SEO.

Quando dovrei usare GhostlyHosting invece di fare tutto manualmente?

Usa la configurazione manuale per imparare o verificare lo stack. Usa GhostlyHosting quando vuoi un flusso di lavoro ripetibile con Ubuntu, Nginx, SSL, GitHub e gestione servizi dopo aver capito i dettagli.